SoF Standard Definitions v1.0

Cohort retention

Cohort retention follows each vintage of customers on its own curve, measured at the end of each period against what they paid when they joined.

Also Cohort analysis · Retention triangle · Vintage retention · Logo retention

The standard

A cohort is the set of customers whose first month with MRR above zero falls in a given period. Each member's base is its MRR in its own joining month; each cell measures the cohort at the last month of the period being reported, clamped to the data cutoff. Cohort triangles use an MRR-only basis: usage is excluded by design.

At a glance
Formula
cell = Σ cohort MRR at the period end ÷ Σ cohort MRR in the joining month — net, gross-capped, and by logo
Unit
%
Bounded
gross ≤ 100% · net has no ceiling
Defaults
cohort = first MRR month · MRR-only basis (usage excluded) · period-end anchoring · comped excluded (locked)
Biggest lever
Anchoring at the period start — an 80-point artifact in the worked example
Read with
NRR · GRR · Churn analytics
Appears in
Data-room cohort file · Board deck · Product-market-fit narrative
Switches
1 · 1 locked — see the choices

What it measures

Aggregate retention tells you how the base behaved. Cohort retention tells you whether the business is changing — because it separates customers by when they arrived and lets each vintage be read on its own curve.

This is the only view that answers questions such as: are customers acquired this year retaining better than those acquired two years ago? Does the decay flatten after a certain age, and where? Did a pricing or packaging change improve the durability of what came after it?

Two triangles are produced. The revenue triangle tracks MRR, in both a net form (expansion included) and a gross form (each member capped at its own starting MRR, as in GRR). The logo triangle tracks how many of the cohort’s customers are still active. They diverge in an informative way: revenue retention holding up while logo retention falls means the survivors are expanding enough to mask departures — durable-looking revenue on a narrowing base.

How it is computed

  1. Assign cohorts. A customer’s cohort is its first month with MRR above zero. Comped customers are excluded under the locked default, and a customer with no qualifying month has no cohort.
  2. Fix each member’s base at its own joining month. Not at the cohort period’s start. This matters as soon as the granularity is coarser than monthly: a customer joining in March belongs to Q1, and its base is its March MRR.
  3. Measure each cell at the period end. For a quarterly cohort, cell k is measured at the last month of the k-th quarter after the cohort’s quarter began; for yearly, the last month of the k-th year. A period still in progress at the data cutoff is measured at the cutoff rather than dropped.
  4. Compute the ratios. Net = Σ members’ MRR at the measured month ÷ Σ bases. Gross = Σ min(MRR at measured month, own base) ÷ Σ bases. Logos = count active at the measured month ÷ count active at base.

Period-end anchoring is not a stylistic choice; measuring at the period start treats every member who joined later in the period as an immediate total loss. A customer joining in March and never churning would read 0% at its own Q1 cell — an artifact of the anchor, indistinguishable at a glance from catastrophic churn.

Worked example

A 2024-Q1 cohort with two members, both retained:

MemberJoinedMRR at joining
Alpha2024-01100
Beta2024-03400

Base = 500. Cell 0 is measured at 2024-03 (the quarter’s last month), where both are live: 500 ÷ 500 = 100%. Cell 1 is measured at 2024-06, and so on.

Measured at the quarter’s start instead, cell 0 would read 100 ÷ 500 = 20%, because Beta did not exist in January. Same customers, same perfect retention, an 80-point difference from the anchor alone.

The choices that change the number

  • Granularity. Monthly cohorts are the most precise and the noisiest — small monthly cohorts produce violent percentages. Quarterly is usually the best compromise; yearly is for long-horizon shape. All three are computed from the same underlying customer-months, so switching restates nothing.
  • The cohort trigger. First MRR month is the standard. First invoice would place customers a month or two earlier for prepaid contracts; first contract signature earlier still. The triangle shifts accordingly.
  • MRR-only basis (by design). Usage is excluded from cohort triangles even when retention elsewhere is usage-inclusive, because usage volatility swamps the subscription decay curve the triangle exists to show. This is a deliberate divergence from the NRR basis and is stated on the table.
  • Comped exclusion, as everywhere.

How it is misread

Reading immature cohorts as trends. The most recent cohort has the fewest observable periods and the smallest sample. Its early cells are not evidence of improvement.

Comparing cells at different ages. A cohort at month 6 and one at month 24 are not comparable. Triangles are read down the columns — same age, different vintages — not across rows.

Small-cohort noise treated as signal. A cohort of three customers moves 33 points when one leaves. Always read cell values against the cohort’s base size.

Averaging the triangle into one number. The triangle’s information is its shape. Collapsing it discards exactly what it was built to reveal.

What it cannot tell you

Cohort retention describes what happened to a vintage; it cannot attribute the cause. A cohort acquired during a promotional period may retain worse because of the discount, the channel, the segment, or the macro environment — the triangle shows the divergence and is silent on which. Slicing cohorts by segment or channel narrows the question but never closes it.

How to state it

A disclosure that travels with the number. Replace the braces; keep the parenthesis.

Cohort retention, {granularity} (SoF Standard v1.0: cohorts by first MRR month · period-end cells · MRR-only basis)

Before you quote it

  • Read down columns, same age?
  • Immature cohorts flagged?
  • Base sizes shown beside the percentages?
  • Usage exclusion stated?

Related questions

How should a cohort table be read?
Down the columns, not across the rows. A column compares different vintages at the same age; a row follows one vintage through time. Comparing a cohort at month six with one at month twenty-four says nothing.
Why is each cell measured at the period end?
Because measuring at the period start treats every member who joined later in the period as an immediate total loss: a customer joining in March who never churns would read zero in its own first-quarter cell. Period-end anchoring, with each member's base fixed at its own joining month, removes the artifact.
Should cohorts be built on signup, first invoice or first MRR?
The standard uses the first month with MRR above zero. First invoice would place prepaid customers a month or two earlier; first signature earlier still. Any anchor is defensible if stated; the triangle shifts accordingly.
Why is usage excluded from cohort triangles when NRR includes it?
Because usage volatility swamps the subscription decay curve the triangle exists to show. This is a deliberate divergence from the NRR basis and is stated on the table.
How many months of data before a cohort is meaningful?
The most recent cohort has the fewest observable periods and the smallest sample, so its early cells are not evidence of anything. Read cell values against the cohort's base size, and treat a cohort of three customers, which moves 33 points when one leaves, as noise.
Cite this definition

Strategy of Finance. “Cohort retention.” SoF Standard Definitions v1.0 (2026-09-18). https://www.strategyoffinance.com/standards/cohort-retention/