Features · Analyse

Retention cohorts — and a straight answer when they cannot be built

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.

Cohorts by first-seen day

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.

Future cells are never drawn

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.

Identity is hashed, never stored raw

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.

The honest refusal

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

What comes back when retention cannot be computed

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

Documentation

More in analyse

← All features