6 min read

How to Calculate Conversion Rate in Amplitude

Conversion rate matters, but only if you're measuring it right. In Amplitude, this means tracking at least two events consistently: the starting point (like visiting your pricing page) and the completion (like clicking purchase). We'll walk through setting up these events and running the analysis without touching a spreadsheet.

Set Up Consistent Event Tracking

Conversion rate lives or dies on event tracking quality. You need a clear entry point and a completion event, both firing from the same user.

Track your funnel entry event

The first step in any conversion funnel is the entry point—a page view, button click, or feature initiation. Use amplitude.track() to capture it. Include any context that helps you segment later: UTM source, traffic channel, A/B test variant.

javascript
amplitude.track('Pricing Page Viewed', {
  utm_source: 'organic',
  utm_medium: 'search',
  pricing_variant: 'control'
});
Track the funnel entry with relevant context properties

Track your conversion completion event

When the user completes the target action—a purchase, signup, or feature upgrade—send a distinct event. Use the same amplitude.track() method with a clear, descriptive event name.

javascript
amplitude.track('Subscription Purchased', {
  plan_type: 'pro',
  plan_value: 99,
  subscription_period: 'yearly'
});
Track the successful conversion with relevant metrics

Set user identity before tracking

For Amplitude to link events into a funnel, it must recognize the same user across all steps. Call amplitude.setUserId() early—ideally before tracking any events. Without consistent user identity, Amplitude treats each event as a separate user and your conversion rate becomes meaningless.

javascript
amplitude.setUserId('user_12345');
amplitude.track('Pricing Page Viewed');

// Later, after signup:
amplitude.setUserId('user_12345'); // Same user
amplitude.track('Subscription Purchased');
Ensure user identity is set before tracking to link events correctly
Watch out: If you forget setUserId(), Amplitude treats every event as a new user. Your funnel will show hundreds of entry events but zero conversions.

Measure Conversion with Funnel Analysis

Amplitude's Funnel feature does the conversion calculation for you. You define the steps, and it shows the rate between each one.

Create your funnel in the dashboard

Open Amplitude and go to Analyze > Funnel. Add your events in order: first the entry event, then the conversion event. Amplitude instantly calculates what percentage of users who started completed the step.

javascript
// Funnels are built in the UI, not in code.
// But verify your events are firing with setLogEventHandler:
amplitude.setLogEventHandler((event) => {
  console.log('Event fired:', event.event_type, event.event_properties);
});

// Then test your funnel flow:
amplitude.track('Pricing Page Viewed');
// User clicks button...
amplitude.track('Subscription Purchased');
Debug event firing to ensure your funnel will work correctly

Segment your funnel by user properties

Conversion rate is never one-size-fits-all. Use Add Filter to segment by user properties: trial vs. paid, traffic source, country, or custom cohorts. This reveals which users actually convert and which are just browsers.

javascript
// Track segmentation properties at signup
amplitude.setUserProperties({
  trial_user: true,
  signup_source: 'organic',
  company_size: 'startup',
  region: 'US'
});

// In the funnel UI, filter by these properties to compare conversion rates

View conversion trends over time

Set your date range in the funnel view. Amplitude shows whether conversion is trending up or down. Group by properties to see which cohorts convert best—this often reveals your highest-value user segments.

javascript
// For A/B testing, track the variant
amplitude.track('Pricing Page Viewed', {
  variant: 'test_group_a',
  test_name: 'checkout_flow'
});

// The funnel will show conversion rate per variant automatically
Tip: If your funnel shows 0% conversion, check the Event Debugger tab. Verify both events are actually firing before you panic.

Export and Programmatically Access Conversion Data

If you need to feed conversion data into a data warehouse or custom dashboard, Amplitude's REST API lets you pull funnel data programmatically.

Query funnel data via the Analytics API

Use Amplitude's funnels endpoint to fetch conversion metrics. You'll need your API key and secret key. Make an authenticated POST request specifying your event sequence and date range.

javascript
const apiKey = 'YOUR_API_KEY';
const secretKey = 'YOUR_SECRET_KEY';
const auth = Buffer.from(`${apiKey}:${secretKey}`).toString('base64');

const funnelRequest = {
  event: [
    { event_type: 'Pricing Page Viewed' },
    { event_type: 'Subscription Purchased' }
  ],
  start: '20260301',
  end: '20260331'
};

fetch('https://analytics.amplitude.com/api/2/funnels', {
  method: 'POST',
  headers: {
    'Authorization': `Basic ${auth}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(funnelRequest)
})
.then(res => res.json())
.then(data => console.log('Conversion:', data.data));
Fetch funnel conversion data from the Amplitude API

Calculate conversion rate from raw events

Alternatively, export your raw events and compute conversion rate in your warehouse. Count distinct users in the first event, count how many of those same users appear in the second event, then divide to get your percentage.

javascript
// Export events and calculate in your warehouse:
// SELECT
//   COUNT(DISTINCT user_id) as entry_users,
//   COUNT(DISTINCT CASE WHEN event_type = 'Subscription Purchased' THEN user_id END) as converted,
//   ROUND(100.0 * COUNT(DISTINCT CASE WHEN event_type = 'Subscription Purchased' THEN user_id END) / 
//         COUNT(DISTINCT user_id), 2) as conversion_rate_pct
// FROM events
// WHERE (event_type = 'Pricing Page Viewed' OR event_type = 'Subscription Purchased')
//   AND event_time BETWEEN '2026-03-01' AND '2026-03-31';
Compute conversion rate manually from exported raw events
Tip: When calculating manually, use a time window that makes sense. A user who enters the funnel on day 1 but converts on day 7 should still count as a conversion.

Common Pitfalls

  • Skipping setUserId() or calling it inconsistently. Without a stable user ID, Amplitude can't link events, so your funnel shows thousands of starts but almost zero conversions.
  • Naming events inconsistently across platforms (e.g., 'Sign Up' on web, 'signup' on mobile). This splits your data and tanks your conversion numbers.
  • Forgetting to track both events. If you only track the entry event, your funnel stops there. If you only track conversion, you have no denominator.
  • Ignoring time lag. Users rarely convert immediately. If your analysis window is too short, you'll miss late conversions and underestimate your real conversion rate.

Wrapping Up

You now have a working method to measure conversion rates in Amplitude: set up consistent event tracking with amplitude.track(), use the Funnel feature to segment by cohorts, and export programmatically when you need custom analysis. This gives you visibility into where users drop off and which segments are worth investing in. If you want to track this automatically across tools, Product Analyst can help.

Track these metrics automatically

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

Try Product Analyst — Free