What it is
cohort_net_revenue_retention is how much recurring revenue one cohort still holds — after expansion, contraction and churn inside it — against what the same customers held when the cohort opened.
It is not one number for a cohort. A cohort carries a value for every month of its life, and the shape those values make is what the figure exists to show: whether a vintage holds, grows or decays as it ages. Read as a single number, that shape is lost.
It is a ratio, not a percentage: 1.08, not 108. Higher is better, and it can rise above 1.0 — that happens when expansion inside the cohort outweighs what was lost from it.
Membership is frozen when the cohort opens. Every point on the curve describes the same set of customers; nobody is added later, and a customer who churns stays in the population and simply stops contributing revenue to it.
The gross half of the same curve — cohort gross revenue retention — is this calculation without the expansion term, and it cannot rise above 1.0. Read side by side, the gap between the two is what expansion contributed.
How it is calculated
Measured.
Only recurring lines count. One-off charges — onboarding, professional services, training, setup — are excluded, the same way they are excluded from net revenue retention.
A cohort with few accounts in it produces a curve that moves sharply on a single customer. Below the minimum population, the curve is marked as an estimate with the account count shown — the same limit set out under cohort dimension.
Where it comes from
Billing invoice lines, through the customers who belong to the cohort. Billing is the required connection: with no billing there is no revenue on any account, so there is no curve to draw. The value sits on the cohort’s retention curve — one entry per month of that cohort’s life, carrying this figure and its gross counterpart together. Identity resolution matters here more than to most figures. Where a subsidiary is not resolved to its parent, its growth reads as a new customer rather than as expansion — and a new customer is outside the cohort entirely, so that growth never reaches this curve.No read interface or MCP tool serves this value yet — the table above publishes the shape ahead of the doors.
How fresh it is
A cohort’s curve grows by one point for each month the cohort has lived, so its length is the cohort’s age. How much of the curve exists depends on where the cohort stands: open and still accumulating, where the curve is a partial reading; closing at 18 months, where enough of the life has happened to be read seriously; and closed at 24 months, where the population and its history are complete and the curve is that cohort’s record. A point already struck is not restruck to reflect what the cohort went on to do: month 6 stands as month 6’s reading even after month 24 has arrived.Currency and rounding
Neither applies in the ordinary way. This is a ratio of two revenue figures, so it carries no currency of its own. The money behind it is in your single reporting currency, converted where it is recorded under the rules set out in currency; no second conversion happens when the ratio is struck. No rounding rule is set for this value. Beacon applies none of its own and does not fix a number of decimal places to hold it at. A screen or an export may round it for display, so where you compare two points, compare them at the precision you received them rather than the precision a screen showed you. And it is a ratio. 1.08 means the cohort holds 8% more recurring revenue than it opened with. A reader expecting 108 and receiving 1.08 has the same figure, not a different one.What changes it
Expansion, contraction and churn among the customers in the cohort, and nothing else. A customer won after the cohort opened cannot change it. A resolved identity can, by reclassifying a subsidiary’s growth from new business into expansion inside the cohort. Once the cohort is closed, nothing changes it.What it is not
- Not a percentage. 1.08, never 108.
- Not one number for the cohort. It is a value per month, and the curve is the figure.
- Not
cohort_gross_revenue_retention. Same population, same months, without expansion — and it cannot rise above 1.0. Both are published because the distance between them is where expansion shows up. - Not
net_revenue_retention. That reads your whole customer base over a period you choose; this reads one vintage across its own life. - Not a forecast, and in particular not the twenty-four-month retention projection Beacon makes for an account. This is what the cohort did; that is what it is expected to do, and the two are separate values.
- Not a count of customers kept. That counts logos; this weighs revenue, and the two diverge whenever the customers who left were larger or smaller than average.