◀ Course contents Part 4 · Module 4-01

Cohort Analysis

Stop averaging away the truth

A cohort is a group of users who started together. Tracking each group separately as it ages shows whether the product is actually getting better, something a blended, all-users average can hide completely. This guide covers how to build a cohort view, read it, and avoid the traps that make it lie.

Ready?

1

What a Cohort Is, and Why Averages Lie

A cohort is simply a group of users who share a starting point — usually the month they signed up. Instead of asking “how are our users doing?”, you ask “how is each intake doing, at the same age?”

This matters because a blended average mixes people at completely different modules of their life with you. Someone who joined last week and someone who joined three years ago are averaged into one number, and that number will move for reasons that have nothing to do with your product — mostly the changing mix of old and new.

A school makes the analogy concrete. Nobody judges a school by the average exam score of everyone who ever attended. You look at the class of 2023, then the class of 2024, and ask whether this year’s intake is doing better at the same point in the course. Averages tell you about your history; cohorts tell you whether you are getting better.

Why an average hides a turnaround Two panels. A blended average mixes users of every age into one number that moves for reasons unrelated to the product. Cohorts compare each intake at the same age, isolating whether the product is improving. Blended average one number, all ages Mixes week-old and three-year users Moves when the mix moves Dragged down by large old cohorts Says nothing about improvement Cohorts each intake, same age Groups by when people joined Compares like with like Old cohorts cannot mask new ones Shows whether you are getting better
The left-hand number can fall in a quarter where every single intake improved, purely because more of them are new. It is not measuring the product, it is measuring the mix — and the mix changes on its own, faster than anything you ship.

Everyday example, a gym in January

A gym's average member attendance jumps every January. Not because members got fitter, but because a flood of new joiners temporarily changes who "the average member" is. By March the average falls again, and still nothing about the gym has changed. Track the January joiners as their own group and you learn something real: how many of them are still turning up in week 6.

Blended number

"Retention is 41%"

41% of whom, measured how long after what? Moves with acquisition volume, not product quality.

Cohort number

"March signups, 41% active at week 4"

A specific group, a specific age, a stated definition of active. Comparable to April's week 4.

The average that hid the turnaround

A blended retention number sat at 31% for five months and the team assumed their work had made no difference. Split into monthly cohorts, every cohort after a March onboarding change retained more than a dozen points better than the ones before it — the average was being dragged down by the large, old, poorly-retained cohorts that no amount of new work could change.

Quick check

A company's blended retention number has risen for three straight months, but acquisition has slowed sharply over the same period. What's the most likely explanation?

2

Reading a Cohort Table

A cohort table is a triangle of numbers, and it becomes readable the moment you know which direction to read it in.

Each row is one cohort — everyone who joined in a given month. Each column is an age: M0 is their first month, M1 their second, and so on. Each cell is the share of that cohort still active at that age. It forms a triangle because the newest cohort has not lived long enough to fill the later columns yet.

Reading across a row gives you one cohort’s decay curve — how that particular intake faded over time. Reading down a column is where the insight usually is, because it compares every cohort at the same age, which removes the age effect entirely. If M1 reads 48%, 51%, 63%, 61%, 64% going down, something changed between the second and third cohort, and it is still holding.

Read across a row

One cohort's decay curve. Steep early, then hopefully flattening.

Read down a column

Different cohorts at the same age. This is the honest read on whether the product is improving.

Read the diagonal

One calendar date hitting every cohort at once, an outage, a holiday, a bad release, a tracking break.

Check the size column

A 60% cell on 20 users means nothing. Percentages need a denominator worth trusting.

Reading a cohort table A retention triangle. Each row is a sign-up month, each column the months since. Retention falls steeply for the first two months then flattens. The March cohort holds better than January and February at every age. M0 M1 M2 M3 M4 M5 Jan 100% 48% 34% 29% 27% 26% Feb 100% 51% 36% 31% 29% Mar 100% 63% 52% 47% Apr 100% 61% 50% May 100% 64%
Every row falls, so no row on its own tells you anything. The finding is in one column: M1 reads 48, 51, then 63 — and it holds at 61 and 64, so it was not a good month. Something shipped between February and March, and three months later the blended number has still not caught up enough to show it.

Everyday example

A school does not judge itself on the average score of everyone who ever attended. It looks at the class of 2023, then the class of 2024, and asks whether this year's intake is doing better at the same point. Rows are the classes; columns are how far into the course they are.

The shape that matters most

Every retention curve falls at first. The question is where it stops falling. A curve that flattens at 30% says a real group found lasting value, and that 30% is the foundation the business compounds on. A curve that keeps sliding toward zero is a leaky bucket: growth is being rented from the acquisition budget, and it stops the moment spending does.

You're not looking for a high number. You're looking for a curve that goes flat above zero.

The curve that never flattened

One product's cohorts fell to 8% by month six and kept sliding. The team celebrated a rising user count for a year, which was entirely funded by growing ad spend. The curve had no floor, so every customer had to be bought again — the number went up and the business did not.

Quick check

Every cohort in a table dips sharply in the same calendar week, regardless of how old each cohort was at the time. How should this be read?

3

Cohort Types, and What Each One Answers

The default cohort is sign-up month, and it answers exactly one question: is the product getting better over time? That is a good question, and it is often not the one you have.

You can group users by anything they shared at the start, and the cut you choose determines which question the table can answer.

Behavioural cohorts group by what people did early: those who invited a teammate in week one, those who imported data on day one. These answer “which early actions predict staying?” — and that is the most directly useful cut for product work, because it points at something you can encourage.

Product cohorts group by which version or plan someone started on, which isolates the effect of a specific change.

The habit is to choose the cut from the question rather than the other way round. If you cannot say what decision the table will inform, you will produce a triangle of numbers and no conclusion — which is the usual outcome of cohort analysis run out of duty rather than curiosity.

By start date

Acquisition cohort

Grouped by signup week or month. Answers: is the product getting better for each new intake?

By action

Behavioral cohort

Grouped by an action taken in a window, "connected a calendar in week 1". Answers: which early behavior predicts sticking around?

By source

Channel or campaign cohort

Grouped by where users came from. Answers: which acquisition source brings users who stay?

By value

Revenue cohort

Tracks money, not logins. Net revenue retention can exceed 100% when expansion beats churn.

Two definitions to pin down before anyone reads a number. Active: opened the app, or completed a core action? The second is harder and far more honest. Retained at week N: active in week N specifically (bracket retention), or active at any point up to week N (unbounded)? Unbounded always looks better and is rarely the number you want.

Choose the cut from the question A chooser matching three questions to three ways of grouping users: sign-up month for product improvement, acquisition channel for spending decisions, and early behaviour for product decisions. What are you actually asking? is the product better? Group by sign-up month — the default cut is the spend working? Group by acquisition channel what to build? Group by early behaviour — invited, imported, activated
One team saw nothing by sign-up month, then cut the same users by channel and found one retaining at half the rate while costing exactly as much to buy. Same users, same months, same table — a different question asked of it, which is why the cut is chosen after the decision rather than before it.

Behavioral cohorts show correlation

"Users who connect a calendar retain 3× better" is a great hypothesis and a terrible conclusion. Those users may simply have been more committed to begin with. Forcing the action on everyone can add friction and move nothing. Behavioral cohorts nominate an activation event; an experiment is what promotes it to a cause.

Choosing the cohort that answers the question

A team cut cohorts by sign-up month and saw nothing. Cutting the same users by acquisition channel showed one channel retaining at half the rate of the others while costing the same to buy. Sign-up month answers "is the product improving over time"; channel answers "where is the money going wrong". The cut has to match the question.

Quick check

A B2B company reports 92% logo retention at month 12, but net revenue retention of 118% for the same cohort. How is that possible?

4

Traps, and Turning the Table into a Decision

Two traps make cohort tables lie, and both have a visual signature you can learn to recognise instantly.

A diagonal pattern — the dip moving one column further right in each successive row — is age-related. It happens to every cohort at the same point in their own life, which points at something in your product experience: a trial ending, an onboarding sequence finishing, a first invoice.

A vertical pattern — every cohort dipping in the same calendar week regardless of age — has nothing to do with your product experience. It is an outage, a holiday, a pricing change or a tracking bug.

The second trap is small numbers. The newest cohorts have the fewest members and the least history, so their percentages swing wildly and look like signal. A cohort of forty people dropping four points means four people changed their mind. Resist reading the newest row until it is large enough to be boring.

And remember what the table is for. It is not a report; it is a way of deciding where the quarter goes. A curve that is still falling has recoverable users in it. A curve that has already flattened is your loyal core, and moving it is expensive. The table tells you which part of the problem is worth the money.

1

Immature cohorts

The newest rows have partly-elapsed periods. Those trailing cells are censored, not bad. Grey them out.

2

Tiny cohorts

Forty-user weekly cohorts swing 20 points on a handful of people. Widen the grain or pool weeks.

3

Changed definitions

Redefining "active" mid-table breaks every column comparison unless the raw events allow a clean backfill.

4

Mixed channels

A flat aggregate can be one channel collapsing while another improves. Segment before concluding.

5

Survivorship bias

Studying only the users who stayed hides everyone who did the same thing and left anyway.

Then act. Attack the earliest steep part of the curve first: users lost in week 1 are the cheapest to save and the largest group. Compare your best and worst cohorts and ask what differed, the channel, the onboarding version, the season. And when a column moves after a release, you have a lead worth testing properly.

Two patterns, two causes Two panels contrasting a diagonal pattern, which is age-related and points at the product experience, with a vertical pattern, which hits every cohort in the same calendar week and points at an external event. Diagonal moves right each row Hits every cohort at the same age Trial ending, onboarding stopping A first invoice arriving Look inside your product Vertical same calendar week Hits every cohort at once Outage, holiday, pricing change Tracking bug Look outside your product
Neither panel is the good one; they are two different handwritings, and the last bullet in each is the instruction. A diagonal sends you into the product, a vertical sends you to the calendar — if every class in a school dips in the same week, the cause is not the pupils, it is the heating.

Everyday example

If every class in a school dips in the same week, the cause is not the pupils — it is that the heating failed. A dip that runs diagonally across a cohort table is age-related; a dip that runs vertically, hitting every cohort at once, is a calendar event.

From table to decision

A cohort table showed a steep M1 drop that flattened by M3 at 26%. The team stopped trying to lift the flat part — which is the loyal core and hard to move — and put everything into the first thirty days, where the curve was still falling. The table did not just describe the problem; it said which part of it was worth the quarter.

Quick check

Every cohort's retention decays toward zero by month 9, yet the company's total active users keep climbing. What does this combination mean?

Drill what you learned
Scenario 1 easy

A PM reports "our retention is 41%" with no other qualifiers attached to the number.

What's missing from that statement?

Scenario 2 easy

A team's blended, all-users retention number has been climbing for three months, and leadership is celebrating.

Why might cohort analysis tell a different story?

Scenario 3 easy

A team groups all users who signed up in March 2026 and tracks that group's behavior over the following six months.

What kind of cohort is this?

Scenario 4 easy

A cohort retention curve drops steeply for the first two weeks, then levels off at around 30% and stays flat for months.

What does the flattening suggest?

Scenario 5 easy

Someone builds a cohort table and compares the newest cohort's month-1 retention against a year-old cohort's month-12 retention.

What's wrong with this comparison?

Scenario 6 medium

Reading down the month-1 column of a cohort table, retention goes 22%, 24%, 27%, 31% across four consecutive monthly cohorts.

What does reading down a column tell you?

Scenario 7 medium

In a cohort table, every cohort shows an unusual dip in the same calendar week, regardless of the cohort's age.

How should the team read this pattern?

Scenario 8 medium

A subscription business reports 92% logo retention at month 12, but its month-12 net revenue retention is 118%.

How can revenue retention exceed 100%?

Scenario 9 medium

A PM defines a behavioral cohort of "users who connected a calendar in week 1" and finds they retain at triple the rate of everyone else.

What should the PM conclude?

Scenario 10 medium

A monthly cohort table shows the two most recent cohorts performing far worse than all previous ones at month 3.

What should the team check first?

Scenario 11 hard

A weekly cohort table is sliced by acquisition channel. Overall retention is flat, but paid-social cohorts are collapsing while organic cohorts are improving sharply.

What's the real story?

Scenario 12 hard

Mid-year, a team changes the definition of an "active user" from opening the app to completing a core action, and backfills the new definition across the whole cohort table.

What's the risk to the analysis?

Scenario 13 hard

A team runs cohort analysis on weekly cohorts of about 40 users each, and the week-4 retention numbers swing between 18% and 47% with no complete trend.

What's the most likely explanation?

Scenario 14 hard

A PM studies the users still active at month 12 to find what drove their retention, and finds they all used the advanced reporting feature heavily.

What bias threatens this conclusion?

Scenario 15 hard

A cohort curve shows retention decaying steadily toward zero by month 9 for every cohort, but the company's total active users keep growing.

What does this combination indicate?

Drilled it. Now apply it to a real situation.

Put it to work
From lesson 1

Flat overall, dying underneath

A recipe app

Monthly active users have been almost perfectly flat for five months. Leadership reads it as stability. Marketing has been spending heavily on acquisition the whole time.

Month-3 retention, by signup cohort
CohortSignupsRetained to month 3
January12,40031%
February14,90029%
March21,20022%
April26,80017%
May31,50014%

Flat MAU, and this table. What is actually happening?

From lesson 2

Reading down a column instead of across a row

A meditation app

Six monthly cohorts, retention by month since signup. A redesigned onboarding shipped at the start of April.

Retention by cohort and month since signup
CohortM1M2M3M4M5
January44%31%26%24%23%
February43%30%26%24%
March45%32%27%
April58%37%
May61%39%

Which readings does this table support?

Select all that apply — there are 3 to find.

From lesson 3

Which cohort answers the question

A fitness platform

Four questions land in the same week. Each needs a cohort table, and each needs a different way of grouping people.

Match each question to the cohort type that answers it, in the order the questions are listed below.1. Did the March onboarding change work? 2. Do users from the paid channel retain worse than organic? 3. Does connecting a wearable in week one predict long-term retention? 4. Is our new annual plan retaining better than monthly?

Drag the rows, or use the arrows, then check.

  1. Acquisition cohort — group by signup month Question 1. A change shipped on a date splits users into before and after; only signup-date cohorts can show a step at that date.
  2. Acquisition-source cohort — group by channel Question 2. Comparing paid against organic requires the grouping to be the channel, holding signup period constant so you are not comparing different eras.
  3. Behavioural cohort — group by whether they did the action Question 3. The grouping is a behaviour, not a date. Note it can only ever show correlation — the people who connect a wearable were already more committed.
  4. Plan cohort — group by what they bought Question 4. Grouped by the attribute in question. Also the one most exposed to selection: people who choose annual are different people, not just people on a different plan.
From lesson 4

A retention win that was a reporting change

A budgeting app

Month-1 retention jumped from 38% to 51% between the June and July cohorts. No product change shipped in that window. The growth lead has already drafted the update to the board.

One thing did change on 1 July: the definition of an active user moved from "opened the app and viewed a transaction" to "opened the app".

Work out what you are looking at.

  1. Step 1 of 3

    What does the definition change do to the comparison?

    The number moved. Whether user behaviour moved is a separate and currently unanswered question.

  2. Step 2 of 3

    How would you find out what really happened?

    Recomputed under the old definition, July's month-1 retention was 39%. One point, not thirteen.

  3. Step 3 of 3

    What goes in the board update?

    A definition change is a data event. It belongs in the changelog next to product releases, for exactly this reason.

Notification