Back to BlogStrategy

Funnel Experiments: Optimizing Every Step of Your Conversion Path

5 min read

The Problem with Isolated Experiments

Most teams optimize one page at a time. They test headlines on the landing page, then separately test the signup form, then the onboarding flow, then the pricing page. Each experiment runs in isolation.

The issue? Conversion funnels are systems. Optimizing one step can change the behavior at every subsequent step. A more aggressive landing page headline might increase signups but decrease activation because it sets the wrong expectations. A simplified onboarding flow might reduce friction but attract less qualified users who never purchase.

Funnel experiments solve this by linking experiments across steps and measuring the cumulative impact through the entire path.

See the Difference

Toggle between the unoptimized and optimized funnels below. Notice how improvements at each step compound: a modest 5-6% improvement per step creates dramatic cumulative lift.

Funnel Optimizer

Without optimizationWith Bandit

Landing Page

100.0%

Sign Up

Headline Copy Test

12.0%
-88%

Activation

Onboarding Flow Test

5.4%
-55%

Purchase

Pricing Page Test

0.4%
-92%
Baseline: 0.43%Optimized: 1.46%
Toggle to see lift

The compounding effect is the key insight. A 50% relative improvement at each step doesn't produce a 50% improvement end-to-end. It can produce a 200%+ improvement because the gains multiply.

How Funnel Experiments Work

Step 1: Map Your Funnel

Identify the key conversion steps. A typical SaaS funnel might look like:

  1. Landing Page → visitor arrives
  2. Signup → visitor creates an account
  3. Activation → user completes onboarding
  4. Purchase → user converts to paid

Each step has a conversion rate and represents an optimization opportunity.

Step 2: Create Linked Experiments

In Bandit, you create a funnel that links experiments across steps. Each step has its own experiment with its own variants, but they share a user identity so you can track users through the entire path.

Funnel: "Signup to Purchase"
├── Step 1: Landing Page Headline (3 variants)
├── Step 2: Signup Form Layout (2 variants)
├── Step 3: Onboarding Flow (3 variants)
└── Step 4: Pricing Page Design (2 variants)

Step 3: Track Cross-Step Conversions

The critical difference from isolated experiments: conversions at step 4 feed back to the algorithms at steps 1-3. This means:

  • A headline variant that increases signups but decreases eventual purchases gets penalized
  • An onboarding flow that slightly reduces activation but dramatically increases purchase rate gets rewarded
  • The system optimizes for end-to-end conversion, not individual step metrics

Step 4: Let the Algorithms Coordinate

Each step runs its own bandit algorithm, but the reward signal comes from downstream conversions. A Thompson Sampling agent at step 1 receives a "success" signal when the user eventually purchases, not just when they sign up.

This creates a coordinated optimization across the entire funnel.

Landing Page

3 variants, Thompson Sampling

Signup

2 variants

Activation

3 variants

Purchase

2 variants, reward source

How funnel experiments coordinate: each step runs its own bandit, but reward signals propagate upstream from the final conversion event

The Compounding Math

Small improvements at each step multiply:

ScenarioStep 1Step 2Step 3Step 4End-to-End
Baseline12%45%30%8%0.13%
Each step +20% relative14.4%54%36%9.6%0.27%
Each step +50% relative18%67.5%45%12%0.66%

A 20% relative improvement at each step produces a 107% improvement end-to-end. A 50% improvement per step yields a 407% improvement. This is why funnel optimization is so powerful, and why it's worth the added complexity.

Baseline end-to-end0.13%
+20% relative per step0.27% (+107%)
+50% relative per step0.66% (+407%)
Compounding conversion gains: a 20% improvement at each of 4 funnel steps yields a 107% end-to-end improvement, not 20%

Avoiding Common Pitfalls

Pitfall 1: Optimizing Steps in Isolation

The number one mistake. If step 1 optimizes for maximum signups, it might attract low-intent users who never purchase. Always optimize for the downstream metric that matters most.

Pitfall 2: Ignoring Attribution Lag

Users don't move through your funnel instantly. Someone might sign up today and purchase next week. Make sure your attribution window is long enough to capture the full journey. Bandit's assignment-based tracking handles this automatically: the assignmentId ties events across sessions.

Pitfall 3: Too Many Variants Per Step

With 4 steps and 3 variants each, you have 81 possible paths through the funnel. The combinatorial explosion makes it harder for algorithms to converge. Keep variants to 2-3 per step for faster learning.

Pitfall 4: Not Accounting for Selection Bias

If step 1 changes who reaches step 2, the populations at step 2 are different across variants. Bandit algorithms handle this naturally because they learn from the actual observed outcomes for each user, but be aware of it when interpreting results.

Isolated optimization

Optimizing for signups alone can attract low-intent users who never purchase

Attribution lag

Users may sign up today and purchase next week, so attribution windows must span the full journey

Combinatorial explosion

4 steps × 3 variants = 81 possible paths, slowing algorithm convergence

Selection bias

Changes at step 1 alter who reaches step 2, skewing the population across variants

Common funnel experiment pitfalls: isolated optimization, attribution lag, combinatorial explosion, and selection bias between steps

Implementation Guide

Setting Up a Funnel in Bandit

  1. Create the funnel in the dashboard with named steps
  2. Create an experiment for each step and link it to the funnel
  3. Configure treatments for each experiment
  4. Choose algorithms: Thompson Sampling recommended for all steps

SDK Integration

// Step 1: Landing page
const headline = await bandit.getAssignment(
  'funnel-landing-headline',
  userId
)
displayHeadline(headline.config)

// Step 2: Signup form (when user reaches this page)
const signupForm = await bandit.getAssignment(
  'funnel-signup-layout',
  userId
)
renderSignupForm(signupForm.config)

// Track conversion at the final step
bandit.trackEvent({
  assignmentId: headline.assignmentId,
  eventType: 'CONVERSION'
})
bandit.trackEvent({
  assignmentId: signupForm.assignmentId,
  eventType: 'CONVERSION'
})

Note

Track the final conversion event against all upstream assignments. This is how the upstream algorithms learn which variants lead to end-to-end success.

Real-World Impact

Companies that implement funnel-wide optimization typically see:

  • 2-5x improvement in end-to-end conversion rates over 3-6 months
  • Faster learning because downstream feedback prevents wasted exploration on locally optimal but globally suboptimal variants
  • Better user experience because the entire path is optimized as a system, not a collection of independent pages

Getting Started

If you're new to funnel experiments, start simple:

  1. Pick your most important 2-step funnel (e.g., landing page → signup)
  2. Create one experiment per step with 2 variants each
  3. Configure the final step's conversion as the reward for both experiments
  4. Let it run for 2-4 weeks
  5. Expand to more steps as you gain confidence

The key insight is to think in systems. Individual page optimizations are fine, but the real leverage comes from optimizing the connections between pages and measuring what matters: the end result.

Ready to try algorithmic testing?

Stop wasting traffic on losing variants. Bandit's multi-armed bandit algorithms automatically shift traffic to your best-performing treatments in real time.

Get Started Free
All articles
Funnel Experiments: Optimizing Every Step of Your Conversion Path — Bandit