6 min read

What Is Retention Rate in Mixpanel

Retention rate tells you what percentage of users come back after their first action—whether that's signing up, making a purchase, or opening the app. It's the gap between acquisition and churn. In Mixpanel, you measure it by defining a birth event (like Sign Up) and a return event (like Any Activity), then Mixpanel calculates what slice of your cohort came back and when.

Defining Retention Rate

Retention rate is straightforward: it's the percentage of users from a cohort who performed an action and then came back to do something again within a defined time window.

Understand the two-event model

Every Retention report in Mixpanel relies on two events. The first event (birth event) defines your starting cohort—typically Sign Up Completed or Account Created. The second event (return event) defines what "coming back" means—often Any Event (any action) or a specific event like Purchase or Login. If a user does event A and then event B within your time window, they're counted as retained.

javascript
// Track the birth event when users sign up
mixpanel.track('Sign Up Completed', {
  'signup_source': 'homepage',
  'plan_type': 'free'
});

// Track return events as users engage
mixpanel.track('Purchase', {
  'amount': 49.99,
  'currency': 'USD'
});

mixpanel.track('Dashboard Viewed', {
  'dashboard_name': 'Revenue Overview'
});
Both events are captured. Mixpanel uses them to build retention cohorts.

Know the retention rate formula

Mixpanel calculates retention rate as: (Users retained in time window / Total users in birth cohort) × 100. For example, if 1,000 users signed up on Monday and 250 of them did any action by Thursday, your Day 3 retention rate is 25%. This is called the default "On or After" retention—users just need to come back anytime on or after that day.

javascript
// Example: Tracking events for a 7-day retention calculation
// Day 0: User signs up
mixpanel.track('Sign Up Completed', {
  'user_id': 'user_123',
  'signup_date': '2026-03-26'
});

// Day 3: User returns and makes a purchase
mixpanel.track('Purchase', {
  'user_id': 'user_123',
  'revenue': 29.99
});

// Mixpanel calculates: if 1000 signed up on 2026-03-26,
// and 250 made a purchase by 2026-03-29, that's 25% Day 3 retention
Retention rate is calculated across cohorts by time interval.
Tip: "On or After" retention is the default and most useful. It answers "How many users ever come back?" Use "On" retention only if your product requires users to return in specific intervals (like daily active games).

Building Your Retention Report

In the Mixpanel UI, you build a retention report by selecting your events and measurement type. The retention rate measurement is the default, but you can also measure unique user count, property sums (like revenue), or property averages.

Define the retention behavior

In Mixpanel, go to Reports > Retention. In the query builder, select your birth event (e.g., Sign Up Completed) in the first event slot. Select your return event (e.g., Any Event) in the second slot. This pair forms your "Retention Behavior." You can save this behavior to reuse it across other reports.

javascript
// Events must be tracked in your app first
// Birth event: User signup
mixpanel.track('Sign Up Completed');

// Return events: User engagement
mixpanel.track('Any Event');  // Catch-all for any activity
// OR be specific:
mixpanel.track('Video Watched');
mixpanel.track('Post Liked');
mixpanel.track('Payment Made');

// Then in Mixpanel UI: Reports > Retention
// Select "Sign Up Completed" → "Any Event" (or your specific return event)
Track both events in your app code. The UI lets you pair them in the retention query.

Choose your measurement and time interval

After defining the behavior, Mixpanel defaults to Retention Rate as the measurement. You can also choose Unique Users (absolute count), Property Sum (total revenue, total watch time), or Property Average (average spend per user). Then pick your time unit: Daily, Weekly, or Monthly buckets. The report will show retention for Day 1, Day 7, Day 30, etc.

javascript
// Attach properties to events for filtering in the report
mixpanel.track('Sign Up Completed', {
  'browser': 'Chrome',
  'plan_tier': 'premium',
  'acquisition_channel': 'google_ads'
});

mixpanel.track('Purchase', {
  'order_value': 99.99,
  'product_category': 'pro_plan',
  'payment_method': 'credit_card'
});

// In UI: Retention > Measurement dropdown
// Select "Retention Rate" for percentages
// Or "Unique Users" for absolute counts
Properties let you filter and segment your retention report.

Add filters and breakdowns

Use Filters to exclude unwanted data (e.g., only count Chrome users, exclude test accounts). Use Breakdowns to segment your cohort by a property (e.g., see retention split by plan_tier: free vs. premium). You can combine filters and breakdowns to understand retention across user personas.

javascript
// Track properties to enable filtering and breakdowns
mixpanel.track('Sign Up Completed', {
  'country': 'US',
  'device_type': 'mobile',
  'signup_channel': 'app_store',
  'plan': 'free'
});

mixpanel.track('Subscription Upgraded', {
  'country': 'US',
  'device_type': 'mobile',
  'new_plan': 'pro'
});

// In UI: Retention > Filters: Browser = Chrome
// Breakdowns: Country = US
// Now you see retention just for US Chrome users, broken down by plan
Rich properties power flexible filtering and segmentation.
Watch out: Retention reports are limited to 60 days when using Daily time units. Switch to Weekly or Monthly to track retention beyond 60 days.

Interpreting the Results

Mixpanel displays retention as a curve showing how many cohorts return over time. The visualization helps you spot trends: improving retention, declining retention, or differences between user segments.

Read the retention curve chart

The Retention Curve visualization shows a line chart and a color-coded table. Each row is a cohort (e.g., "Users who signed up on March 1"). Each column is a time bucket (e.g., Day 1, Day 7, Day 30). The darker the purple shade in a cell, the higher the retention percentage for that cohort at that time. An asterisk (*) means the data is incomplete (time is still ongoing).

javascript
// Track the same events consistently to build cohorts
// Day 1: User signs up
mixpanel.track('Sign Up Completed', {
  'cohort_date': '2026-03-01'
});

// Day 2: User returns
mixpanel.track('Dashboard Opened');

// Day 8: User returns again
mixpanel.track('Report Downloaded');

// Mixpanel groups users by signup date, then counts returns
// Cohort 2026-03-01: [100% Day 0, 45% Day 1, 30% Day 7, 15% Day 30]
Consistent event tracking builds reliable retention cohorts.

Compare cohorts and trends

Use the Line visualization to see how a specific retention bucket (e.g., Day 7) trends over time. Is your Day 7 retention improving month-over-month? Declining? You can also expand cohort rows to see individual cohort performance. This reveals whether recent users are stickier than older cohorts.

javascript
// Track acquisition source to compare retention by channel
mixpanel.track('Sign Up Completed', {
  'source': 'organic',
  'utm_campaign': 'blog_post',
  'utm_medium': 'social'
});

mixpanel.track('Sign Up Completed', {
  'source': 'paid',
  'utm_campaign': 'summer_sale',
  'utm_medium': 'google_ads'
});

// In UI: Breakdowns > Source
// Compare retention: organic vs paid signups
Segment by acquisition source to spot high-value cohorts.
Tip: Weighted averages in Mixpanel account for cohort size. Larger cohorts influence the overall "Average" row more than smaller cohorts, so you see a realistic picture of retention across your whole user base.

Common Pitfalls

  • Mixing events in your retention behavior—if your birth event is "Sign Up" but your return event is "Purchase," you're measuring purchase retention, not engagement retention. Define what "returning" means for your product.
  • Forgetting to attach properties to events—without properties like plan_tier or country, you can't filter or segment your retention report meaningfully.
  • Comparing raw percentages across cohorts of different sizes—Mixpanel weights averages by cohort size, so a 50% retention from 1,000 users counts more than 50% from 100 users.
  • Using Daily retention beyond 60 days—you'll hit Mixpanel's hard limit. Switch to Weekly or Monthly buckets to track long-term retention.

Wrapping Up

Retention rate in Mixpanel is the percentage of users from a cohort who return after an initial action. It's calculated by pairing a birth event with a return event, then Mixpanel groups users into cohorts by date and measures what percentage came back in each time window. Tracking retention helps you understand user stickiness, spot declining engagement, and compare which cohorts or segments stick around longest. 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