1
1 Comment

How to read a cohort retention matrix (and what it tells you that churn rate doesn't)

Churn rate is one number. Cohort retention is a map. Here's how to read it and what it reveals about your product.

Most founders track one churn number.
"Our monthly churn is 3.5%."

That tells you almost nothing about where the problem is or how to fix it.

A cohort retention matrix shows you everything.

What it looks like:

       M0    M1    M2    M3    M6    M12

Jan '24: 100% 85% 82% 71% 65% 58%
Feb '24: 100% 88% 84% 75% 70% —
Mar '24: 100% 91% 87% 79% — —

Each row is a cohort (month they signed up).
Each column is how many are still paying N months later.

What to look for:

→ M0→M1 drop: activation problem.
Customers aren't getting to first value fast enough.
Fix: onboarding, time-to-value, reduce setup friction.

→ M2→M3 drop: habit gap.
They got value once but it didn't stick.
Fix: proactive check-in at day 60, feature education, use case expansion.

→ Consistent row improvement over time: your product is getting better.
Mar cohort retaining better than Jan cohort at M3 = real signal.

→ Flat tail after M6: you have a sticky core.
Customers who stay 6 months tend to stay indefinitely.

Why aggregate churn hides this:

If you're growing, new cohorts dilute old ones in aggregate churn.
You can have terrible M1 retention AND a "healthy" 3.5% monthly churn
because new customers mask the loss.

The fix for M1 drop is completely different from the fix for M6 drop.
You need the matrix to know which problem you have.

How to build it in Excel:
Group subscriptions by created_month (cohort) and count active per month.
Takes about 3 hours to build correctly from scratch.

I have this as a prebuilt sheet in my dashboard if you want a shortcut:

https://yazanbenedit.gumroad.com/l/StripeSysDash

But the logic above works in any spreadsheet.

What does your M3 retention look like?

on May 13, 2026
  1. 1

    I like the M0 to M1 framing because that drop is usually where founders argue about features instead of setup friction. I ran into that with feedback loops too, people usually start with Typeform or Survicate, I built ScoresPulse because I wanted the simple NPS and CSAT check before the retention chart gets ugly. tbh are you pairing that matrix with cancellation reasons yet or just product usage?