Custom Events and Funnels for Indie Developers: A Practical Setup Guide
Pageviews tell you people arrived. They don't tell you whether anyone clicked the signup button, finished onboarding, or hit the paywall and bounced. For that you need two things: custom events for actions, and funnels to string those actions into a journey.
This guide sets both up in about fifteen minutes, using Antlytics. The same principles apply to any tool that supports events and funnels.
Key idea: Track five to ten events that map to revenue or activation. Resist tracking everything — an indie project needs signal, not a data lake.
Step 1: Decide what's worth tracking
Before writing any code, list the actions that actually change your business:
- Signup started / completed — top of your activation funnel
- Checkout started / completed — revenue
- Key feature used first time — activation
- Upgrade clicked — expansion intent
- Docs or support opened from the app — friction signal
Five to ten events is plenty. Every event you add is a chart you'll feel obliged to look at.
Step 2: Fire events from your code
With the Antlytics snippet or SDK installed, tracking an event is one call:
// Vanilla JS (script tag installs expose a global)
Antlytics.track('signup_click', { plan: 'pro' })
// Next.js SDK — the <Analytics /> component exposes window.antlytics
window.antlytics?.track('checkout_complete', { plan: 'starter', billing: 'yearly' })
Properties are optional scalars — strings, numbers, booleans. Use them for context you'll want to segment by later (plan, variant, source). Keep personal information out; the whole point of privacy-first analytics is that there's nothing sensitive to leak.
A few practical conventions that pay off:
- Name events
noun_verborverb_nounand stick with it.signup_click,checkout_complete. Renaming an event later splits your history. - Fire completion events server-side of the redirect where possible — a
/welcomepage goal or an event on the confirmation screen is more reliable than a click handler that races against navigation. - Don't wrap track calls in try/catch everywhere. The SDK already swallows network errors; analytics should never break your app.
Step 3: Build the funnel
In Antlytics, funnels live in Settings → Funnels. A funnel is an ordered list of steps, and each step matches either a path or a custom event:
/pricing— viewed pricingsignup_click— clicked the CTA/welcome— completed signup
The Overview dashboard then shows how many sessions reached each step and where they dropped off. The first time you see a 90% drop between two steps you thought were adjacent, you'll know exactly what to work on this week.
Step 4: Read it weekly, not hourly
Indie traffic is spiky. A funnel with 40 sessions a day will swing wildly day to day; compare week over week instead. The useful questions:
- Which step loses the largest share of people?
- Did the change I shipped last week move that step?
- Are paid or referral visitors converting differently? (Check the UTM breakdown alongside the funnel.)
What this replaces
Most indie developers reach for a product-analytics suite at this point — and inherit cookie banners, session recording they'll never watch, and a per-event bill. If what you actually need is "did the thing I built get used, and where do people give up", events plus funnels on top of privacy-first pageview analytics covers it with one lightweight script and no consent overhead.
FAQ
What's the difference between a goal and a custom event?
A goal counts visits to a path (like /thank-you) and needs no code changes. A custom event is fired from your code and can carry properties — use it for actions that don't have their own URL.
Do custom events count towards my pageview allowance? No. Only pageviews are counted against your plan's monthly allowance.
Can funnel steps mix pages and events? Yes — a step can match a path or an event name, so journeys that span navigation and in-page actions work fine.
How many properties can an event carry? Up to 20 scalar properties and a 1 KB payload. Deliberately small.
Ready to try it? Custom events docs · Funnels docs · Start a free trial