ds@mcpanalytics.aiEmail your data and your question and get an answer about your own data, with the method shown.Email your data and question. Get an answer.

Cohort Retention Analysis: Track How Customers Stay or Leave

By MCP Analytics Team | Published , updated

You acquire customers every month, but how many of them come back? Cohort retention analysis groups customers by when they first appeared (their cohort) and tracks their behavior over subsequent periods. It shows whether recent cohorts retain better or worse than older ones, where in the lifecycle customers drop off, and how long a typical customer stays active. You need a CSV with customer IDs and transaction dates.

What Is Cohort Retention Analysis?

Cohort retention analysis answers a question that aggregate metrics hide: are the customers you acquired last month sticking around as well as the ones you acquired six months ago? Instead of looking at overall active users (a number that blends brand-new signups with long-tenured customers) cohort analysis isolates each acquisition group and tracks it independently over time.

To see how many of your own customers come back, cohort by cohort, try the free cohort retention tool.

The concept is simple. Take all customers who made their first purchase (or signed up, or installed your app) in January. That is your January cohort. Now check how many of them were active in February, March, April, and so on. Express each count as a percentage of the original cohort size, and you have a retention curve. Do the same for February's cohort, March's cohort, and every other month in your data. Line them up, and patterns emerge that a blended number hides.

For example (made-up numbers), a SaaS company might discover that customers who signed up in Q1 retain at 70% after three months, but Q3 signups only retain at 52%. That gap is invisible in a blended churn number. Cohort analysis surfaces it immediately. Was there a pricing change? A different acquisition channel? A product regression? The retention heatmap tells you where to look.

A Worked Example With Real Numbers

Here is a small test you can run yourself. The data is made up. We simulated three signup cohorts of 200 customers each. We built in a month-1 return chance of 60%, 50% and 40% for cohorts 1, 2 and 3, and a 15% fall in the return chance for each month after that. The random seed is 7, so you get the same file we did. A customer counts as active in a month if they came back at all that month.

set.seed(7)
p <- c(0.60, 0.50, 0.40)
for (c in 1:3) {
  act <- sapply(0:3, function(m)
    sum(rbinom(200, 1, if (m == 0) 1 else p[c] * 0.85^(m-1))))
  cat("cohort", c, round(100 * act / 200, 1), "\n")
  ci <- prop.test(act[2], 200)$conf.int
  cat("  month 1 95% interval:", round(100 * ci, 1), "\n")
}

We ran this in R. It printed these retention percentages by month, and the 95% interval for month 1:

CohortMonth 0Month 1Month 2Month 3Month 1 interval
1100%56.0%51.0%35.5%48.8% to 62.9%
2100%52.5%40.0%35.0%45.4% to 59.6%
3100%38.5%35.0%25.0%31.8% to 45.7%

Cohort 3 is clearly lower at month 1: its interval (31.8% to 45.7%) does not overlap cohort 1 (48.8% to 62.9%). But cohorts 1 and 2 overlap a lot, even though we built in a 10 point gap. With 200 customers per cohort, you cannot tell those two apart: the real 10 point gap showed up as only 3.5 points (56.0% against 52.5%), well inside the noise. Lesson: always look at cohort size and the interval before you decide a cohort is better or worse.

Limits: this is simulated data with smooth, made-up return chances. Real cohorts are lumpier, and the numbers will not look this tidy.

Why Cohort Analysis Matters

Aggregate retention metrics lie. If you are growing fast, new signups mask the churn of older customers. Your overall active user count goes up even as individual cohorts deteriorate. This is the classic "leaky bucket" problem. You keep pouring water in faster than it leaks out, so the bucket looks full, but the leak is getting worse. Cohort analysis measures the leak directly.

Consider an e-commerce retailer (made-up numbers) tracking repeat purchase rates. Their overall repeat rate is 35%, and it has been steady for months. But cohort analysis reveals that customers acquired through a recent influencer campaign have a 15% repeat rate, dragging down what would otherwise be an improving trend. Without cohort-level visibility, the marketing team keeps spending on a channel that produces one-time buyers. With it, they can reallocate budget to channels that produce customers who come back.

The same logic applies to app engagement. Suppose a mobile game sees 10,000 daily active users, roughly stable. But cohort analysis shows Day-7 retention dropping from 20% to 12% over three months. The DAU number is stable only because acquisition volume increased. The product is getting worse at keeping people, and the DAU metric hides it.

What Data Do You Need?

You need a CSV with at least two columns: a customer identifier (customer ID, user ID, email, or any unique key) and an activity date (order date, login date, session timestamp). Each row represents one transaction or activity event, so a single customer will have multiple rows if they have been active multiple times. Optionally, include a revenue or transaction value column so you can look at revenue by cohort as well as headcount.

As a rough rule of thumb (ours, not a published threshold), aim for cohorts of at least a few dozen customers and six or more months of history. Small cohorts produce noisy percentages: if your January cohort has only 5 customers, one churn swings retention by 20 percentage points. The worked example above shows that even 200 per cohort cannot separate a 60% from a 50% month-1 return chance.

The data should be at the transaction level, not aggregated. One row per customer (with a "total purchases" column) will not work because cohorts and period-by-period activity are built from individual dates. If you have subscription data, each renewal or activity event should be a separate row.

How to Read the Report

Our sample cohort retention report (built on an online retail transaction file of 17,001 rows, 4,314 customers and 13 monthly cohorts) has these sections: overview, preprocessing, executive summary, cohort summary, retention heatmap, retention curves, survival analysis, churn analysis, revenue cohort analysis and an overall metrics card. Here is how to read each kind of output and how to act on it.

Overview and Executive Summary

The sample report opens with a short written summary and a table of key findings: total customers analyzed (4,314), number of cohorts (13), period-1 retention (23.0%), first-period churn (77.0%) and median customer lifetime (4.0 periods). An overall metrics card adds retention at periods 3, 6 and 12, and average revenue per customer. If you only have two minutes, these are the headline numbers to read.

Cohort Summary

This section shows how many customers entered each cohort, providing context for the retention percentages that follow. A cohort of 500 customers with 40% retention is a very different signal than a cohort of 12 customers with 40% retention. In the sample report, this card's stored summary text says cohorts with fewer than 10 customers may have unstable retention rates.

Cohort Retention Heatmap

This is the signature visualization of cohort analysis: a grid where each row is a cohort (grouped by first-activity month) and each column is a lifecycle period (month 1, month 2, month 3, and so on). Each cell shows the percentage of the cohort that was still active in that period. Colors range from dark (high retention) to light (low retention), making patterns jump out visually.

Read the heatmap in two directions. Horizontally across a row, you see how a single cohort ages: retention often drops in the first period; whether it then levels off depends on the data. Vertically down a column, you see whether retention at a given lifecycle stage is improving or worsening over time. A column that gets lighter as you move down means newer cohorts are retaining worse at that stage. A column that gets darker means newer groups had a higher return rate at that stage. Look at product changes and who signed up. Check other causes before you draw a conclusion.

The most actionable pattern is the first column after 100% (the first-period retention). If this number is dropping across recent cohorts, something about the initial experience is degrading: possibly a change in acquisition channel quality, onboarding flow, or product expectations.

Retention Curves

While the heatmap shows all cohorts at once, the retention curves overlay multiple cohorts on a single line chart so you can compare their trajectories directly. Each line represents one cohort, and the x-axis is lifecycle period. Lines that drop faster indicate cohorts with worse retention. Lines that flatten at a higher level indicate cohorts that stabilize with a larger base of loyal customers.

Look for convergence or divergence. If all cohort curves converge to roughly the same level after six months, your differences are in early retention: focus on onboarding. If curves diverge permanently, different cohorts have fundamentally different customer quality: focus on acquisition channel analysis.

Survival Analysis

Kaplan-Meier estimation (Kaplan and Meier, 1958) is a method for the time until an event, which handles censoring: customers who have not had the event yet when your data ends. Recent cohorts are censored in just this way. The result is a curve with confidence intervals, and the median survival time is where the curve crosses 50%. The sample report's survival card shows one curve for all customers combined, with upper and lower 95% bounds in its chart data, and a median customer lifetime of 4.0 periods.

One caution. Kaplan-Meier needs a clear event. A customer who buys now and then never announces that they left, so "stopped being active" must be defined by a rule, such as no activity for a set number of days. Change the rule and the curve changes. If you have no firm definition of the event, read the curve as a return-rate summary, not as the true chance a customer is still a customer.

Churn Analysis

This section flips the perspective from retention to churn, showing when in the customer lifecycle the biggest drop-offs occur. In the sample report the first period has the highest churn, at 77.0%: customers who never return after their initial activity. For example, if your first-period churn is 40%, four out of ten new customers never come back after their initial activity. In many businesses the first period is the steepest drop, but check this against your own heatmap.

Revenue Cohort Analysis

If you include a revenue column, you can look at revenue by cohort instead of customer count. Revenue often tells a different story than headcount retention. You might lose 50% of customers by month six, but if the retained half accounts for 80% of revenue, your revenue retention is much healthier than it appears. The sample report's revenue card shows cumulative revenue for each cohort over time, and an average revenue per customer of $2,047.29.

Preprocessing

The sample report's overview card lists the parameters used (monthly cohorts, 12 retention periods), and its preprocessing card gives the row counts: 17,001 rows in, 17,001 kept, none removed.

Where It Applies

Cohort retention analysis applies to any business where customers interact repeatedly over time. These are scenarios, not case studies. We have no results to report for them.

SaaS retention by signup month. Export user ID, login date and plan. Compare the first-month column for cohorts that came from a free-trial promotion against cohorts that did not. If the promotion cohorts are lower and the intervals do not overlap, as cohort 3 does in our example, the promotion is bringing in lower-intent users.

E-commerce repeat purchase. Export customer ID, order date and order value. Check whether holiday-season cohorts return less than other months, and use the revenue view to see how much of their value comes from the first order.

App engagement. Export device ID and session date. Read the heatmap down a column: if the same lifecycle week gets lighter in newer cohorts, compare the dates to your release history, then test the change with an experiment before you blame it.

When to Use Something Else

Cohort retention analysis is descriptive. It shows historical patterns but does not predict which individual customers will churn next. If you need individual-level churn scores to target retention campaigns, use a churn prediction model built with logistic regression, random forest, or XGBoost. These models score each customer's likelihood of churning, allowing you to prioritize outreach.

If your question is less about retention over time and more about segmenting your current customer base by value, RFM analysis (Recency, Frequency, Monetary) is a better fit. RFM groups customers by how recently they purchased, how often, and how much they spend: useful for targeting marketing campaigns right now rather than analyzing historical trends.

If you want to estimate the future revenue a customer will generate, Customer Lifetime Value (LTV) models like BG/NBD go beyond descriptive retention curves to produce dollar-value forecasts. These models are especially useful for acquisition budget decisions. They tell you how much you can afford to spend acquiring a customer based on predicted future revenue.

For very short-term engagement tracking (like session-by-session app usage), simple time series trend analysis may be faster and sufficient. Cohort analysis adds the most value when you have enough months of data and want to understand structural changes in customer behavior over time.

Try It on Your Own Data

Run your own cohort data in the free cohort retention tool.

Sources

Your turn

Bring your own data and the question you actually need answered.

MCP AnalyticsData science by email Send us your data and your question, and we will reply. ds@mcpanalytics.ai