Skip to content

Retention

/dashboard/<siteId>/retention Pro

Cohorts by first activity, and what share of each came back.

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 → email

A 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.

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.
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.

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.

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.

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.

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.

  1. Look at Identified first if you have any identified traffic at all.
  2. Check identity coverage before believing the shape. At 4% coverage the grid describes your most engaged 4%.
  3. In Visitors mode, read offset 0 and the same-day return tile, and ignore D1 onwards.
  4. Compare cohorts to each other rather than to an industry number. The absolute level depends on who you can identify; the trend does not.
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