6 min read

How to Track Funnel Analysis in Amplitude

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.

javascript
import * as amplitude from '@amplitude/analytics-browser';

amplitude.init('YOUR_API_KEY', '[email protected]', {
  defaultTracking: true // auto-track page views and sessions
});
Initialize Amplitude SDK with API key and user identifier

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.

javascript
amplitude.track('signup_initiated', {
  source: 'landing_page',
  signup_method: 'email',
  utm_campaign: 'january_promo'
});
Track signup start with traffic and campaign properties

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.

javascript
// 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'
});
Track sequential funnel steps with consistent property names

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.

javascript
amplitude.identify(
  new amplitude.Identify()
    .set('company_size', 'small')
    .set('industry', 'saas')
    .set('country', 'us')
);
Set user properties once; use them to segment funnels in the dashboard
Tip: Keep event names short and descriptive (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.

javascript
// 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.
Events you tracked become available as funnel steps in the UI

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.

javascript
// 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.
Event properties become filterable and groupable automatically

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.

Tip: Save your funnel as a Dashboard widget to monitor it weekly. Watch out: Short funnel windows hide real conversions. If most users convert in 7 days, set the window to at least 14 days.

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.

javascript
// 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.
Track abandonment reasons to diagnose drop-off causes

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.

javascript
// 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.
Use Amplitude cohorts to re-engage drop-off users
Tip: Look at absolute drop-off count, not just %. Losing 10% of 10,000 users (1,000 people) is different from losing 10% of 100 users (10 people).

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.

Track these metrics automatically

Product Analyst connects to your stack and surfaces the insights that matter.

Try Product Analyst — Free