Splitting & extensions
A single funnel shows you the overall picture: total traffic in, total customers out. That's usually not enough. What you really want to know is "which slice of traffic is actually converting?" — which is what splits answer.
After the main funnel, you often want to track what happens next — do customers upgrade? That's what extensions answer.
Splits
A split inserts a filter node between two stages. Everything downstream of the split only shows traffic matching that filter.
Eight split conditions
| Condition | Filters by | Example |
|---|---|---|
| Traffic source | Referrer domain | "only traffic from reddit.com" |
| UTM parameter | utm_source, utm_medium, utm_campaign, utm_content, utm_term | "only utm_campaign=summer-launch" |
| Channel | Auto-categorized channel | "only organic search" |
| Device type | Desktop, mobile, tablet | "only mobile" |
| Country | ISO country code | "only US and Canada" |
| Custom event | A goal you define with data-fn-goal or funnelfizz('event', ...) | "only users who clicked pricing" |
| A/B variant | The ?ab= URL parameter | "only ?ab=frog" |
| Stripe product | Specific Stripe product ID (TRIAL/CUSTOMER only) | "only Pro tier subscribers" |
All conditions combine with AND — a visitor must match every condition in the chain to appear in that split branch.
Auto-categorized channels
The Channel condition uses a server-side categorizer that bucketizes your traffic from referrer + UTM combinations. Buckets:
direct— no referrer, no UTMorganic_search— Google, Bing, DuckDuckGo, etc.social— X, LinkedIn, Reddit, TikTok, Instagram, YouTube, Facebookpaid—utm_medium=cpc/paid/adsor recognized ad networksemail—utm_medium=emailor email-client referrersai_llm— chatgpt.com, claude.ai, perplexity.ai, gemini.google.com, copilot.microsoft.comreferral— everything else with a referrer
Visualizing a split
On the canvas, splits look like this:
┌─ [split: mobile] ─▶ CONSIDERATION (mobile) ─▶ TRIAL ─▶ CUSTOMER
│
AWARENESS ─▶ CONSIDERATION
│
└─ [split: desktop] ─▶ CONSIDERATION (desktop) ─▶ TRIAL ─▶ CUSTOMER
Each branch is independent — you can chain further splits down a branch, connect different providers, even send different emails to each cohort.
Nested splits
You can split a split. "Mobile visitors from the US who came via YouTube" is a three-level nested split that will compute correctly. The canvas auto-lays-out nested branches so they don't overlap.
There's no fixed depth limit, but in practice three levels is about as deep as is readable.
Adding a split in the UI
- Click the + button between any two stages on the canvas.
- Pick a split condition.
- Fill in the value (e.g., country = "US", UTM source = "reddit").
- Name the branch (e.g., "US mobile traffic").
- Save.
That's it. The branch fills in automatically using the same data sources as the parent funnel.
→ Full details and per-condition configuration: Features → Splitting.
Extensions
Extensions are an optional second-stage pipeline that sits after CUSTOMER, tracking what happens to paying customers — specifically, do they upgrade?
The analogy: your main funnel is "get from stranger to paying customer." Your extension is "get from paying customer to higher-paying customer."
Extension stages
Extensions mirror the main funnel's structure (minus Awareness, because by definition these are people you already have):
- Extension Consideration — your paying customers who are active on your product in the reporting window (fired a pageview or an event).
- Extension Trial — Extension-Consideration users who started a trial at a higher-priced tier.
- Extension Customer — users paying at a higher tier than their anchor product.
The anchor product
When you enable extensions for a funnel, you pick an anchor product — typically your entry-level paid plan (e.g., "Hobby — $9/mo"). The extension then tracks the cohort of customers who bought the anchor, and measures how many of them end up paying for a higher tier.
If a customer:
- Still has the anchor subscription → counted in Retained.
- Has no anchor but a higher-tier sub → counted in Upgraded (and shows up in Extension).
- Has nothing → counted in Churned.
Canvas layout
On the canvas, extensions render to the right of the CUSTOMER stage with a double-line edge (visually distinct from main-funnel edges). They inherit the tint color of the main funnel.
... ─▶ CUSTOMER ═══▶ Ext CONSIDERATION ═══▶ Ext TRIAL ═══▶ Ext CUSTOMER
When to use extensions
- Freemium products — you want to know what % of free users convert to paid. Set the free tier as the anchor.
- SaaS with multiple tiers — how often do Hobby customers upgrade to Pro? Set Hobby as the anchor.
- Lifecycle marketing — use extension stages as triggers for upgrade automations.
When NOT to use extensions
- Single-tier products (Stripe has one price → nothing to upgrade to).
- Products where upsell isn't the growth lever (e.g., one-time purchases, usage-based billing where everyone's on the same plan and just pays more).
Next: Email → • Automations → • Conversion → • Full funnel tracking →