ThynkBrew
← All insights
October 25, 2026·7 min read·By thynkbrew

How to Calculate SaaS Cohort Retention

Calculate SaaS cohort retention with fixed denominators, clear retention rules and a worked example covering incomplete periods and reactivated customers.

TL;DR. To calculate SaaS cohort retention, group customers by a consistent starting event, then count how many meet a defined retention condition in each later period. Divide that count by the original cohort size and multiply by 100. Keep the denominator fixed, leave unfinished periods unreported, and decide whether returning customers count before calculating the table. Count customers separately from revenue so upgrades cannot hide customer losses.

What should you define before calculating retention?

A useful retention table starts with a written measurement rule. Define these five things:

DecisionQuestion to answer
Customer unitAre you counting people, workspaces or paying accounts?
Starting eventDoes entry mean signup, activation or first paid subscription?
Cohort groupingAre customers grouped by starting week or starting month?
Retention conditionMust they complete a meaningful action or hold an active paid subscription?
Period and return ruleWhen do you check, and can a returning customer count again?

For this article, the unit is a paying account. Each account enters once, in the calendar month of its first paid subscription. It is retained in a later month if it has an active paid subscription at that month's end. A returning account can count again in its original cohort.

This measures paid-account retention. It does not measure whether someone used the product during the month. For usage retention, replace the subscription condition with a defined action, such as completing a workflow, and label the result accordingly.

Keep related terms consistent with your reporting; the SaaS Metrics Glossary provides a companion reference.

What is the cohort retention formula?

For a particular cohort and later period:

Customer retention = qualifying original-cohort accounts ÷ original cohort size × 100

The numerator includes only accounts from that original cohort. New customers never enter an older cohort's numerator or denominator.

The denominator stays fixed even after customers leave. Otherwise, you would be measuring survival among the remaining customers instead of retention from the original starting group.

Deduplicate accounts before counting. Several users, subscriptions or qualifying events belonging to one account still contribute one retained account when the chosen unit is an account.

How do you build a cohort retention table?

Every number in the examples below is illustrative, including the percentages. They are not benchmarks or measured results.

Suppose three cohorts have reached different ages. Month 1 is the calendar month immediately after the entry month; Month 2 is the following month.

CohortOriginal accountsMonth 1 retainedMonth 2 retainedMonth 3 retained
A108 / 10 = 80%6 / 10 = 60%7 / 10 = 70%
B86 / 8 = 75%5 / 8 = 62.5%Not yet complete
C54 / 5 = 80%Not yet completeNot yet complete

Read across a row to follow one cohort as it ages. Read down a column to compare cohorts at the same age.

For Cohort A, Month 2 retention is six divided by ten. It is not six divided by the eight accounts retained in Month 1. That second calculation answers a different question.

If you display a Month 0 column, label it cohort entry. All original accounts met the entry condition, but that does not mean they all remained subscribed at the end of their entry month.

Calendar grouping also gives customers different lengths of time between entry and the first month-end check. If equal elapsed time matters, use fixed windows measured from each account's starting event. Apply that choice throughout the report.

How should you handle incomplete periods?

An unfinished period is unknown, not zero.

Cohort C has completed Month 1 but has not completed Month 2. Reporting zero for Month 2 would turn missing observation time into apparent churn. Reporting a partial result beside completed months would compare different amounts of observation time.

Use a clear label such as “Not yet complete” and exclude that cell from summaries.

The worked table also shows how to calculate an overall retention figure for one cohort age:

  • Month 1: 18 retained accounts divided by 23 original accounts.
  • Month 2: 11 retained accounts divided by 18 original accounts, using only Cohorts A and B.
  • Month 3: seven retained accounts divided by ten original accounts, using only Cohort A.

These remain illustrative calculations. Add eligible counts before dividing; do not take a simple average of row percentages when cohort sizes differ.

Also distinguish an incomplete period from missing data. If a completed month has an unavailable subscription record, investigate the gap rather than silently classifying the account as churned.

How does reactivation change the calculation?

Under this article's month-end rule, an account can fail the retention condition in one month and meet it again later.

Here is the illustrative movement behind Cohort A:

Account groupAccountsMonth 1Month 2Month 3
Remained subscribed at every check5RetainedRetainedRetained
Left after Month 21RetainedRetainedNot retained
Returned for Month 32RetainedNot retainedRetained
Never retained after entry2Not retainedNot retainedNot retained
Total retained—867

Between Month 2 and Month 3, one account leaves and two return. The retained count rises from six to seven. Neither returning account becomes a new customer or joins a new cohort.

A different question requires a different rule: how many accounts have remained subscribed without interruption? Under that definition, returning accounts stay excluded after their first lapse. In this example, five accounts qualify in Month 3.

Label these views separately. A rising month-end retention curve can reflect reactivation; an uninterrupted-retention curve cannot recover after a lapse.

Why must customer retention stay separate from revenue retention?

Customer retention counts accounts. Revenue retention measures revenue associated with the original cohort. They use different units and answer different questions.

In a separate illustrative example, a cohort starts with ten accounts contributing 1,000 revenue units. Later, eight accounts remain and contribute 1,200 revenue units after upgrades.

Customer retention is eight divided by ten, or 80%. The revenue ratio is 1,200 divided by 1,000, or 120%. Revenue growth does not restore the two lost accounts.

Keep account counts and revenue amounts in separate tables or clearly labelled columns. Document how the revenue view treats expansion, contraction, cancellations and returning customers. Logo Churn vs Revenue Churn explores the distinction between losing customers and losing revenue.

What common mistakes should you avoid?

  • Changing the denominator. Keep the original cohort size throughout its row.
  • Mixing starting events. Do not place trial signups and first-time paying accounts into one cohort without an explicit shared definition.
  • Counting events instead of accounts. Repeated activity by one account contributes one retained account.
  • Moving returning customers. Keep them in their original cohort when measuring first-start retention.
  • Comparing different ages. Compare completed Month 2 cells with other completed Month 2 cells.
  • Treating paid status as product use. Subscription retention and usage retention need separate conditions.
  • Changing rules midway. Recalculate historical cohorts under the new definition or clearly separate the reports.

Before sharing the table, trace one retained account, one lost account and one returning account through the underlying records. Confirm their cohort assignment, period status and contribution to the totals.

What questions come up when calculating cohort retention?

Related reading