Retention and Cohorts
Retention definitions and curves, cohorts, churn, stickiness, activation, and survival analysis.
13 questions
JuniorTheoryVery commonN-day, unbounded (rolling) and bracket retention read differently off one dataset — how does each decide a user is retained?
N-day, unbounded (rolling) and bracket retention read differently off one dataset — how does each decide a user is retained?
N-day counts a user only if they return exactly on day N. Unbounded (rolling) counts them if they return on day N or any later day. Bracket counts a return anywhere in a window like days 7–13 — so rolling always reads highest.
Common mistakes
- ✗Assuming N-day, rolling and bracket yield the same retention number
- ✗Confusing rolling (day N or later) with classic N-day (exactly day N)
- ✗Quoting a retention figure without saying which definition produced it
Follow-up questions
- →Which definition fits a weekly-habit product, and why?
- →How does the definition choice widen or shrink the day-1 to day-30 gap?
MiddleTheoryVery commonHow can aggregate (snapshot) retention rise every month while every individual signup cohort is actually retaining worse?
How can aggregate (snapshot) retention rise every month while every individual signup cohort is actually retaining worse?
Aggregate retention pools users of every tenure, so the largest cohorts dominate. A surge of new users with high early retention lifts the blended figure even while every cohort retains worse — a mix shift, like Simpson's paradox. Cohorts fix it by holding tenure fixed.
Common mistakes
- ✗Believing the aggregate must fall if every cohort falls
- ✗Blaming seasonality instead of a shift in cohort sizes
- ✗Trusting a blended retention line without splitting by cohort
Follow-up questions
- →How would you spot this mix shift in a dashboard before it misleads?
- →When is aggregate retention still the right number to report?
JuniorTheoryCommonIn a product with no subscription, what counts as churn — and why is the cutoff a business decision, not a formula?
In a product with no subscription, what counts as churn — and why is the cutoff a business decision, not a formula?
With no cancel event, churn has no hard signal, so you define it as inactivity beyond a chosen window. The window follows the product's usage rhythm — 14 days for a daily app, months for travel. No number is universal; state it as a judgement call.
Common mistakes
- ✗Applying a fixed 30-day cutoff regardless of the product's rhythm
- ✗Assuming churn is unmeasurable without an explicit cancel event
- ✗Picking an inactivity window without justifying it to stakeholders
Follow-up questions
- →How would you pick the window length from the usage-gap distribution?
- →How does the chosen window interact with the retention definition you report?
JuniorDesignCommonA cohort retention triangle fills your screen — each row a monthly signup cohort, each column months-since-signup, each cell the percent of that cohort still active. The PM wants your read in thirty seconds. What do you look at first to judge whether retention is healthy — reading across cohorts or down a cohort's life — and what single pattern would make you distrust the chart and stop before drawing any conclusion?
A cohort retention triangle fills your screen — each row a monthly signup cohort, each column months-since-signup, each cell the percent of that cohort still active. The PM wants your read in thirty seconds. What do you look at first to judge whether retention is healthy — reading across cohorts or down a cohort's life — and what single pattern would make you distrust the chart and stop before drawing any conclusion?
Read one column (say month-3) across cohorts — it compares them at equal age, showing if newer ones retain better. Then check each row decays smoothly. What stops you: immature bottom-right cells, where too few months have passed, so a recent 'rise' is incomplete data, not real.
Common mistakes
- ✗Comparing cohorts at different ages instead of down one column
- ✗Trusting the immature bottom-right cells of the newest cohorts
- ✗Reading a single blended average instead of the cohort structure
Follow-up questions
- →How would seasonality in signup months show up in the triangle?
- →What would a successful retention improvement look like cell by cell?
JuniorTheoryCommonA stickiness ratio — DAU/MAU — is 0.2 for one app, 0.6 for another; what does the gap mean and which products should ignore it?
A stickiness ratio — DAU/MAU — is 0.2 for one app, 0.6 for another; what does the gap mean and which products should ignore it?
DAU/MAU approximates how many days a month the average user is active — 0.2 is about 6 days, 0.6 about 18 — so higher means a stronger daily habit. It only fits products meant for daily use; for rare ones like tax or travel apps, a low ratio is expected.
Common mistakes
- ✗Treating a high DAU/MAU as good for every product category
- ✗Reading DAU/MAU as a revenue or churn figure rather than visit frequency
- ✗Setting a universal stickiness target across unrelated product types
Follow-up questions
- →When would WAU/MAU be a fairer denominator than DAU/MAU?
- →How can DAU/MAU stay flat while the underlying user mix shifts?
MiddleDesignCommonYou shipped an onboarding change to a new cohort. Day-1 retention is up 10% versus control, but day-30 retention is down 4%. Leadership wants a launch decision this week. Which number do you believe for the long-term health call, how do you reconcile the two moving in opposite directions, and what would you measure before rolling it out to everyone?
You shipped an onboarding change to a new cohort. Day-1 retention is up 10% versus control, but day-30 retention is down 4%. Leadership wants a launch decision this week. Which number do you believe for the long-term health call, how do you reconcile the two moving in opposite directions, and what would you measure before rolling it out to everyone?
Trust day-30: it sits on the flatter curve and predicts durable value, while day-1 reflects novelty. The split means the change pushes more users past day-1 but activates weaker-fit ones who leave by day-30. Judge the day-30 plateau by cohort before rollout.
Common mistakes
- ✗Trusting the larger day-1 move over the load-bearing day-30 number
- ✗Averaging opposite-direction retention numbers into one score
- ✗Assuming contradictory day-1 and day-30 moves must be a tracking bug
Follow-up questions
- →What user segment would explain up day-1 but down day-30?
- →How long would you run the holdout before deciding?
MiddleDesignCommonDefine a growth-team user-lifecycle model that labels every user each period as new, current (active last period and this one), resurrected (active this period after a gap), dormant (recently active but not this period), or churned (inactive past the window). Explain which boundary between two of these states depends entirely on your churn definition, and name one growth action each state unlocks for the team.
Define a growth-team user-lifecycle model that labels every user each period as new, current (active last period and this one), resurrected (active this period after a gap), dormant (recently active but not this period), or churned (inactive past the window). Explain which boundary between two of these states depends entirely on your churn definition, and name one growth action each state unlocks for the team.
The dormant-versus-churned line is set by the churn window: dormant is inactive-but-recent, churned is past the cutoff. Each state unlocks an action — new: activate; current: deepen habit; resurrected: learn what won them back; dormant: win back early; churned: reactivate.
Common mistakes
- ✗Thinking the state boundaries do not depend on the churn window
- ✗Collapsing all five states into one re-engagement action
- ✗Prioritizing churned win-back over cheaper dormant win-back
Follow-up questions
- →Why is a dormant user usually cheaper to win back than a churned one?
- →How would you measure whether a resurrected user stays resurrected?
MiddleTheoryCommonA healthy retention curve must flatten to a plateau. What does a curve still falling at month 12 tell you about the product?
A healthy retention curve must flatten to a plateau. What does a curve still falling at month 12 tell you about the product?
A plateau means a stable core found lasting value — a long-term audience persists as casual users drop off. A curve still falling at month 12 has no floor: every cohort eventually leaves, signalling no durable core and a business you cannot grow by acquisition alone.
Common mistakes
- ✗Reading a flattening curve as stalled growth rather than a healthy core
- ✗Assuming every curve plateaus eventually if you just wait longer
- ✗Believing more acquisition can lift a curve that never flattens
Follow-up questions
- →How would you locate the plateau height from a noisy curve?
- →Why can acquisition hide a missing plateau in a topline metric?
SeniorDebuggingCommonRetention jumped the week you redefined an 'active user' — real gain or definitional artifact?
Retention jumped the week you redefined an 'active user' — real gain or definitional artifact?
Almost certainly definitional: widening 'active' from a core action to any app-open inflates every retention cut, so it steps up with no behaviour change. Recompute both weeks on one fixed definition — an artifact makes the jump vanish, while a real gain shows under the old definition.
Open full question →Common mistakes
- ✗Crediting a metric jump that lands exactly on a definition change
- ✗Comparing to an external benchmark instead of recomputing on one definition
- ✗Assuming the broader definition is automatically the more correct one
Follow-up questions
- →How would versioning metric definitions prevent this confusion?
- →What backfill would let you compare both weeks fairly?
MiddleDesignOccasionalYour DAU/MAU stickiness has sat flat at 0.4 for two quarters. You plot the power-user curve — the histogram of how many of the last 28 days each active user was present — and it is smile-shaped: a big bump at 1–2 days and another at 25–28 days, with a thin middle. What does that bimodal shape reveal about your user base that the single 0.4 number completely hides, and how would it change where you focus?
Your DAU/MAU stickiness has sat flat at 0.4 for two quarters. You plot the power-user curve — the histogram of how many of the last 28 days each active user was present — and it is smile-shaped: a big bump at 1–2 days and another at 25–28 days, with a thin middle. What does that bimodal shape reveal about your user base that the single 0.4 number completely hides, and how would it change where you focus?
The 0.4 mean hides two groups — a casual group active 1–2 days and a core active almost daily, with few between. One number implies a uniform mid-engagement user who does not exist. Growth should protect the power-user core and convert casuals, not chase the average.
Common mistakes
- ✗Reading the flat average as a real typical-user engagement level
- ✗Dismissing the daily-core bump as outliers to trim
- ✗Confusing a bimodal frequency curve with entering and exiting cohorts
Follow-up questions
- →How would you define the power-user threshold on this curve?
- →Which bump would you target first to move the business, and why?
MiddleCodeOccasionalBuild a weekly cohort retention table in SQL from a signups and an activity table
Build a weekly cohort retention table in SQL from a signups and an activity table
Join activity to signups on user_id, derive weeks_since_signup = active_week - signup_week, then GROUP BY signup_week, weeks_since_signup with COUNT(DISTINCT user_id). Each cohort's week-0 count is the denominator for its retention rate.
Common mistakes
- ✗Grouping by calendar week instead of weeks-since-signup
- ✗Using total signups as the denominator instead of each cohort's week 0
- ✗Using COUNT(*) instead of COUNT(DISTINCT user_id) and double-counting
Follow-up questions
- →How would you switch this from weekly to N-day cohorts?
- →How would you fill missing weeks so gaps show as 0, not absent rows?
SeniorDesignOccasionalAn analyst reports that users who join a Group retain 3× better than users who never join one, and a VP wants to push every user into a Group next quarter. Design the analysis that would actually justify — or kill — that intervention. Address why the raw 3× cannot be taken at face value, what study you would run instead, and what result would make you recommend against the rollout even if the correlation stays strong.
An analyst reports that users who join a Group retain 3× better than users who never join one, and a VP wants to push every user into a Group next quarter. Design the analysis that would actually justify — or kill — that intervention. Address why the raw 3× cannot be taken at face value, what study you would run instead, and what result would make you recommend against the rollout even if the correlation stays strong.
The 3× is confounded — Group joiners are more engaged, so the gap is selection, not cause. Test it by randomizing an encouragement to join and comparing retention of nudged versus not (intent-to-treat). Advise against rollout if low-intent joiners show no lift, despite a strong correlation.
Common mistakes
- ✗Reading the 3× as causal when joiners self-select on engagement
- ✗Using a before/after on joiners as if it removed confounding
- ✗Judging the rollout by the correlation size instead of a randomized lift
Follow-up questions
- →Why is an encouragement (intent-to-treat) design fairer than forcing joins?
- →What confounder besides prior engagement could inflate the 3×?
SeniorTheoryRareWhy do still-active (censored) users break a naive average lifetime, and how does the survival method Kaplan-Meier handle them?
Why do still-active (censored) users break a naive average lifetime, and how does the survival method Kaplan-Meier handle them?
Averaging only completed lifetimes drops the longest-lived, still-active users, so it underestimates lifetime. They are right-censored: known to last at least this long, not their final value. Kaplan-Meier keeps them, building the survival curve from churn among users at risk each period.
Common mistakes
- ✗Averaging only churned users and dropping the still-active ones
- ✗Assuming censored users leave the mean lifetime unbiased
- ✗Thinking Kaplan-Meier imputes a churn date rather than using at-risk sets
Follow-up questions
- →What does the survival curve's plateau imply about long-term retention?
- →How does heavy censoring widen the estimate's uncertainty?