6 min read

How to Monitor Conversion Rate in Mixpanel

Conversion rate is the number that matters most, but manually piecing it together wastes time. Mixpanel funnels show exactly where users drop off and which properties (campaign source, plan tier, device) affect conversion.

Track Conversion Events

Before you can analyze conversion, you need to track each step in your flow.

Map and Track Each Funnel Step

Identify your conversion flow—usually something like signup → payment info → subscription confirmed. Track each step as a distinct event using mixpanel.track() with properties that let you segment later (campaign source, plan tier, etc.).

javascript
// Track top-of-funnel
mixpanel.track('Signup Started', {
  'source': 'homepage',
  'utm_campaign': 'q1_growth'
});

// Track mid-funnel
mixpanel.track('Payment Info Entered', {
  'plan': 'pro'
});

// Track conversion
mixpanel.track('Subscription Created', {
  'plan': 'pro',
  'mrr': 99
});
Track each step with properties you'll use to segment conversion.

Identify Users and Set Persistent Properties

Call mixpanel.identify() to connect events to a user ID, then set user properties with mixpanel.people.set(). This ensures Mixpanel counts unique users converting, not unique sessions.

javascript
// Identify the user
mixpanel.identify(userId);

// Set user properties that persist
mixpanel.people.set({
  'email': userEmail,
  'account_tier': 'free',
  'signup_date': new Date().toISOString()
});

// Set super properties that attach to every event
mixpanel.register({
  'app_version': '2.1.0',
  'environment': 'production'
});
Without identify(), Mixpanel treats each session as a different user, destroying funnel accuracy.
Watch out: Event names are case-sensitive. Use consistent names like 'Payment Info Entered', not 'payment_info_entered' or 'paymentInfoEntered'.

Build and Segment Your Funnel

Once events are flowing, create a funnel in Mixpanel to see drop-off and segment by user properties.

Create a Funnel in the Mixpanel UI

Navigate to Funnels in the sidebar and click Create New. Add your events in order (Signup Started → Payment Info Entered → Subscription Created). Mixpanel shows conversion rate between steps and total completion rate.

javascript
// Fetch funnel data programmatically
const funnelId = 'your_funnel_id';
const response = await fetch(
  `https://mixpanel.com/api/2.0/funnels/${funnelId}/data?from_date=2024-01-01&to_date=2024-01-31`,
  {
    headers: {
      'Authorization': 'Bearer YOUR_SERVICE_ACCOUNT_TOKEN'
    }
  }
);
const funnel = await response.json();
console.log('Conversion by step:', funnel.data[0].steps);
Use the Funnels API to export conversion data for dashboards or alerts.

Segment Conversion by Campaign or Cohort

In your funnel, click Segment and pick a property like 'utm_source' or 'account_tier'. Mixpanel breaks down conversion for each value, so you see if paid traffic or enterprise users convert better.

javascript
// Use JQL to query conversion breakdown by property
const jql = `
tracing({
  from_step(event: "Signup Started")
  to_step(event: "Subscription Created")
})
.groupby(
  [properties["utm_source"]],
  function(traces) {
    return {
      utm_source: traces[0]["properties"]["utm_source"],
      conversion_rate: traces.length,
      percent_converted: 100.0 * traces.length / this._count
    }
  }
)
`;
// Submit via Mixpanel API to execute
JQL gives fine-grained control over conversion calculations by any dimension.
Tip: Mixpanel refeshes funnel data hourly, not in real-time. Checking multiple times per hour wastes time.

Monitor Conversion Over Time

Track conversion trends and alert when it drops.

Build a Conversion Dashboard

Create a dashboard in Dashboards and add a Funnels card. Set the date range to Last 30 days and include segments by campaign or product tier. Refresh this dashboard weekly to catch regressions early.

javascript
// Fetch daily conversion rates
const today = new Date();
const sevenDaysAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
const toDate = today.toISOString().split('T')[0];
const fromDate = sevenDaysAgo.toISOString().split('T')[0];

const response = await fetch(
  `https://mixpanel.com/api/2.0/funnels/YOUR_FUNNEL_ID/data?from_date=${fromDate}&to_date=${toDate}&unit=day`,
  {
    headers: { 'Authorization': 'Bearer YOUR_SERVICE_ACCOUNT_TOKEN' }
  }
);
const daily = await response.json();
const rates = daily.data.map(d => d.conversion);
console.log('Daily conversion rates:', rates);
Pull conversion data on a schedule to track trends over time.

Set Up Alerts for Conversion Drops

In your Funnels view, scroll down and click Create Alert. Set a threshold like 'conversion rate below 5%' or 'daily signups below 100'. Mixpanel emails you when breached.

javascript
// Manual alert if conversion drops more than 20% week-over-week
const threshold = 0.20;
const currentConversion = rates[rates.length - 1];
const previousConversion = rates[0];
const dropPercent = (previousConversion - currentConversion) / previousConversion;

if (dropPercent > threshold) {
  console.error(
    `🚨 Conversion dropped ${(dropPercent * 100).toFixed(1)}% in 7 days`
  );
  // Trigger alert to Slack, PagerDuty, etc.
}
For custom alerting logic, add checks to your metrics pipeline.
Tip: Mixpanel stores funnel data for 90 days. For longer retention, export via API weekly to your data warehouse.

Common Pitfalls

  • Forgetting mixpanel.identify() before tracking events—Mixpanel treats each session as a different user without it, making your conversion rates meaningless.
  • Using inconsistent event names across your codebase ('Signup' vs 'signup_completed' vs 'SignUp')—Mixpanel is case-sensitive and treats these as separate events, fragmenting your data.
  • Tracking conversion events from only one channel (web only, not mobile app)—your funnel will show artificially low conversion and hide which channels actually work.
  • Building funnels with steps that don't happen in strict order—Mixpanel requires sequential completion, so if users complete step 3 before step 2, they're not counted as conversions.

Wrapping Up

You now have visibility into drop-off rates, which channels convert best, and how conversion changes week to week. Monitor this weekly—it's usually the first signal that product changes or campaigns are working. 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