6 min read

How to Monitor Retention Rate in Mixpanel

User retention is your real business metric—acquisition is noise if nobody comes back. Mixpanel's Retention report gives you the cohort view: who signed up, when they came back, and how long they stuck around. But you need clean event data and the right report setup to see the real picture.

Setting Up Events for Retention Analysis

Retention in Mixpanel lives on two events: an initial event (Sign Up, first purchase) and a return event (Log In, create report). Get these two right, and the reporting works.

Step 1: Track a Clear Initial Event

Choose the moment you want retention *from*. For most SaaS, this is Sign Up. Track it once per user at account creation. Include properties that describe the user: plan tier, source, geography, anything you want to slice retention by later.

javascript
// Track signup as the cohort baseline
mixpanel.track('Sign Up', {
  'distinct_id': userId,
  'Plan Type': 'free',
  'Signup Source': 'google_ads',
  'Country': 'US'
});

Step 2: Track a Return Event Consistently

Choose what counts as a user 'returning.' This could be Log In, Created Report, Viewed Dashboard, or any action that shows the user is engaged. Fire this event every time they return, not just once.

javascript
// Fire this on every return/engagement
mixpanel.track('Log In', {
  'distinct_id': userId,
  'Login Source': 'web',
  'Session Duration': sessionLength
});

// Or a product-specific engagement event
mixpanel.track('Created Report', {
  'distinct_id': userId,
  'Report Type': 'custom'
});

Step 3: Add Filtering Properties to Initial Event

Include any property you want to filter or segment retention by. Mixpanel lets you slice retention by these properties in the report. Common ones: plan tier, signup source, feature flags, industry, company size.

javascript
mixpanel.track('Sign Up', {
  'distinct_id': userId,
  'Plan Type': determineUserPlan(),
  'Signup Source': getUTMSource(),
  'Industry': customerIndustry,
  'Features Available': ['reports', 'exports', 'sso'],
  'ICP': isEnterpriseTarget ? 'yes' : 'no'
});
Watch out: If your Sign Up event fires multiple times (re-signup, account recovery), your cohort dates get messy. Either ensure the event fires only once, or filter to 'First Time User': true.

Building the Retention Report

With events tracked, the Retention report is straightforward. You're telling Mixpanel: 'Show me users who did X on day 1, then Y on day N.'

Step 4: Open the Retention Report

In the Mixpanel sidebar, go to Reports > Retention. You'll see a matrix: rows are cohorts (by signup date), columns are days/weeks post-signup, cells show % of users who returned.

Step 5: Set the Starting Event

Click the Starting Event dropdown and select Sign Up (or whatever your cohort event is). Choose your cohort granularity: Daily, Weekly, or Monthly. Weekly is standard for SaaS.

javascript
// Ensure your initial event has a proper timestamp
mixpanel.track('Sign Up', {
  'distinct_id': userId,
  '$timestamp': Math.floor(Date.now() / 1000),
  'Plan Type': 'free'
});

Step 6: Set the Returning Event

Click Returning Event and select Log In or Created Report—whatever shows the user came back and engaged. Mixpanel will now show: of the users who signed up in week 1, what % logged in on day 1, day 7, day 30, etc.

Step 7: Filter and Segment

Use the Add Filter button to narrow which users are included (e.g., only free-plan signups). Add segmentation using the Segment By dropdown to break retention down by properties like Plan Type, Signup Source, or Country. This reveals which cohorts are stickiest.

javascript
// Properties you track enable filtering in the report UI
mixpanel.track('Sign Up', {
  'distinct_id': userId,
  'Plan Type': userPlan,
  'Signup Source': source,
  'Company Size': companySize
});
Tip: Weekly cohorts are more stable than daily—daily can be noisy due to weekday/weekend patterns. Monthly is too slow to catch early churn.

Monitoring and Interpreting Results

The report is live, but knowing what to look for is the skill. These patterns tell you whether retention is healthy or something broke.

Step 8: Save the Report to a Dashboard

Click Save and give it a name—e.g., 'Weekly Retention by Plan Type'. Pin it to a shared team dashboard. The report updates automatically each day; cohorts are added weekly.

Step 9: Watch the Retention Curve Shape

A healthy curve drops sharply days 0–1 (normal—many users churn immediately), then flattens. A curve that drops 50% by day 7 then stays flat suggests onboarding works. A curve that keeps dropping steeply suggests the product isn't keeping users engaged.

Step 10: Compare Month-Over-Month and Set Alerts

Pull last month's cohorts and this month's. If day-7 retention drops from 45% to 35%, something changed. Export data via the Mixpanel API and pipe it into a Slack bot to alert when retention drops below your baseline.

javascript
// Fetch retention data via API for custom alerting
const response = await fetch(
  'https://data.mixpanel.com/api/2.0/retention?' +
  'from_date=2026-03-01&to_date=2026-03-26&' +
  'retention_type=rolling&unit=week&' +
  'event=' + encodeURIComponent(JSON.stringify({'event': 'Log In'})) +
  '&initial_event=' + encodeURIComponent(JSON.stringify({'event': 'Sign Up'})),
  {
    headers: {
      'Authorization': 'Basic ' + btoa(projectToken + ':')
    }
  }
);
const cohorts = await response.json();
// Now check if latest cohort's day-7 retention dropped
if (cohorts.data[0][1] < 0.4) {
  alert('Retention dropped below 40%');
}
Watch out: A return event that's too common (page load, API request) makes all retention look high. A return event that's too rare (conversion) makes retention look terrible. Pick something that signals *actual engagement*.

Common Pitfalls

  • Sign Up event firing multiple times per user. Cohort dates get muddled. Check for duplicate events in Events and filter to first signup only.
  • Choosing a return event that's too frequent (every API call) or too rare (only paid conversion). Pick something that feels like real engagement without noise.
  • Forgetting timezone offsets. Mixpanel uses UTC; if your users are EST, cohort boundaries might be off by hours and skew your data.
  • Comparing retention before and after a product launch without segmenting. Old cohorts didn't experience the new feature; don't mix them with new cohorts.

Wrapping Up

Retention monitoring in Mixpanel is straightforward once your events are clean. Choose initial and return events, set up the report, and read the curves weekly. Healthy SaaS products see day-7 retention above 40% and day-30 above 25%. If your numbers are lower, dig into cohorts by plan type, source, or feature adoption to find the leak. If you want to monitor retention across multiple tools and set up automated alerts, Product Analyst can help.

Track these metrics automatically

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

Try Product Analyst — Free