Cohorts
The Cohorts report groups your customers by when they started paying and follows each group over time. Every row is a cohort, every column is a period since they started, and every cell answers one question: how much of what this group started with is still here?
It's the report to open when you want to know whether you're actually getting better at keeping customers, or just getting bigger. A blended churn rate mixes customers who joined last month with customers who joined three years ago. Cohorts keep each generation of customers apart, so you can see whether newer customers stick around longer than older ones.
You'll find it under Reports → Cohorts, in the churn and retention group, with three tabs:
- Net revenue retention (NRR) – how much of each cohort's starting MRR is still being paid, including upgrades, downgrades, churn and reactivations.
- Logo retention – how many of each cohort's customers are still paying.
- Layer cake – your MRR stacked by the year customers started paying, over your whole history. It has its own article: Layer cake.

For the concept behind the report – what cohort analysis reveals and the patterns to look for – see the cohort analysis guide in the SaaS Metrics Academy.
Overview
The NRR and Logo retention tabs have the same two parts: a cohort chart and a cohort table. They follow the same date range, filters and grouping.
Cohort chart
The chart draws one line per cohort, all lined up on the same starting point (Month 0), plus an Average line. Lining the cohorts up by age instead of by calendar date is what makes them comparable: you can see whether the March cohort is above or below the January cohort at the same point in its life.
The chart always shows retention in percent from the start of each cohort. Click a cohort in the legend to hide or show its line, and use the chart's ⋮ menu to download it as an image.
Cohort table
The table is the classic cohort grid:
| Column | What it shows |
|---|---|
| Subscribed | The period the cohort started paying, for example Mar 2026. When you group the report, this column shows the group instead, such as Nordics or Pro. |
| Start MRR / Count | The cohort's starting MRR (NRR tab) or number of customers (Logo retention tab). Everything to the right is measured against this. |
| M0, M1, M2 … | The cohort at the end of each period since it started. M0 is the period they started in, M1 the next one, and so on. With quarterly cohorts the columns are Q0, Q1 …, and so on for weeks and years. |
| Average | A summary row pinned to the bottom of the table (see below). |
Newer cohorts have had less time to age, so they have fewer cells. That's why the table forms a triangle: the oldest cohort has the longest row and this month's cohort has just one cell.
Hover any cell to see the numbers behind it, for example $4,800 of $5,000 retained (96%) and 9 of 10 customers retained (90%). The tooltip always shows both the revenue and the customer side, whichever tab you're on. Click a cell to see the customers behind it.
How cohorts are defined
- A customer joins the cohort of the period they first started paying. That's the same date as the Paid since field on the customer. Leads and trials don't join a cohort until they pay, so a customer who trialled in February and converted in March is in the March cohort.
- Customers never change cohort. If a customer churns and comes back later, their revenue returns to the row they started in, as a reactivation. They're never counted as a new customer in a later cohort.
- Start MRR is what the cohort started paying in its first period. Count is the number of customers who started in that period.
- Each cell shows what's left of the cohort at the end of that period, compared with its starting value. On the NRR tab, that includes every change in the cohort's MRR – expansion, contraction, churn and reactivation.
Reading a cohort: a worked example
Ten customers start paying in March 2026, for a combined $5,000 in MRR. Here's how their row looks on each tab:
| Start | M0 (Mar) | M1 (Apr) | M2 (May) | M3 (Jun) | |
|---|---|---|---|---|---|
| NRR tab | $5,000 | 105% | 96% | 90% | 98% |
| Logo retention tab | 10 | 100% | 90% | 80% | 80% |
- M0 (March): before the month ends, one customer upgrades and adds $250. The cohort is now paying $5,250 – 105% of what it started with. All ten customers are still paying.
- M1 (April): a customer paying $450 cancels. $4,800 is left (96%), and 9 of 10 customers (90%).
- M2 (May): another customer, paying $300, cancels. $4,500 (90%) and 8 customers (80%).
- M3 (June): two of the remaining customers add seats, worth $400 together. Revenue climbs back to $4,900 (98%), while logo retention stays at 80%.
This is why the two tabs tell different stories. Logo retention can only go down, unless churned customers come back. Revenue retention can go back up, because the customers who stay can grow. A cohort whose NRR climbs above 100% is earning more today than it did on day one, even after its churn.

Three ways to read the table
- Along a row – one cohort ageing. Where does the curve drop, and where does it flatten out?
- Down a column – different cohorts at the same age. If newer cohorts sit higher in the M3 column than older ones, your onboarding, product or targeting is improving.
- Along a diagonal – the same calendar period. Because each cohort starts one period after the one above it, a single calendar month runs diagonally through the table. An event that hit every customer at once, like a price change or a wave of failed payments, shows up as a diagonal stripe.
Table options
The controls above the table, from left to right, change what the cells show. Display, mode and compare only change the table. The interval and the current-period checkbox change the chart too.
| Control | Choices | What it does |
|---|---|---|
| Display | Percent, MRR (or Subscribers on the Logo retention tab) | Show each cell as a percentage of the start value, or as the actual amount or number of customers. |
| Mode | Retained, Churned | Show what's left of the cohort, or what it has lost. Churned is the mirror image of retained: 96% retained is 4% churned. On the NRR tab, churn can be negative when expansion outweighs losses – that's net negative churn. |
| Compare | From start, From previous | From start compares every cell with the cohort's starting value. From previous compares each period with the one before it, so you can see the period-over-period retention rate and spot the point where it levels off. From previous only works with percentages. |
| Interval | Week, Month, Quarter, Year | How long each cohort and each column is. Monthly is the default. Weekly cohorts follow the first day of the week in your reporting settings. |
| Include current period | On, Off | The current period isn't over yet, so the newest cohort and the last cell in each row can still change. Those cells are hatched, and their tooltip says how much of the period has passed. Untick the box to leave the period in progress out of the table and the chart. |
Colors
Cells are shaded from red (worse) through a neutral gray to blue (better). The scale adapts to the numbers in the table you're looking at, so the colors help you compare cells with each other. They aren't a benchmark of what's good or bad in general.
On the NRR tab, 100% is the neutral midpoint. A cohort that keeps all of its revenue is never shown in red, however high the best cohorts go. In Churned mode the scale is reversed, so low churn is blue.
A dash means the cohort had no starting value to measure against, for example a period where nobody started paying.
A hatched cell is a period that's still in progress, so its number will still change.
The Average row
The Average row combines all cohorts into one curve. It's weighted by size: for each column, it adds up what every cohort has retained and divides it by what those cohorts started with. A cohort that started with $20,000 counts four times as much as one that started with $5,000.
Each column only includes the cohorts that are old enough to have reached it. The M1 average draws on almost every cohort, but the cells furthest to the right rest on just the oldest one or two cohorts, so treat them with more care.
The customers behind a cell
Click any cell in the table to see the customers behind it. A list opens under the table, with a heading that puts the cell in context:
- What's left of the cohort at that point, for example $14,100 of $14,905 MRR retained (94.6%), 53 of 64 customers.
- What happened in that period, for example 4 churned, 1 customer changed MRR. For the period in progress it says so far.
Pick which customers to see with the toggle above the list. It opens on the customers who changed in that period:
| Group | Who's in it |
|---|---|
| Changed in month 3 | Customers whose MRR moved in that period: churned, contracted, expanded, came back, paused or resumed. On the Logo retention tab, the customers who left or came back. |
| No change (NRR) / Still customers (Logo retention) | The rest of the cohort that's still paying. |
| Left earlier | Customers who churned in an earlier period, with when they left. |
| All in cohort | Everyone who started in the cohort, in the order above. |
On the NRR tab, every customer has their starting MRR, their MRR at the end of the previous period and at the end of the clicked one, and the change in between. Customers who pay in another currency are converted with the same exchange rates as the cell, so the customers add up to the cell's number. Click a customer to open their page. The download button next to the close button saves the customers you're looking at as a CSV file, the whole group even when it's long. A big cohort loads as you scroll, like the customer list.
The list follows the report's filters, so with a filter on, you see the customers that match it. Changing the date range, the interval or the grouping closes the list, because the cohorts themselves change. The Average row and empty cells aren't clickable.
Group by
By default, cohorts are grouped by first payment date. Use the group by button next to Filter to group them by something else instead. The options come in two kinds, and they place revenue differently:
| Kind | Group by | How rows are filled |
|---|---|---|
| Customer attributes | Market (regions such as North America, DACH, Nordics and APAC), country, state (US only, on the Logo retention tab), currency, customer age, industry (when your customer data includes it), data source, and custom variables you've added to your customers | Each customer stays in one row for the whole table. |
| Subscription attributes | Plan, billing frequency, payment method, pricing model | The revenue follows the subscription. When a customer upgrades to another plan or switches from monthly to yearly billing, the change lands in the row for the new plan or billing frequency. Rows that customers tend to upgrade into can therefore show retention well above 100%. |

When the report is grouped, each row is a group instead of a start month. A row contains every customer in that group who started paying before the end of the selected date range, each lined up on their own start month, so M3 means "three months after each customer started". The date range sets how many columns you see. The Average row combines all groups, weighted by size, and the colors work the same way as in the default view.
Tip: to see month-by-month cohorts for a single segment, keep the default grouping and add a filter instead. For example, filter to the Nordics market or to customers on yearly billing, and the table shows the classic cohort grid for just those customers.
To learn more about grouping across GrowPanel, see Breakdown reports.
Filters
The Cohorts report supports the standard filters, applied to both the chart and the table:
- Date range – which cohorts are shown. With the default grouping, you see the cohorts that started paying inside the range, measured up to its end date. Choose a longer range to see older cohorts and longer rows.
- Reporting currency – amounts are converted to your reporting currency using the exchange rates of each period. If you have customers paying in several currencies, exchange rate moves can nudge a cohort's revenue retention up or down. Tick Use fixed exchange rates in the currency menu to convert everything at the rates from the start of the date range and take currency swings out of the picture (how fixed rates work).
- Additional filters – plan, market and country, billing frequency, payment method, pricing model, customer age, data source, custom variables and saved segments (see all filters).
- Date filters – for example Trial started to look only at customers who came in through a trial, or Paid since to focus on one year's intake.
Exporting the data
Click the Download CSV icon next to the currency selector to export the table exactly as it's set up: one row per cohort with its starting value, and one column per period, in the display, mode and comparison you've chosen.
To build your own cohort analysis in a spreadsheet or BI tool, the MRR per customer per month export under Settings → Exports gives you the raw monthly MRR for every customer. The cohort data is also available through the REST API, the CLI (growpanel reports cohort) and the MCP server.
How cohorts relate to other reports
- Net revenue retention, gross revenue retention and logo retention measure your whole customer base over a trailing window: of everyone paying a month or a year ago, how much is left today? Cohorts follow customers by the month they started, over their whole lifetime. The two answer different questions, so the percentages won't match. Use the retention reports for board-level NRR and GRR figures, and cohorts to see which generations of customers drive them.
- Churn reports show the churn rate across all customers, period by period. Cohorts show who that churn comes from.
- Cancellation timing zooms in on when in their lifetime customers cancel, down to the first day or week.
- LTV turns retention into a single lifetime value. The cohort curves show the shape behind that number.
- Trial outcomes uses the same cohort idea for trials, grouped by the month the trial started.
- MRR movements lists the individual expansions, contractions and cancellations that move the cohort numbers.
Practical tips
- Watch the early drop. The fall from M0 to the first few periods mostly reflects onboarding and fit. Where the curve flattens, you've found your core of customers who stay.
- Compare columns, not just rows. Improvements to onboarding or targeting show up as newer cohorts sitting higher in the same column than older ones.
- Use longer intervals for small cohorts. When only a handful of customers start each month, one cancellation can swing a cell by several points. Quarterly cohorts are steadier.
- Expect steps from yearly plans. Customers on yearly billing churn when their term ends, so their cohorts often look flat for eleven months and then step down at the renewal. Filter on billing frequency to look at monthly and yearly customers separately.
- Pair the two tabs. If logo retention falls but NRR holds up, you're losing smaller customers while the larger ones grow. If both fall, the problem is broader.
Frequently asked questions
Why is M0 above or below 100%?
M0 is the period the customer started in, and it's often a partial period. Anything that happens before it ends already counts: an upgrade in the first weeks pushes M0 above 100% on the NRR tab, and a customer who cancels in their first month pulls it below.
Why don't the cohort numbers match the NRR report?
They measure different groups. The NRR report looks at everyone who was paying at the start of a trailing window, regardless of when they joined. A cohort cell looks at one group of customers who all started in the same period. Both are correct; they answer different questions.
Can I see which customers are behind a cell?
Yes. Click the cell, and the customers behind it open under the table: what changed in that period first, then the rest of the cohort. See The customers behind a cell.
What happens when a churned customer comes back?
Their revenue returns to their original cohort as a reactivation, and they count as retained again on the Logo retention tab. They're never moved to a new cohort.
Do trials count?
No. A cohort starts when the customer first pays, so free trial time isn't part of the curve. To look only at customers who started with a trial, add the Trial started date filter.