You can't improve what you don't measure. Conversion rate is one of the most critical metrics for any product, but tracking it in Amplitude requires understanding how events chain together into a funnel. This guide shows you how to instrument your product for conversion tracking, build funnels in Amplitude, and use segmentation to find where users drop off.
Instrument Your Conversion Events
Conversion tracking starts with tracking the right events. You need to capture both the starting point and the completion point of your conversion flow.
Initialize the Amplitude SDK
Start by installing the Amplitude JavaScript SDK in your project and initializing it with your API key. This sets up event tracking across your product.
import * as amplitude from '@amplitude/analytics-browser';
amplitude.init('YOUR_API_KEY', {
userId: 'user_123',
sessionTimeout: 1800000
});
amplitude.track('page_viewed', { page: 'signup' });Track the Conversion Funnel Start Event
When a user begins the conversion journey (e.g., clicks a signup button), track an event like signup_initiated. Include relevant context such as traffic source or offer variant.
amplitude.track('signup_initiated', {
source: 'pricing_page',
plan_interest: 'pro',
utm_campaign: 'summer_sale',
traffic_type: 'organic'
});Track the Conversion Completion Event
Track the completion of your conversion goal (e.g., signup_completed, purchase_confirmed). This is the denominator for your conversion rate. Include conversion value or plan tier.
amplitude.track('signup_completed', {
plan: 'pro',
signup_duration_seconds: 45,
payment_method: 'credit_card',
annual_value: 9999
});Track Intermediate Steps
For longer conversion flows, track intermediate events like email_verified, payment_entered, or billing_confirmed. This pinpoints where users drop off and helps you diagnose friction.
amplitude.track('email_verification_sent');
amplitude.track('email_verified');
amplitude.track('payment_info_entered');
amplitude.track('billing_address_confirmed');snake_case consistently across your codebase to avoid duplicate events like signupCompleted vs. signup_completed.Build and Analyze Your Conversion Funnel
Once events flow into Amplitude, you can visualize the conversion path and measure dropout at each stage.
Create a Funnel in the Amplitude Console
Go to Analytics > Funnel and click Create Funnel. Add your funnel steps in order: signup_initiated → email_verified → signup_completed. Amplitude calculates the conversion rate and dropout percentage automatically between each step.
// Funnels are built in the Amplitude UI, but you can query results via API
const funnelResponse = await fetch(
'https://api.amplitude.com/api/2/funnels',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${AMPLITUDE_API_KEY}`
},
body: JSON.stringify({
user_sessions_with_events: [
{ event: 'signup_initiated' },
{ event: 'email_verified' },
{ event: 'signup_completed' }
],
interval: 1,
unit: 'day'
})
}
).then(r => r.json());Segment Your Funnel by User Properties
Add segments in the Segmentation panel to see how conversion differs across groups. For example, segment by source (organic vs. paid), plan_interest (pro vs. free), or device (mobile vs. desktop). This reveals whether certain channels or user types have higher drop-off.
amplitude.setUserProperties({
plan_tier: 'pro',
company_size: 'enterprise',
geography: 'US',
signup_date: new Date().toISOString()
});
amplitude.track('signup_completed', {
payment_successful: true
});Adjust the Conversion Time Window
By default, Amplitude measures funnel steps in sequence. Use Funnel Settings > Conversion Window to allow longer gaps between steps (7 days, 30 days). This matters if your flow takes time—e.g., a user signs up but doesn't verify email until two days later.
// Time window is set in the Amplitude UI, not in code
// But understand its impact:
// - 24-hour window: Only counts completions within 1 day (strict, catches friction)
// - 7-day window: Counts completions within a week (realistic for onboarding)
// - 30-day window: Counts completions within a month (loose, inflates rate)
// Choose based on your product's actual conversion cycleMonitor Conversion Rate Over Time and Diagnose Drops
Conversion rate changes with product updates and campaigns. Set up monitoring to catch regressions early.
Track Conversion Rate Trends
Set your funnel to group by day or week to see how conversion changes over time. Export the data or use the API to populate a dashboard. Watch for sudden drops—they signal regressions or bugs.
// Query conversion trend via API
const trend = await fetch(
'https://api.amplitude.com/api/2/funnels',
{
method: 'POST',
headers: { 'Authorization': `Bearer ${AMPLITUDE_API_KEY}` },
body: JSON.stringify({
user_sessions_with_events: [
{ event: 'signup_initiated' },
{ event: 'signup_completed' }
],
interval: 7,
unit: 'day',
group_by_property: 'source'
})
}
).then(r => r.json());
const conversionRatePercent = (trend.data.events[1] / trend.data.events[0] * 100).toFixed(1);
console.log(`Weekly conversion: ${conversionRatePercent}%`);Identify Where Users Drop Off Using Cohorts
If you see a conversion dip, create a Cohort of users who started the funnel but didn't complete it. Analyze their event sequences and properties. Did they hit an error? Bounce from a specific page? Get stuck on email verification?
// Track errors and friction points
amplitude.track('signup_error', {
error_code: 'VERIFICATION_EMAIL_FAILED',
step: 'email_verification'
});
amplitude.track('payment_declined', {
decline_reason: 'card_expired',
payment_processor: 'stripe',
step: 'payment_processing'
});
amplitude.track('form_abandoned', {
form_name: 'signup',
fields_completed: 3,
fields_total: 7
});Common Pitfalls
- Using inconsistent event names—
signup_completedandsignup_completeare treated as different events, breaking your funnel continuity and inflating your event count. - Forgetting intermediate steps—if you only track start and end, you miss where the majority of users actually drop off, making optimization impossible.
- Setting the conversion window too short—if your product's cycle is 7 days but you use a 24-hour window, your reported conversion rate will be artificially low and misleading.
- Not segmenting by source—organic and paid traffic often have very different conversion rates; reporting a single number masks poor performance in one channel.
Wrapping Up
Tracking conversion rate in Amplitude requires instrumenting the full funnel, segmenting by user properties, and monitoring trends over time. The combination of event tracking, funnel analysis, and error logging gives you the data to identify and fix friction points. If you want to track this automatically across tools, Product Analyst can help.