Skip to main content

Tracking & custom events setup

~15 minutes · Intermediate

The basic pageview tracking is free with the install. Custom events are where the interesting funnel analysis happens — "who clicked pricing," "who started onboarding," "who hit the activation moment."

Who this is for

  • You've installed tracking.
  • You want to instrument your app beyond pageviews.

The events to fire (outline)

Universal events every SaaS should fire

EventWhen to fireWhy
identifyOn every login / page-load-after-authStitches anonymous sessions to the user
signupRight after user creates their accountTRIAL stage entry
pricing_viewedOn pricing page loadHigh-intent filter
trial_startedWhen they start a trialRedundant with Stripe but useful for non-Stripe flows
activationWhen they do "the one thing" that predicts retentionChurn modeling

How to fire them

// After signup succeeds
funnelfizz('identify', { userId: 'user_123', email: 'sam@example.com' });
funnelfizz('event', 'signup', { plan: 'hobby', source: 'pricing_page' });

// On pricing page
funnelfizz('event', 'pricing_viewed');

// When they create their first widget (activation)
funnelfizz('event', 'activation', { widgetType: 'funnel' });

The activation metric

"Activation" is the one action that, in your data, correlates most strongly with retention. For most SaaS products it's something like:

  • Created their first 3 things (projects, forms, docs, whatever your unit is).
  • Invited 1+ teammates.
  • Connected their first data source / integration.

Find yours, fire the event, then split your funnel by people who activated vs. who didn't. The gap is huge.

What NOT to fire

  • Every click. Track intent events, not mouse telemetry.
  • Scroll percentages (beyond the automatic 25/50/75/90 milestones the tracking script already reports).
  • Every keystroke in forms. Use the auto form tracking — form_start and form_submit are fired automatically.

Using events in splits

Once you've fired an event for a visitor, FunnelFizz lets you split by it. "Only users who fired pricing_viewed" becomes a branch on the canvas.

See Features → Splitting (custom event).

Using events in automations

In a CONDITIONAL_SPLIT step, the condition can reference any event the profile has fired.

CONDITIONAL_SPLIT: event_count('activation') > 0
├── yes → skip "getting started" email
└── no → send "getting started" email

Related: