The Diagnostic Guide

How to build a cohort analysis chart

Your aggregate churn rate hides the most important patterns in your business. Here's how to see what's actually happening, step by step.

Your aggregate churn number is lying to you

You're reporting 5% monthly churn to your board. That number is accurate. It's also useless.

Aggregate churn blends together wildly different customer behaviors into a single percentage. A company could have improving product-market fit, with newer cohorts retaining at 90%, while the aggregate stays stubbornly at 5% because old cohorts from a year ago are still bleeding out. Or the reverse: aggregate churn looks stable while each new cohort actually retains worse than the last. The growing base just masks the decline.

This is the problem with averages. They smooth away the signal. You can't tell if things are getting better, getting worse, or staying the same. You definitely can't tell why.

Cohort analysis is how you see what's actually going on. It breaks your customers into groups based on when they signed up and tracks each group separately over time. Instead of one number, you get a map of your business that shows where retention is strong, where it breaks down, and whether your product changes are making a difference.

What a cohort analysis chart actually shows

Imagine a grid. Each row is a group of customers who signed up in the same month. Each column is how many months have passed since they signed up. Each cell tells you what percentage of that original group is still around.

That's it. That's the whole concept.

Cohort Month 0 Month 1 Month 2 Month 3 Month 4 Month 5
Jan 2026 100% 72% 61% 55% 52% 50%
Feb 2026 100% 75% 65% 60% 57%
Mar 2026 100% 78% 70% 65%
Apr 2026 100% 80% 73%

Notice the triangle shape. Newer cohorts haven't lived long enough to fill later columns. That's normal, and it's actually useful: it means you can compare the same time periods across cohorts. In this example, Month-2 retention improves from 61% (Jan) to 73% (Apr). Something is working.

People use two main formats for cohort analysis. The triangle table (shown above) is great for precise numbers and spotting trends across cohorts. Retention curves overlay each cohort as a line on the same chart, which makes it easier to visually compare the shape of retention over time.

One important distinction: logo retention counts customers (how many people are still subscribed), while revenue retention counts dollars (how much MRR that cohort still generates). Use logo retention for product decisions. Use revenue retention for financial planning. They can tell very different stories, because a few expanding enterprise accounts can mask broad logo churn.

Build one from your data

If you've never built a cohort chart by hand, you don't actually understand your retention data. Analytics tools are great for ongoing monitoring. But doing it manually at least once forces you to confront exactly what your data does and doesn't tell you.

With SQL

If you have a database with subscription or activity data, here's the core query pattern. The details will vary depending on your schema, but the structure stays the same.

-- Step 1: Get each user's cohort (signup month)
WITH cohorts AS (
  SELECT
    user_id,
    DATE_TRUNC('month', created_at) AS cohort_month
  FROM users
),

-- Step 2: Get each user's active months
activity AS (
  SELECT
    user_id,
    DATE_TRUNC('month', activity_date) AS active_month
  FROM user_activity
  GROUP BY 1, 2
)

-- Step 3: Calculate retention per cohort per period
SELECT
  c.cohort_month,
  DATEDIFF('month', c.cohort_month, a.active_month) AS months_since_signup,
  COUNT(DISTINCT a.user_id) AS active_users,
  COUNT(DISTINCT a.user_id)::FLOAT /
    MAX(cohort_sizes.cohort_size) AS retention_rate
FROM cohorts c
JOIN activity a ON c.user_id = a.user_id
JOIN (
  SELECT cohort_month, COUNT(*) AS cohort_size
  FROM cohorts
  GROUP BY 1
) cohort_sizes ON c.cohort_month = cohort_sizes.cohort_month
GROUP BY 1, 2
ORDER BY 1, 2;

The denominator matters. Always divide by the original cohort size, not the previous month's active count. If your January cohort had 200 signups and 100 are active in month 3, that's 50% retention, regardless of how many were active in month 2. Using the previous month as denominator gives you period-over-period survival rate, which is useful for different questions but is not the same thing.

With a spreadsheet

This is the simplest approach and it works surprisingly well.

  1. Export your data. You need two columns at minimum: customer signup date and either a cancellation date or a "still active" flag.
  2. Group by signup month. Add a column that extracts the month from the signup date. This is your cohort label.
  3. Count active users per period. For each cohort, count how many customers were still active at month 1, month 2, month 3, and so on. Divide each count by the original cohort size.
  4. Build the grid. Rows are cohort months, columns are period numbers. Fill in the percentages.
  5. Add conditional formatting. Color the cells from green (high retention) to red (low retention). This turns the spreadsheet into a heatmap where patterns jump out visually.

Quick note on tools: Mixpanel, Amplitude, PostHog, ChartMogul, and Baremetrics all generate cohort charts automatically. If you're already using one of these, you don't need to build from scratch. But understanding the underlying mechanics makes you better at interpreting what those tools show you.

Reading the chart: what the patterns mean

Building the chart is the easy part. Knowing what to look for is where it gets useful.

The diagonal of death

Every cohort decays at the same rate, month over month, with no flattening. The curve never levels off. This means your product has a value ceiling. People extract what they need and leave, or they never get enough value to form a habit. If you see this, the problem isn't marketing or pricing. It's the product itself.

Early drop, then flat

Steep drop in months 1-2, then the curve flattens out and barely moves. This is actually good news in disguise. It means the people who "get it" stick around. Your product works for activated users. The problem is that too many people never reach that activation moment. This is an onboarding problem, not a product problem.

Improving cohorts over time

Newer rows in your table show better retention than older rows at the same time periods. Something you changed (product updates, better targeting, onboarding improvements) is working. Figure out exactly what it was and double down. This is also the pattern that aggregate churn hides most often, because old cohorts drag the average down even as the trajectory improves.

Degrading cohorts over time

Each new cohort retains worse than the one before it. This is the scariest pattern and the easiest to miss without cohort analysis. Common causes: you're scaling paid acquisition and pulling in lower-intent users, a product change hurt new-user experience, or you've saturated your best-fit market segment and are now selling to less ideal customers.

The cliff

A specific month where retention drops sharply across all cohorts. Month 12 is the classic version: annual renewal decision. Month 1 is another common cliff (the trial-to-paid boundary). The good news is that cliffs are predictable and targetable. You know exactly when to intervene.

The smile

Retention dips, then starts climbing back up. This usually means churned users are reactivating, or existing customers are expanding enough to offset departures (in revenue cohorts). If you see this in logo retention, your win-back efforts are working. In revenue retention, expansion revenue is outpacing contraction. Either way, it's the best pattern you can hope for.

The questions your cohort chart answers

"Is my product getting better at retaining people?"

Compare newer cohorts to older ones at the same time period. If your January cohort's Month-3 retention is 55% but your April cohort's Month-3 is 65%, whatever you shipped between January and April is working. If it's going the other direction, something broke and you need to figure out what.

This is the single most valuable thing cohort analysis tells you. Aggregate churn can't answer this question at all.

"Where exactly am I losing people?"

Look at which period has the steepest drop. Month 0-to-1 drop is an onboarding and activation problem. Month 3-to-6 drop means customers aren't building a habit or finding enough ongoing value. Month 11-to-12 drop is a renewal decision problem. Each one maps to a different intervention, and there's no point working on cancellation save flows if your real problem is that 60% of users vanish in the first month.

"Which customer segments retain best?"

This is where cohort analysis gets powerful. Slice cohorts not just by signup month, but by acquisition channel, plan type, company size, or whether they completed a specific activation step. You might discover that customers who complete onboarding in under 48 hours retain at 2x the rate of those who take a week. That single insight changes your entire product roadmap and onboarding design.

Segment your retention curves by ICP

A single retention curve for all customers is better than an aggregate churn number. But it still averages away the most actionable insight: which types of customers stick around and which don't.

The real power of cohort analysis comes when you stop grouping by signup month and start grouping by customer type. Plot a separate retention curve for each segment, overlay them on the same chart, and the differences will tell you more about your business in five minutes than a month of staring at dashboards.

Here's what that looks like. Same product, five different customer segments, wildly different retention stories.

12-month retention by customer segment

100% 80% 60% 40% 20% 0% M0 M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12 Months since signup
Enterprise annual (API-integrated) 83%
Mid-market teams (5-20 seats) 59%
SMB with integrations 46%
SMB no integrations 19%
Self-serve trial converts 10%

Same product. Five completely different businesses hiding inside the same aggregate number.

The enterprise annual customers (blue line) barely churn at all. They integrated via API, they're on annual contracts, and switching costs are high. 83% retention at month 12 is excellent. You want more of these.

Mid-market teams (teal) lose about 12% in the first month, then the curve flattens out nicely. The activation problem is real but contained. If you could get more of that first-month cohort to stick, you'd move this line significantly.

Now look at the two SMB lines. Integrations are the dividing line. SMBs who connect at least one integration (amber) retain at 46% after a year. SMBs who don't (red) crater to 19%. That's a 2.4x difference in retention, and the only variable is whether they connected an integration. This is the kind of insight that changes your entire onboarding strategy overnight.

The self-serve trial converts (dashed gray) are the worst performers. 90% gone after 12 months. If you blended all five segments into one line, you'd see maybe 40-45% overall retention. Decent, you'd think. But the reality is you have two healthy segments, one fixable segment, and two that are dragging the whole average down. Different problems, different solutions.

How to segment

The best segmentation dimensions depend on your business, but these are reliable starting points:

  • Company size or plan tier. Enterprise, mid-market, and SMB customers almost always have different retention profiles. If you're not segmenting by this, you're flying blind.
  • Acquisition channel. Organic search signups often retain differently than paid ad converts or Product Hunt launch spikes. Knowing this tells you which channels produce customers worth acquiring.
  • Activation behavior. Did they complete onboarding? Connect an integration? Invite a teammate? Segment by these behaviors and you'll see exactly which actions predict long-term retention.
  • Contract type. Monthly vs. annual billing creates fundamentally different retention dynamics. Annual customers have fewer decision points, which means fewer chances to leave.
  • Use case or job-to-be-done. If your product serves multiple use cases, each one may have a different natural retention rate. A project management tool used for client work retains differently than the same tool used for internal to-do lists.

Start with two or three segments. You don't need to go granular on day one. The first time you overlay segmented curves on the same chart, you'll probably see a gap wide enough to rethink how you allocate your retention efforts entirely.

In the example above, fixing the integration adoption problem in SMB accounts (moving the red line toward the amber line) would improve overall retention more than any other single initiative. Without segmented curves, you'd never see that.

Common mistakes that make your cohort chart useless

Using revenue when you should use logos (or vice versa)

Revenue cohorts can hide broad logo churn. One enterprise account expanding from $5K to $20K/month can make a cohort look healthy even though 40% of the logos left. If you're making product decisions, look at logo retention. If you're doing financial planning, look at revenue. Always know which one you're reading.

Cohorts that are the wrong size

Monthly cohorts are standard, but they're only useful if each cohort has at least 30-50 customers. If you're signing up 5 people a month, individual behavior creates too much noise. Use quarterly cohorts instead. If you're signing up 5,000 a day, monthly cohorts are too slow for feedback loops. Go weekly.

Comparing incomplete cohorts

Your most recent cohort only has a few months of data. Don't compare its Month-3 retention to an older cohort's Month-12 and conclude "newer cohorts retain better." They just haven't had time to churn yet. Only compare the same period numbers across cohorts.

Only looking at the average

Some tools show you a single "average retention curve" by default. That's just aggregate churn in a fancier format. The value of cohort analysis is in the individual cohort lines. Look at each one. The differences between them contain the insight.

Not connecting it to action

A cohort chart sitting in a dashboard that nobody checks is worth nothing. Every time you review cohort data, the output should be a specific hypothesis and a next step. "March cohort retained 8% worse at Month-2, and we launched the new onboarding flow in February. Let's compare users who saw the old flow vs. the new one." That's useful analysis. Pretty charts are not.

From chart to action: what to do with what you find

The point of cohort analysis isn't the chart. It's what you do next. Here's how to map common patterns to specific fixes.

If your biggest drop is in month 1 (activation problem)

Most of your users never reach the moment where your product clicks for them. Fix this before anything else, because nothing downstream matters if people leave before getting value.

If retention erodes steadily after month 2 (engagement problem)

Users activate but don't build a habit. They find initial value, then drift away. You need to deepen engagement and make the product stickier.

If there's a cliff at month 12 (renewal problem)

The annual renewal is a decision point where customers actively re-evaluate whether to stay. You need a save strategy for this moment.

If newer cohorts are worse (quality problem)

Your acquisition is pulling in worse-fit customers, or a product change hurt the new-user experience. This is urgent because it means the problem is getting worse with every signup.

If you're losing people to failed payments

This shows up in cohort data as random-looking drops that don't correlate with usage patterns. It's involuntary churn, and it's the easiest type to fix.

Not sure which pattern matches your business? Take the Churn Risk Quiz to find out which type of churn is costing you the most.

Tools that build cohort charts for you

Once you understand the mechanics, you probably want a tool to automate the ongoing work. Here's what to use depending on your setup.

Revenue cohorts (plug and play)

ChartMogul, Baremetrics, ProfitWell. Connect your Stripe, Recurly, or Braintree account and get cohort charts out of the box. Best for subscription-based revenue analysis where your billing system is the source of truth. Limited flexibility for behavioral cohorts, but they cover the financial side well.

Behavioral cohorts (product analytics)

Mixpanel, Amplitude, PostHog. Better for slicing cohorts by feature usage, activation events, and user behavior. More setup required (you need to instrument your product with event tracking), but the payoff is deeper insight into why retention differs between groups.

Maximum control (SQL + BI tool)

Metabase, Redash, Looker, Mode. Write your own SQL, define custom cohort dimensions, and build exactly the analysis you need. This is the most flexible option and the best choice if your cohort definitions don't fit neatly into what out-of-the-box tools support.

Start here (free)

Google Sheets or Excel. Export your data, build the chart manually using the steps above, and add conditional formatting. Zero cost, total flexibility, and the process of building it teaches you more than any tool ever will.

Frequently asked questions

What is a cohort analysis chart?

A cohort analysis chart is a grid where each row represents a group of customers who signed up in the same time period (usually a month), and each column shows how many periods have passed since signup. Each cell shows the percentage of that original group still active. It reveals retention patterns that aggregate churn numbers hide, like whether newer customers retain better than older ones.

How often should I review cohort data?

Monthly works for most SaaS companies. If you're making rapid product changes and have enough volume (hundreds of signups per week), weekly reviews give you faster feedback. The goal is to catch retention changes while you can still remember what caused them. Always review after a major product launch, pricing change, or onboarding update.

What's the difference between cohort analysis and a retention curve?

A retention curve is one visualization that comes from cohort analysis. It plots retention percentage over time as a line chart, usually with one line per cohort overlaid on the same graph. Cohort analysis is the broader practice: grouping users by shared characteristics and tracking their behavior over time. The triangle heatmap, retention curves, and segmented comparisons are all outputs of cohort analysis.

Can I do cohort analysis without a data team?

Yes. Export your subscription data to a spreadsheet, group customers by signup month, and calculate what percentage are still active at each month interval. Google Sheets or Excel works fine. Tools like ChartMogul, Baremetrics, and ProfitWell also generate cohort charts automatically if you connect your billing system.

What cohort size do I need for meaningful results?

At least 30-50 customers per cohort to start seeing reliable patterns. Below that, one or two unusual customers create too much noise. If your monthly signups are small, use quarterly cohorts instead. If you have thousands of signups per month, weekly cohorts give you faster signal and you can segment further by plan type or acquisition channel.

How is cohort analysis different from looking at overall churn rate?

Overall churn rate averages all customers together into a single number. It tells you the current state but hides whether things are improving or getting worse. Cohort analysis shows you the trajectory: is each new group of customers retaining better than the last? Where exactly in the customer lifecycle do you lose people? It turns a single number into a diagnostic tool.

See the patterns, then fix them

Cohort analysis tells you where you're losing customers. Our experiments tell you how to stop it.