← All posts

How to measure N-day retention in games

Retention is the single number that decides whether a game has a future. You can buy installs forever, but if players do not come back, you are pouring acquisition spend into a leaky bucket. This guide is about measuring N-day retention in a way you can actually act on.

What N-day retention actually means

N-day retention answers one question: of the players who started on day 0, what fraction came back on day N?

The standard definitions are:

  • Day 1 retention (次留) — came back the day after install.
  • Day 7 retention (7 留) — came back on the 7th day.
  • Day 30 retention (30 留) — came back on the 30th day.

Note the word on, not within. Classic N-day retention is a same-day-return metric: a player who plays on day 0, skips days 1–6, and returns on day 7 counts toward D7 but not D1. This is different from rolling/unbounded retention (“returned on day N or later”), and mixing the two is the most common source of confused dashboards. Pick one definition and label it everywhere. See the retention rate glossary entry for the formula:

Dn retention = users active on day N / users in the cohort on day 0

Defining the anchor event

Before you can compute retention you have to decide what “active” means. In Keentics you do this by choosing two events:

  1. The cohort event — what puts a player into a day-0 cohort. Usually first_open, account_create, or tutorial_start. For paid acquisition analysis, anchor on first_open so it lines up with install dates.
  2. The return event — what counts as coming back. A bare app_open is fine, but a meaningful action like level_start or session_start filters out players who launched the app by accident and bounced.

A common trap: anchoring the cohort on a late event (say level_5_complete) while measuring return on app_open. That inflates D1 because you have already filtered to engaged players. Keep the cohort definition honest — it should represent the population you actually acquired.

Reading the retention matrix

The retention matrix (留存矩阵) is a triangle. Each row is a cohort — players who joined on a particular day. Each column is days-since-join. The diagonal shape comes from the simple fact that recent cohorts have not had time to age yet.

How to read it:

  • Scan down a column (e.g. the D7 column) to see whether D7 is improving or decaying across cohorts. This is your trend line for product changes.
  • Scan across a row to see a single cohort’s decay curve. Healthy games flatten out — the curve stops dropping and forms a “retention floor” of committed players.
  • Watch the shape, not just D1. Two games can share a 40% D1 and look identical, then diverge wildly by D30. The floor is what compounds into LTV.

Open the retention analysis view to build this matrix without writing SQL, or drop into read-only SQL if you want a custom window.

Segment by channel and version

An aggregate retention number hides everything interesting. Always split it:

  • By acquisition channel / campaign. A Facebook cohort and a TikTok cohort can have the same install volume and completely different D7. This is the input to honest LTV and ROAS math — retention is the spine of payback.
  • By app version. When you ship a tutorial change, compare the D1 of cohorts before and after the build. This is the fastest read on whether onboarding helped or hurt.
  • By platform, region, device tier. Low-end Android often retains worse for performance reasons, not design ones.

Common mistakes

  • Mixing N-day and rolling retention in the same report. Decide once.
  • Counting day 0 as day 1. Off-by-one errors make your numbers look better than your competitors’ for no real reason.
  • Reading new cohorts too early. A cohort that is 3 days old has no D7 yet. Empty cells are not zeros.
  • Ignoring bots and QA traffic. Automated opens can pad your day-0 cohort and crater apparent retention. Filter them before the cohort is formed.
  • Optimizing D1 in isolation. A flashy day-1 hook that does not deepen the game lifts D1 and leaves D30 flat. Chase the floor.

Retention is not one number — it is a curve with a floor, sliced by where players came from and what build they got. Measure it that way and it stops being a vanity metric and starts telling you what to build next. From there, game analytics like LTV and ROAS fall out almost for free.