Skip to main content

Extensions

Your main funnel turns strangers into paying customers. Extensions turn paying customers into more-paying customers.

When you enable extensions on a funnel, you pick an anchor product. Typically your entry-level paid plan ("Hobby, $9/mo"). FunnelFizz then tracks the cohort of customers who bought the anchor and measures how many upgrade.

The three extension stages

StagePositionWhat it measures
Ext Consideration4Anchor customers who are active in product (fired a pageview or event in the window)
Ext Trial5Anchor customers with a Stripe sub status = "trialing" priced higher than anchor
Ext Customer6Anchor customers with an active sub priced higher than anchor
AWARENESS(0) → CONSIDERATION(1) → TRIAL(2) → CUSTOMER(3) ══▶ Ext Cons(4) ══▶ Ext Trial(5) ══▶ Ext Customer(6)

Positions 0–3 are the main funnel; 4–6 are the extension pipeline. The position number drives layout on the canvas, MCP add_extension_stage calls, and split filter routing. Double-line edges on the canvas distinguish extension stages from main funnel.

Even without extensions, the CUSTOMER stage splits paying customers three ways:

BucketDefinition
RetainedStill subscribed at the anchor product
UpgradedSubscribed to a higher-priced product (but not anchor)
ChurnedNo active/trialing subscription anywhere

This replaces the naive "canceled = churned" model, upgrades aren't losses.

Conversion rates explained

ConversionWhat it tells you
CUSTOMER → Ext ConsiderationActivation/retention, what % of customers are still actually using the product?
Ext Consideration → Ext TrialUpgrade prompts, are your in-product upsells working?
Ext Trial → Ext CustomerHigher-tier value prop, does the trial deliver enough to make them pay more?

A leak at any stage points to a different lever.

Enabling

  1. Open the funnel → Settings → Extensions → Enable.
  2. Pick the anchor product from your Stripe products dropdown.
  3. Save. Three new stages appear right of CUSTOMER.

Zero on all three is itself a useful signal: "our upgrade rate is zero, that's where the growth lever is."

Splits work on extensions too

Common cuts:

  • By channel. Do Reddit-sourced customers upgrade at a different rate than email-sourced?
  • By cohort month. Are March signups upgrading faster than April?
  • By anchor product. Multiple entry tiers; which one yields the most upgrades?

Extensions inherit strict cohort propagation from splitting. An extension on a "Hobby trial → US" sub-track contains only profiles who actually crossed Hobby trial and US and became Hobby paid customers — the upstream split filters carry through. If a Pro sub later cancels or downgrades back to Hobby, they leave the Ext Customer card immediately; if they re-upgrade later, a fresh cohort entry opens.

When you enable extensions on a funnel, FunnelFizz replays your Stripe history so existing customers who already upgraded land on Ext Trial / Ext Customer at their actual historical timestamps — you don't have to wait for the next webhook. Same when you add a split inside an extension: the new tracks backfill from history. See Stripe → backfill for what can and can't be resolved.

When extensions don't fit

  • Single-tier products. Nothing to upgrade to; this section will always be zero.
  • Usage-based pricing without tiers. Everyone's on the same plan, expansion is per-seat or per-event. Extensions assume tier jumps. Use the main funnel + Stripe usage metrics instead.
  • One-time purchases / e-commerce. Extensions assume recurring subscriptions.

Pairs nicely with churn-recovery automations

  1. Enable extensions with your entry tier as anchor.
  2. Set up a churn-recovery automation targeting the Churned bucket with a discounted comeback offer.
  3. Returns lift Retained; later upgrades lift Ext Customer.

Compound observability: did we save churn? Did those saves eventually upgrade?

Roadmap

  • Multi-anchor support. Track "Hobby → Pro" and "Pro → Enterprise" as separate pipelines.
  • Expansion revenue attribution. Pull seat expansions / usage overages from Stripe so non-tier expansion lands here too.

Next: Conversion → · Email →