Cohort Retention Analyzer
Retention, churn and revenue by cohort — a heatmap triangle from any CSV or Excel export.
1. Activity or order data
One row per order, login or other activity, with a user or customer ID and a date. A signup date and an amount are optional.
Or paste the table (from Excel, Google Sheets or a CSV)
2. Columns and cohorts
3. Retention by cohort
The Excel file has one sheet per figure — retention, rolling retention, churn, active users and, with a revenue column, revenue — with the same colours, plus the settings used.
About the Cohort Retention Analyzer
A cohort retention table groups your users or customers by when they started — the week or month of their first order, signup or visit — and shows, for every later period, how many of each group came back. It answers questions a single retention rate hides: do people who joined after the redesign stay longer, does retention level off after the third month, and which months brought customers who kept buying?
Open an export with one row per order, login or event — any file with a user or customer ID and a date — and the analyzer builds the triangle: one row per cohort, one column per period since joining, coloured from low to high. Switch between retention, rolling retention, churn, active users and, with an amount column, revenue, revenue retention and cumulative revenue per user. Download every table as a coloured Excel workbook or as CSV. Everything runs in your browser: the file is not uploaded.
How to use it
- Open a CSV or Excel file (or paste the table) with one row per order, login or other activity. It needs a user or customer ID and a date; a signup date and an amount are optional. No file at hand? Try it with made-up sample orders.
- Check the columns the analyzer picked: the ID, the activity or order date and, if you have one, the revenue column.
- Choose how users get their cohort: their first activity in the data, or a signup or first-order date column.
- Pick days, weeks, months or quarters. Dates are recognised in most forms (2026-01-15, 15/01/2026, 01/15/2026, Jan 15, 2026, Unix time, Excel dates); if 03/04 could be read either way, choose the order.
- Read the triangle and switch the figure under Show. Then Download Excel (every table, with the colours and the settings), Download CSV, or Copy table to paste into a spreadsheet.
Examples
customer_id,order_date C1,2026-01-05 C1,2026-02-28 C2,2026-01-20 C3,2026-02-01
Cohort Users Month 0 Month 1 Jan 2026 2 100.0% 50.0% Feb 2026 1 100.0% Average 3 100.0% 50.0%
C1 and C2 joined in January and only C1 ordered again in February, so January’s month-1 retention is 1 of 2 = 50%.
A customer orders in months 0, 1 and 3, but not in month 2.
Retention, month 2: not counted (no order that month) Rolling retention, month 2: counted (they came back later)
The January cohort spends 1,000 in January and 450 in March.
Revenue retention, month 2 = 450 ÷ 1,000 = 45%
Common uses
- Checking whether customers who joined after a change (a new onboarding, price or product) come back more often than earlier ones.
- Seeing when retention levels off, to plan win-back e-mails or offers before most people drop away.
- Repeat-purchase rates of an online shop by month of first order, with the revenue each cohort brings later.
- Weekly retention of an app or game from an event export (user ID and event time).
- Monthly cohort tables for an investor update or a board pack, as a coloured Excel sheet.
How the figures are worked out
Each user belongs to one cohort: the period of their first activity in the file, or of their signup or first-order date when you choose that column. Period 0 is the cohort’s own period, period 1 the next one, and so on. A user counts once in a period however many rows they have in it.
- Retention % = users active in period k ÷ users in the cohort.
- Rolling retention % = users active in period k or any later period ÷ users in the cohort. It never rises from one period to the next, and it counts people who skip a month and come back.
- Churned % = users not seen in period k or any later period ÷ users in the cohort — that is, 100% − rolling retention.
- Active users = the number behind retention.
- Revenue = the amounts of the cohort’s rows in period k; revenue retention % = revenue in period k ÷ revenue in period 0; cumulative revenue per user = revenue in periods 0 to k ÷ users in the cohort.
The Average row weights each cohort by its number of users (users active ÷ users, over all cohorts that have reached that period), so a small cohort cannot swing it. For counts and revenue the bottom row is the Total.
Incomplete periods
When the data ends partway through its last week, month or quarter, the figures for that period are too low — people who would still come back that month have not yet had the chance. That period is the last cell of every row (the diagonal of the triangle). By default it is left out, together with a newest cohort that falls entirely in it; untick Leave out the last period… to see those cells in italics with an asterisk. Incomplete cells never count in the averages.
Reading the triangle
Each row is a cohort, each column a period since joining, and the colour runs from faint (low) to strong (high), scaled to the largest value after period 0. Read across a row to see one cohort fade; read down a column to compare cohorts at the same age — if month-3 retention rises in newer cohorts, something improved. The cells on one diagonal happened in the same calendar period, so a dark or pale diagonal points to something that happened in that month (a sale, an outage) rather than to the cohorts.
Dates, IDs and amounts
Dates are recognised in ISO form (2026-01-15, with or without a time), numeric day/month/year or month/day/year forms (the data decides when a day is above 12; otherwise your country’s order is used and you can change it), English month names (15 Jan 2026, Jan 15, 2026), Unix time in seconds or milliseconds (whose days are counted in UTC) and Excel serial numbers; date cells in a workbook are read directly. A written date is taken as written: the time and any time zone are ignored. IDs are compared after removing spaces around them and, unless you untick it, ignoring letter case, so an e-mail address in capitals is the same customer. Amounts may be written as 1,250.50, 1.250,50, $25 or (12.50); cells that are not numbers count as nothing and are reported.
Limitations
- Files up to 100 MB as CSV or 50 MB as a workbook; everything is calculated in your browser’s memory.
- Only users who appear in the file are counted. To count people who signed up and never came back, the file needs a row for them with their signup date (choose the signup column).
- Tables show up to 120 periods; daily cohorts over several years are easier to read by week or month.
- Revenue is added up as given: there is no currency conversion, and refunds lower it only if they are rows with negative amounts.
Privacy
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
What is a cohort retention table?
A table with one row per group of users who started in the same period (a cohort) and one column per period after that, showing the share of each group still active. It shows how retention changes with the age of a customer and between groups that joined at different times.
What is the difference between retention and rolling retention?
Retention counts users active in that period. Rolling (or unbounded) retention counts users active in that period or later, so someone who skips a month and comes back still counts. Rolling retention is smoother and never goes up; classic retention shows the rhythm of repeat visits.
How is churn worked out?
A user counts as churned from a period on when they have no activity in that period or any later one in your data — so churned % is 100% minus rolling retention. Someone who returns after a gap is not counted as churned in the gap.
Why are the newest cohort or the last column missing?
Because the data ends partway through that period, and incomplete figures look like a drop. Untick Leave out the last period when the data ends partway through it to show those cells in italics; they still do not count in the averages.
Which exports work?
Any table with one row per activity and a user or customer ID and a date — an orders export from an online shop, payments or subscription records, sign-ins, or app events. Extra columns are ignored. If each row is one customer with a list of dates, unpivot it first in the CSV Transpose & Unpivot tool.
Is my data uploaded?
No. The file is read and the tables are worked out in your browser; nothing is sent to MySmartCoPilot or anyone else.