Skip to main content

The four stages

AWARENESS → CONSIDERATION → TRIAL → CUSTOMER

Four stages, fixed order, no renaming. Between each pair sits a conversion. Three conversion positions total (0, 1, 2). The model is opinionated by design: enough resolution to see where things break, small enough to remember.

Each stage holds:

After CUSTOMER you can optionally enable extensions for upsell tracking.

AWARENESS — eyeballs

How many people saw you exist. Not who clicked, impressions, reach.

Sources: social provider impressions (X, YouTube, LinkedIn, Instagram, TikTok, Reddit), brand mentions (PRO), Google Search Console impressions, Google Ads impressions, manual entries. Most funnels combine 2–3 sources here.

CONSIDERATION — visitors

Unique people who reached your site. Source: your tracking script, every distinct _fn_vid cookie seen in the window.

This is where the marketing site lives. Split by traffic source to find which channels drive real visits, A/B-test hero copy, watch bounce rates.

The AWARENESS → CONSIDERATION conversion is essentially click-through rate from the wild web into your site.

TRIAL — active users

Visitors who showed real intent, gave you their email, started a trial, signed up.

Default conversion method: Stripe trial subscription (status = "trialing"). Configurable as:

  • Email signup form submission.
  • Custom event (funnelfizz('event', 'signup') from your app).
  • Stripe trial.

This is the most under-measured stage, founders often only track Stripe trials and miss self-serve signups. Custom events close that gap.

CUSTOMER — paying customers

Default method: Stripe paid subscription (status = "active" or "past_due" within grace).

Unlike the other stages, CUSTOMER splits into a trichotomy:

BucketDefinition
RetainedStill active at your anchor product tier
UpgradedActive at a higher tier than anchor (more valuable, not lost)
ChurnedNo active subscription anywhere

The naive "canceled = churned" model can't tell upgrades from losses. This can.

The three conversion positions

PositionTransitionDefault method
0AWARENESS → CONSIDERATIONSite visit (tracking)
1CONSIDERATION → TRIALStripe trial
2TRIAL → CUSTOMERStripe paid

Each position is configurable per funnel, see Conversion. Mix and match: a non-Stripe SaaS might map position 1 to a custom signup event and position 2 to Stripe paid.

On the canvas

┌──────────┐ ● ┌───────────────┐ ● ┌───────┐ ● ┌──────────┐
│AWARENESS │──%──▶│ CONSIDERATION │──%──▶│ TRIAL │──%──▶│ CUSTOMER │
└──────────┘ └───────────────┘ └───────┘ └──────────┘
128k imps 11,245 visitors 892 signups 213 paying
8.8% CTR 7.9% conv 23.9% conv

Stages render as cards left to right. Conversion bubbles between them show the rate + raw count. Split nodes (diamonds) appear between stages when you filter; extension stages appear after CUSTOMER.


Next: Tracking → · Conversion → · Splitting →