Funnels show where users drop off in your critical flows. If you're not tracking the right events, you can't diagnose why people abandon signup or checkout. Here's how to instrument a funnel in Amplitude and spot the leaks.
Set Up Event Tracking for Your Funnel
A funnel is just a sequence of events. You need to track each step users should complete—signup, email verification, plan selection, payment.
Install and initialize the Amplitude SDK
Install @amplitude/analytics-browser and initialize with your API key and a stable user ID. Use the same user ID when they return so Amplitude can track them across sessions.
import * as amplitude from '@amplitude/analytics-browser';
amplitude.init('YOUR_API_KEY', '[email protected]', {
defaultTracking: true // auto-track page views and sessions
});Track the first funnel step
Fire your first event when the user enters the flow (e.g., clicks Sign Up). Include properties like source and signup_method so you can segment later.
amplitude.track('signup_initiated', {
source: 'landing_page',
signup_method: 'email',
utm_campaign: 'january_promo'
});Track each step in the user's journey
After each significant action (form submit, email verify, plan selection), call amplitude.track() with the same property names across steps. This consistency matters when you build the funnel in Amplitude.
// Step 2: Email verified
amplitude.track('email_verified', {
signup_method: 'email',
verification_time_seconds: 180
});
// Step 3: Plan selected
amplitude.track('plan_selected', {
signup_method: 'email',
plan_tier: 'professional'
});
// Step 4: Payment submitted
amplitude.track('payment_submitted', {
signup_method: 'email',
plan_tier: 'professional',
payment_method: 'card'
});Set user properties for segmentation
Before or after tracking events, use amplitude.identify() to attach user-level properties. These let you segment your funnel (e.g., by company size or region) directly in Amplitude.
amplitude.identify(
new amplitude.Identify()
.set('company_size', 'small')
.set('industry', 'saas')
.set('country', 'us')
);email_verified, not user_completed_email_verification_step). Watch out: Event names are case-sensitive. Use snake_case consistently.Build Your Funnel in Amplitude's Dashboard
Once events flow in, you'll create a funnel to visualize drop-off. Amplitude makes this straightforward.
Open the Funnel Chart in Analytics
In Amplitude, navigate to Analytics and select Funnel Chart. Click Select events and add your first step event (e.g., signup_initiated) to define the funnel start.
Add funnel steps in sequence
Click the + button to add the second step (e.g., email_verified), then the third (e.g., plan_selected), and so on. Amplitude calculates the conversion % between each consecutive step. Order matters—arrange steps in the order users complete them.
// No code needed here—your tracked events appear in Amplitude's event picker.
// In the UI, you'll select:
// Step 1: signup_initiated
// Step 2: email_verified
// Step 3: plan_selected
// Step 4: payment_submitted
// Amplitude shows % completion for each step and drop-off counts.Filter and group by properties
Add a filter to segment (e.g., source equals landing_page) or group by a property (e.g., country). This reveals whether drop-off is uniform or concentrated in segments. For example, mobile users might drop off at payment but desktop users don't.
// The properties you sent in amplitude.track() calls automatically
// become available as filters and group-by options in the dashboard.
// Example: if you tracked { country: 'us', plan_tier: 'professional' },
// the UI will show:
// Filter by country, group by plan_tier, etc.
// No additional code required.Adjust the funnel window if needed
By default, Amplitude uses a 24-hour funnel window (max time between steps). If users normally take 14 days to convert, increase it. Otherwise, Amplitude discards valid conversions outside the window.
Diagnose Why Users Drop Off
Seeing 50% drop from step 1 to step 2 is useful, but only if you know why. Use Amplitude to dig deeper.
Inspect drop-off by segment
If you grouped by country, you'll see conversion rates per country. If conversion is 90% in US but 40% in India, there's a regional issue (e.g., payment provider unavailable or slower email delivery).
Track abandonment events with reasons
Don't just track success. If a user abandons email verification, track that too with a reason. This turns a blank drop-off into actionable data.
// On the email verification page, if user leaves without verifying:
amplitude.track('email_verification_abandoned', {
reason: 'user_closed_tab',
email_sent_at: Date.now(),
time_on_page: 45 // seconds
});
// Later, query in Amplitude: how many abandoned vs. completed per day?
// Create a dashboard chart counting events by type to see the split.Create a cohort of drop-off users
In Amplitude, click a funnel step to see users who dropped off there. Use Create Cohort to export those users. Then, send them a follow-up email or check their session replays (via third-party tools) to diagnose the issue.
// After creating a cohort in Amplitude (via UI), you can sync it
// to send events back to your app or to an email platform.
// Example: users who dropped at email_verified get a simpler verification flow.
// This is configured in Amplitude's **Integrations** or via API,
// not directly in event tracking code.Common Pitfalls
- Not setting user ID consistently—if a user signs up as anonymous and later identifies as '[email protected]', Amplitude treats them as two separate people and your funnel breaks in half
- Using different event names across platforms (e.g., 'signup_complete' on web, 'signup_finished' on iOS)—Amplitude sees these as different steps and your funnel fragments
- Setting funnel window too short—if your typical conversion cycle is 14 days but you set a 7-day window, Amplitude discards legitimate conversions and shows false drop-off
- Tracking only success events—if you only track 'payment_submitted' but not 'payment_failed' or 'payment_error', you can't diagnose why the funnel leaks
Wrapping Up
Tracking funnels in Amplitude comes down to consistent event naming, including the right properties, and then using the dashboard to segment and diagnose drop-off. Now that you're capturing each step with context, you can identify exactly where users abandon the flow. If you want to track funnel events automatically across all your tools without manual instrumentation, Product Analyst can help.