Retention
/dashboard/<siteId>/retention Pro
Cohorts by first activity, and what share of each came back.
Read this first
Section titled “Read this first”The default Visitors mode counts the raw visitor id — a salted hash that rotates every UTC day. It is exact for same-day return and structurally near zero from D1 onwards, because tomorrow the same person is a different id.
That is not a bug and it is not a measurement gap in your traffic. It is what a cookieless id can and cannot see.
Identified mode is the honest multi-day instrument. It retains a durable id
that you supply through tracing.identify(), taken from
the first of these keys the visitor has:
userId → user_id → id → emailA visitor carrying none of them is excluded from the grid entirely rather than counted as churned, so every cohort describes only the population that can actually be measured.
The grid
Section titled “The grid”One row per cohort, one column per offset.
- Cohorts are cut on first activity inside the current range, so the grid always describes the window on screen. Changing the range changes the cohorts.
- Offset 0 is the cohort period itself and is always 100%.
- A cell whose period has not started yet comes back empty, not zero. “Not yet” and “nobody came back” are different facts and the grid draws them differently.
- At most 60 cohorts are kept, newest first, so a 12-month range is not 365 rows.
Granularity and periods
Section titled “Granularity and periods”| Control | Parameter | Values | Default |
|---|---|---|---|
| Day / Week | by |
day, week |
day |
| Periods | periods |
8, 15, 22, 31 for days; 5, 9, 13 for weeks |
15 days / 9 weeks |
| Visitors / Identified users | identity |
visitor, identified |
visitor |
Switching between day and week clears periods, so a 31-day setting never
leaks into a week grid. A periods value that is not in the list for the
current granularity falls back to the default.
Weeks are cut in the site timezone; ISO weeks, so they start on Monday.
The curve
Section titled “The curve”Below the grid, retention by offset across every cohort old enough to have that column.
It is weighted by cohort size, not a mean of rates: a four-person cohort does not swing the curve as hard as a four-hundred-person one. Each point also reports how many cohorts contributed, which falls as you move right.
Milestones
Section titled “Milestones”Three summary figures, read off the curve:
| Granularity | Milestones |
|---|---|
| Day | D1, D7, D14 |
| Week | W1, W4, W8 |
A milestone beyond the number of periods you asked for is not shown.
Same-day return
Section titled “Same-day return”In Visitors mode only, an extra tile: the share of visits in the slice that were not the visitor’s first that day.
It is the one return metric a rotating id can measure exactly, and it is ranked inside the filtered set, so it always describes the slice on screen. A visit belongs to the day it started on, even if it ran past midnight.
Identity coverage
Section titled “Identity coverage”Identified mode also reports how much of your traffic it can see:
| Figure | Meaning |
|---|---|
| Visitors | Distinct visitor ids in the range |
| Identified | How many of them carried one of the four trait keys |
| Users | Distinct durable ids behind them |
| Rate | Identified ÷ visitors |
A low rate does not make the grid wrong — it makes it narrow. Raise it by
calling identify() on every authenticated page load, not once at sign-up.
How to read a cookieless retention grid
Section titled “How to read a cookieless retention grid”- Look at Identified first if you have any identified traffic at all.
- Check identity coverage before believing the shape. At 4% coverage the grid describes your most engaged 4%.
- In Visitors mode, read offset 0 and the same-day return tile, and ignore D1 onwards.
- Compare cohorts to each other rather than to an industry number. The absolute level depends on who you can identify; the trend does not.
URL parameters
Section titled “URL parameters”| Parameter | Values | Default |
|---|---|---|
range |
the nine range keys | 30d |
| all 26 filter keys | see Filters | none |
by |
day, week |
day |
identity |
visitor, identified |
visitor |
periods |
see the table above | granularity default |
Related
Section titled “Related”- Identify
- How visitors are counted
- Revenue — where a durable identity comes for free