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
| Event | When to fire | Why |
|---|---|---|
identify | On every login / page-load-after-auth | Stitches anonymous sessions to the user |
signup | Right after user creates their account | TRIAL stage entry |
pricing_viewed | On pricing page load | High-intent filter |
trial_started | When they start a trial | Redundant with Stripe but useful for non-Stripe flows |
activation | When they do "the one thing" that predicts retention | Churn 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_startandform_submitare 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: