The Cohort Retention Chart Most SaaS Dashboards Get Wrong
The Cohort Retention Chart Most SaaS Dashboards Get Wrong
The cohort retention grid is the single most important chart in any SaaS dashboard. It's the one investors stare at. It's the one that tells you whether you have product-market fit. And it's the one most dashboards get mathematically wrong in three specific ways.
A correct retention curve flattens. An incorrect one keeps declining and tells you you don't have PMF when you actually do. Or it overstates retention and tells you you have PMF when you don't. Either error misroutes a year of strategy.
Worth understanding the math before trusting any chart that claims to show it.
Or skip the build entirely: get the SaaS Metrics Kit
The SaaS Metrics Kit is shipped with the cohort retention chart implemented correctly. 11 screens including MRR breakdown, churn analysis, LTV/CAC, and forecasting. Next.js + Tailwind + shadcn/ui. $99 solo, $199 team, $349 agency.
Get the SaaS Metrics Kit → or get every kit (18 total) for $499 via All Access →
What Cohort Retention Actually Measures
You group customers by the month they first paid (the cohort). For each subsequent month, you measure what percentage of that cohort is still paying.
A healthy SaaS has a curve that drops in months 1-3 (the people who tried it and bounced) then flattens (the people who stuck). A struggling SaaS has a curve that keeps declining month after month.
The shape of that curve, not the absolute number, is what tells you if you have PMF. Three failure modes ruin the shape.
Failure Mode 1: Signups in the Denominator Instead of Paid Customers
This is the most common error. The dashboard counts everyone who signed up in January as the January cohort. Then in February, it shows what percentage of January signups are paying.
The problem: half of January signups never paid in the first place. They're not "churned." They were never customers.
The right denominator is paid customers as of the end of the cohort month. If someone signs up January 3rd but doesn't convert from trial until January 25th, they belong in the January cohort. If they signed up January 20th and never converted, they belong in no cohort.
What this changes: retention curves get tighter and higher. You see actual paying-customer retention, not signup-to-paid attrition mixed with paying retention.
Failure Mode 2: Cancellation Bucket Misalignment
A customer joined in January and canceled in April. Where do they count?
Wrong: they count as churned in April (the cancellation month). Their January cohort shows them as retained through March, churned in April. This is what most dashboards display.
Right (for revenue retention): they contribute MRR through their last paid period, then drop out. Their January cohort shows them as retained through the last month they paid, churned in the first month they didn't.
The difference matters when subscriptions are annual or when refunds are involved. A customer on an annual plan who canceled in April but paid through December counts as retained through December, not as April churn. Most dashboards get this wrong and overstate churn in the cancellation month.
Failure Mode 3: Mixing Signup Cohort with Activation Cohort
You can cohort by signup month (when they first appeared) or by activation month (when they first did the key action that means they're a real user). These are different questions and have to be different charts.
What most dashboards do: silently mix them. Customers who signed up in January but activated in March show up in the January cohort. Customers who signed up in March and activated in March also show up in March. Now your cohorts are inconsistent and the retention curve is averaging two populations.
What good dashboards do: pick one. For product-led growth SaaS, activation cohort is usually more meaningful. For sales-led SaaS, signup cohort (or contract start cohort) makes more sense. Pick one, label it, stick with it.
Why This Matters for Product-Market Fit
If you're at $50K MRR and reading your retention curve to decide whether to raise, double down, or pivot, the math has to be right. A curve that looks like it's still declining at month 12 might actually be flattening at month 4 if you fix the denominator. A curve that looks healthy might actually be hiding annual-plan customers who've already canceled.
Investors will recompute your numbers from the raw Stripe data anyway. Better to have a chart that holds up to the recompute.
What a Correct Calculation Looks Like
For revenue retention, the formula per cell:
retention[cohort_month][period_n] =
(MRR from cohort customers in cohort_month + period_n months) /
(MRR from cohort customers in cohort_month)
Where:
- Cohort customers = customers whose first paid month was cohort_month
- MRR in period = sum of recurring revenue from those customers in (cohort_month + period_n)
- Customers count as "MRR contributing" only in months where they actually paid (not the entire annual plan period)
For customer retention, replace "MRR" with "count of paying customers."
Validate by hand: pick the January 2025 cohort, pull the customer list, manually check what each customer paid each month, compute retention for month 6. Compare to your dashboard. If they don't match within rounding, the dashboard is wrong.
What to Build Instead
If you're building a SaaS metrics dashboard in Next.js, the cohort retention chart is the one worth getting right first. The calculation lives in a Postgres view (one row per cohort_month × period_n), driven from your subscription events table. The chart renders the grid with conditional formatting.
Our How to Build a SaaS Metrics Dashboard in Next.js guide walks through the full data model. For the alternatives if you don't want to build, see ChartMogul Alternatives for SaaS Founders.
The shortcut: the SaaS Metrics Kit ships with the cohort retention chart implemented as described above. Reference implementation, ready to drop into your Next.js dashboard. Get the SaaS Metrics Kit →
The honest take: a wrong retention chart is worse than no chart. It gives you false confidence (or false despair) about the most important question in SaaS. Spend the half day to get it right.
