Funnels show where users drop off in your product flow. Without them, you're guessing whether your signup→activation→payment sequence is broken at the second step or the third. In Amplitude, funnels are built from the events you're already tracking—you just need to wire them together the right way.
Instrument Your Funnel Events
Funnels are chains of events. Before you build a funnel in Amplitude, each step of your user journey needs to be tracked as its own event.
Identify Your Funnel Steps
Define what each step represents. A typical flow is: signup → email verified → subscription activated → first report generated. Be specific with event names; user_signed_up is clearer than signup. Write these down—you'll use them to build the funnel in Amplitude.
Track Each Step with the SDK
Call amplitude.track() for every step in your funnel. Pass a descriptive event name and optional properties that help you segment later (signup method, plan type, etc.). Make sure your user ID is set so Amplitude can chain events to the same user.
import * as amplitude from '@amplitude/analytics-browser';
amplitude.init('API_KEY', { userId: user.id });
// Track funnel steps
amplitude.track('user_signed_up', { method: 'email' });
amplitude.track('email_verified', { timestamp: Date.now() });
amplitude.track('subscription_activated', { plan: 'pro', price: 99 });
amplitude.track('first_report_generated', { template: 'revenue' });Verify Events Are Being Received
Go to Chart in Amplitude and select one of your events. Look for recent activity in the Event Details pane. If you don't see data, check that the SDK is initialized, your API key is correct, and user IDs are being set before tracking calls.
Build Your Funnel in Amplitude
Once events are flowing into Amplitude, link them together to form a funnel sequence.
Navigate to Funnels
Click Funnels in the left sidebar. Click + Create to start a new funnel. You'll see the funnel builder where you can add steps.
Add Funnel Steps in Sequence
Click Add a step and search for your first event (e.g., user_signed_up). Add your second step (email_verified), then third (subscription_activated), and so on. The order matters—Amplitude only counts users who complete step 1, then step 2, then step 3. Adjust the conversion window (default: 30 days) to match your expected user flow timing.
// Funnel steps are evaluated in sequence within a conversion window
// Example funnel with 30-day conversion window:
// Step 1: user_signed_up
// Step 2: email_verified (users must verify within 30 days of signup)
// Step 3: subscription_activated (must activate within 30 days of first event)
// Step 4: first_report_generated
// Amplitude calculates conversion rates at each step:
// 1000 signups → 750 verified (75%) → 600 activated (80%) → 480 report generated (80%)
// Total: 48% from signup to reportAdd Filters to Target Specific Users
Click Add filter to restrict the funnel to specific cohorts (new users only, specific regions, etc.). For example, filter by is first_touch to isolate new user onboarding, or country is US to analyze a specific market separately.
Read and Act on Funnel Results
Once your funnel runs, Amplitude shows conversion rates at each step and identifies where users are dropping off.
Analyze Step-by-Step Conversion Rates
The funnel table shows Count (users who reached that step) and Conversion Rate (percentage of users from the prior step). A 75% conversion from signup to email verified is strong. A 40% drop from verified to activated suggests a pricing, payment, or value communication problem.
Break Down by User Properties
Click Breakdowns and select a dimension like $os (iOS vs Android) or a custom property (trial vs paid user). This splits the funnel to show separate conversion rates. You'll spot whether drop-off is platform-specific or tied to user type.
// Set user properties to enable segmentation in Amplitude
amplitude.setUserProperties({
platform: 'web',
signup_source: 'organic',
account_type: 'trial'
});
// In Amplitude UI, use Breakdowns to compare funnels by these properties
// This reveals if conversion rates differ by platform or user typeExport Results for Tracking Over Time
Click Export to download funnel results as CSV. Track this weekly or monthly to spot trends. Did a deployment cause a drop? Did your email redesign fix the verification rate? Export data makes it easy to correlate product changes with funnel performance.
Common Pitfalls
- Tracking event name variations ("signup", "SignUp", "user_signup") as separate events, which fragments your funnel across multiple disconnected flows. Pick one naming convention and enforce it across your codebase.
- Including too many funnel steps (7+), which masks where the real drop-off is happening and makes optimization unclear. Stick to your critical path and create separate funnels for secondary flows.
- Ignoring time-based behavior. A user who verifies 30 days after signup isn't the same as one who does it same-day. Adjust conversion window and use cohort start dates to match your actual onboarding timeline.
- Mixing new and returning users in the same funnel, which dilutes your signal. Use is first_touch or a signup date filter to isolate new user funnels from power-user behavior.
Wrapping Up
You now have visibility into where users drop off in your core flow. The next step is to act—test a faster email verification, simplify checkout, or surface your value proposition earlier in onboarding. If you want to track this automatically across tools and benchmark against industry standards, Product Analyst can help.