Features · Analyse
A cohort matrix of who came back, day by day. It needs identified users, and when they are absent Vitrus tells you why instead of rendering a grid of zeros.
Each person joins the cohort of the day they were first seen; the matrix shows what share returned on each following day, plus an average curve.
For a cohort from yesterday, day 3 has not happened. Writing 0% there would present the unmeasured as measured, so the cell is left empty and labelled as such.
vitrus.identify(user.id) sends your own user id; the server hashes it per site. Even if you pass an email address, only the hash reaches disk, and the same person cannot be joined across two of your sites.
With no identified users the API returns reason, message and remedy. A tool that shows you a retention number it cannot compute has taught you something false.
The evidence
{
"available": false,
"reason": "no_identity",
"message": "Retention cannot be computed: no identified users on this site…",
"remedy": "Call vitrus.identify(\"your-user-id\") when a user signs in.",
"sql": "SELECT identity, MIN(ts) … WHERE identity <> ''",
"params": ["site_id", 1757635200000, 1758240000000]
}
Even the refusal ships with the query that produced it.