Amplitude doesn't calculate conversion rate automatically—you need to set up the right events and use funnels or dashboards to see it. Most teams struggle because they're unsure which events to track or how to filter out noise. We'll walk through building a conversion rate visualization from scratch.
Set Up Your Conversion Events
Before you visualize conversion, you need events firing reliably from your app.
Track Entry and Conversion Events
Identify your funnel entry point (e.g., checkout_initiated, signup_started) and conversion event (e.g., purchase_completed, account_created). Instrument both events with the Amplitude JavaScript SDK. Include relevant properties like cart value, plan type, or traffic source—these make segmentation possible later.
import * as amplitude from '@amplitude/analytics-browser';
amplitude.init('YOUR_API_KEY');
// Track entry into the funnel
amplitude.track('checkout_initiated', {
cart_value: 129.99,
item_count: 3,
utm_source: 'paid_search'
});
// Track the conversion
amplitude.track('purchase_completed', {
revenue: 129.99,
plan_type: 'annual',
currency: 'usd'
});Add Properties for Segmentation
Include properties that let you slice conversion by device, plan, region, or traffic source. These are critical for answering "What's our mobile conversion rate?" or "How does annual plan conversion differ from monthly?". Use setUserProperties for fixed attributes and event properties for transaction-level detail.
// Set once per user session
amplitude.setUserProperties({
plan_tier: 'free',
company_size: 'SMB',
signup_date: new Date().toISOString()
});
// Include in every conversion event
amplitude.track('purchase_completed', {
device_type: navigator.userAgentData?.mobile ? 'mobile' : 'desktop',
traffic_source: 'organic',
referrer_domain: new URL(document.referrer).hostname
});Build a Funnel in Amplitude
Amplitude's Funnel analysis automatically calculates drop-off and conversion rates between event steps.
Create a Funnel Analysis
In your Amplitude project, navigate to Analysis > Funnel and click Create. Define your steps: entry event first, conversion event second, and any optional follow-up events. Amplitude counts unique users who fired each event (in order) and calculates conversion rate as: (users reaching final step / users entering funnel) × 100.
// In Amplitude UI > Analysis > Funnel > Create:
// Step 1: Select event = 'checkout_initiated'
// Step 2: Select event = 'purchase_completed'
// Time window: Single session (default) or custom
//
// Your SDK must fire both events consistently:
amplitude.track('checkout_initiated', { cart_value: 50 });
// ... user actions ...
amplitude.track('purchase_completed', { revenue: 50 });Filter and Segment the Funnel
Use Add Filter to focus on a specific cohort (e.g., new users, mobile-only). Use Segment by to compare conversion across groups (device type, plan, region). Amplitude displays side-by-side conversion rates so you can spot which segments convert better.
// Amplitude UI workflow:
// Filter: device_type = 'mobile'
// Segment by: plan_tier
//
// Results display:
// free: 32% conversion (24 of 75 users)
// pro: 58% conversion (29 of 50 users)
// enterprise: 85% conversion (17 of 20 users)
//
// Your events must include these properties:
amplitude.track('checkout_initiated', {
device_type: 'mobile',
plan_tier: 'free'
});Monitor Conversion Over Time
Set a date range (last 7 days, last 30 days, custom) and check the conversion rate trend. Use relative dates (e.g., "last 7 days") rather than fixed dates so the funnel auto-updates. Export the data if you need to share with stakeholders or log it to a dashboard.
// Amplitude Funnel outputs:
// Conversion rate: 70% (840 converted out of 1,200 entries)
// Median time to convert: 2.5 hours
// Drop-off by step: 12% drop Step 1→2, 18% drop Step 2→3
//
// Export data by clicking "Share" > "Export as CSV"
// The Amplitude REST API also exposes funnel data programmatically.
//
// No additional SDK code needed—the funnel runs on your tracked events.Create a Dashboard with SQL
For ongoing monitoring, build a dashboard with SQL queries that calculate conversion rate automatically.
Query Conversion Rate with SQL
Use Amplitude SQL to count unique users in each funnel step and calculate the rate. This gives you more control than the UI—you can filter out test accounts, use custom logic, or combine conversion metrics with other KPIs.
// Amplitude SQL: Calculate conversion rate for last 7 days
const sql = `
SELECT
COUNT(DISTINCT CASE WHEN event_type = 'checkout_initiated' THEN user_id END) as entries,
COUNT(DISTINCT CASE WHEN event_type = 'purchase_completed' THEN user_id END) as conversions,
ROUND(
100.0 * COUNT(DISTINCT CASE WHEN event_type = 'purchase_completed' THEN user_id END) /
NULLIF(COUNT(DISTINCT CASE WHEN event_type = 'checkout_initiated' THEN user_id END), 0),
2
) as conversion_rate_pct
FROM events
WHERE event_time >= DATE_TRUNC('day', NOW()) - INTERVAL '7 days'
AND event_type IN ('checkout_initiated', 'purchase_completed')
`;
// Paste into Amplitude > Analysis > SQL EditorBuild a Dashboard Chart
Create a Dashboard and add your SQL query as a chart. Choose Number to show the current conversion rate, or Line to show daily trend. Amplitude refreshes the query on a schedule (hourly, daily) so your team always sees the latest data without manual updates.
// Conversion rate trend (daily) for dashboard
const trendQuery = `
SELECT
DATE_TRUNC('day', event_time) as date,
ROUND(
100.0 * COUNT(DISTINCT CASE WHEN event_type = 'purchase_completed' THEN user_id END) /
NULLIF(COUNT(DISTINCT CASE WHEN event_type = 'checkout_initiated' THEN user_id END), 0),
2
) as conversion_rate_pct
FROM events
WHERE event_type IN ('checkout_initiated', 'purchase_completed')
GROUP BY DATE_TRUNC('day', event_time)
ORDER BY date DESC
LIMIT 30
`;Segment Conversion by User Properties
Add more queries to your dashboard that break down conversion by device, plan, or region. Create a separate chart for each segment. This reveals which user groups have the lowest conversion and where to focus optimization.
// Conversion rate by device type
const segmentedQuery = `
SELECT
event_properties -> 'device_type' as device_type,
COUNT(DISTINCT CASE WHEN event_type = 'purchase_completed' THEN user_id END) as conversions,
COUNT(DISTINCT CASE WHEN event_type = 'checkout_initiated' THEN user_id END) as entries,
ROUND(
100.0 * COUNT(DISTINCT CASE WHEN event_type = 'purchase_completed' THEN user_id END) /
NULLIF(COUNT(DISTINCT CASE WHEN event_type = 'checkout_initiated' THEN user_id END), 0),
2
) as conversion_rate_pct
FROM events
WHERE event_time >= NOW() - INTERVAL '7 days'
AND event_type IN ('checkout_initiated', 'purchase_completed')
GROUP BY event_properties -> 'device_type'
ORDER BY conversion_rate_pct DESC
`;Common Pitfalls
- Tracking entry and conversion events inconsistently. If one fires on 95% of conversions and the other on 80%, your conversion rate is wrong. Validate event instrumentation with test sessions.
- Mixing events across platforms without a common user ID. If web tracks 'john123' and mobile tracks '[email protected]', Amplitude treats them as different users and your funnel splits.
- Not filtering for test or bot traffic. Include checks in your SDK for test accounts and IP ranges so they don't pollute your conversion metrics.
- Changing event properties mid-campaign. Switching from 'plan' to 'plan_type' breaks historical segmentation. Use feature flags or a deprecation period to avoid data gaps.
Wrapping Up
Amplitude doesn't display conversion rate by default, but funnels and SQL dashboards make it straightforward to build and monitor. Track entry and conversion events consistently, segment by the properties that matter, and review conversion weekly for trends. If you want to track this automatically across tools, Product Analyst can help.