User Retention & Engagement Questions
Measuring and improving how users stick with a product after they first convert: retention rate and cohort retention curves (day 1, day 7, day 30, and longer horizons), churn rate, reactivation and resurrection of lapsed users, and engagement-depth signals such as DAU, WAU, MAU, and the DAU/MAU stickiness ratio. Covers defining and computing these metrics, including basic SQL and event-log implementations, diagnosing where and why a retention curve breaks (onboarding gaps, feature-adoption gaps, seasonal or cohort-specific effects), designing experiments and product interventions that deepen habitual usage, cohort-based lifetime value (LTV), and communicating retention findings to stakeholders. This is the post-acquisition, repeat-usage side of the user lifecycle: getting a first-time visitor through signup or first purchase is covered by the companion topic Conversion Funnel Optimization, and pure-SQL implementation depth at large scale (approximate-distinct computation, survival-curve modeling, multi-state subscription churn state machines, and standalone timezone-aware day bucketing) is covered by the companion topic Advanced SQL: Metric Monitoring, Anomaly Detection, and Data Correctness at Scale.
You will run a reactivation email campaign. List the key short-term and long-term metrics you will track to determine success. Explain why open and click rates might be misleading and which downstream metrics better reflect long-term retention improvement.
Sample Answer
Direct answer
Track short-term delivery metrics (opens, clicks) only as diagnostic signals that the email itself worked mechanically, and track medium- and long-term DOWNSTREAM metrics (did the user actually return and DO something in the product, and did they stay active weeks later) as the metrics that actually define campaign success; open and click rates can rank two campaigns in the opposite order from what genuinely matters if the campaign that "performs" better on opens is optimizing for an eye-catching subject line rather than for durable value.
Structured elaboration
Why open and click rate are structurally misleading as SUCCESS metrics, not just noisy. An open or a click measures curiosity about the SUBJECT LINE or the EMAIL COPY, which is a genuinely different thing from measuring whether the underlying reactivation actually worked. A subject line optimized purely to maximize opens (urgency language, an aggressive discount headline) can systematically attract users who are curious but not genuinely re-engaging, while a duller subject line that points directly at real product value can attract fewer but more durably reactivated users. The two metrics are measuring different constructs, so a campaign can win on one and lose on the other by design, not by chance.
The short-term-to-long-term metric ladder to track instead:
- Delivery/mechanical health (delivered, bounced, spam-complained): confirms the email actually reached inboxes; a necessary but not sufficient signal.
- Open and click rate: confirms the SUBJECT LINE and CALL TO ACTION worked; useful for diagnosing the email itself, not for judging the campaign's business value.
- Day-1 (or next-session) reactivation rate: did the user actually come back and do something in the product, the first real behavioral signal.
- Day-7/day-30 retention of reactivated users: of the users who came back, how many are STILL active weeks later, the metric that actually reflects whether the campaign produced durable value rather than a one-time visit.
- A holdout-based incremental lift on the day-30 retention number specifically (comparing the campaign's recipients against a matched or randomized holdout who received no email), since without a control group even day-30 retention of "reactivated" users can be confounded by users who would have come back anyway.
Guardrails. Track unsubscribe rate and spam-complaint rate alongside the funnel above; a campaign that maximizes opens via aggressive subject lines can simultaneously increase unsubscribes, quietly shrinking the pool of users reachable by FUTURE campaigns even if this one campaign's headline numbers look good.
Worked example
Illustrative, pinned scenario: two subject-line variants sent to 1,000 dormant users each. Variant B uses a flashier discount-focused subject line; Variant A points directly at a genuine feature update.
variant_A = {"sent": 1000, "opened": 220, "clicked": 90, "returned_day1": 150, "still_active_day30": 95}
variant_B = {"sent": 1000, "opened": 410, "clicked": 260, "returned_day1": 240, "still_active_day30": 40}
def rate(n, d): return round(100 * n / d, 1)
for name, v in [("A", variant_A), ("B", variant_B)]:
print(f"Variant {name}: open={rate(v['opened'],v['sent'])}% click={rate(v['clicked'],v['sent'])}% "
f"day1_reactivation={rate(v['returned_day1'],v['sent'])}% "
f"day30_of_sent={rate(v['still_active_day30'],v['sent'])}%")
Output (actually executed):
Variant A: open=22.0% click=9.0% day1_reactivation=15.0% day30_of_sent=9.5%
Variant B: open=41.0% click=26.0% day1_reactivation=24.0% day30_of_sent=4.0%
Variant B wins decisively on every top-of-funnel metric (open rate nearly double, click rate nearly triple), and would be declared the "better" campaign by anyone reading only opens and clicks. But Variant A produces MORE than double B's day-30-retention-of-sent (9.5% vs. 4.0%): B pulled in a larger volume of curious but shallow returns that mostly did not stick, while A's smaller, more targeted response converted into durable reactivation at a much higher rate. Judging the campaign on open/click alone would have selected the objectively worse campaign by the metric that actually reflects business value.
Trade-offs and pitfalls
- The reversal shown above is not a hypothetical edge case; it is the exact failure mode this question is testing for. Any campaign metric that rewards attention-grabbing rather than genuine value (open rate, click rate, even raw day-1 reactivation count without a downstream check) can be gamed by copy that maximizes short-term curiosity at the expense of the outcome that matters.
- Downstream metrics take longer to observe, which is real friction: a team under pressure to report results quickly may default to open/click because they are available same-day, even knowing they can mislead; the fix is not to abandon them (they remain useful DIAGNOSTIC signals for the email's mechanics) but to explicitly label them as leading indicators of email quality, not proxies for campaign success.
- Without a holdout group, even the day-30 number can overstate the campaign's true incremental effect, since some fraction of "reactivated" users might have returned on their own regardless of the email; a rigorous read of a reactivation campaign needs the incremental lift over a comparable no-email control, not just the raw reactivated-user retention rate.
You ran a re-engagement email campaign to 100k dormant users. Outline an evaluation plan describing short-term (deliveries, opens, clicks), medium-term (reactivation within 7/30 days) and long-term outcomes (retention, LTV). Define conversion windows, attribution approach (holdout vs matched control), and guardrail metrics to detect negative impacts (increased unsubscribes or spam complaints).
Sample Answer
Direct answer
Structure the evaluation as three explicit time horizons, each with its own metrics and its own honesty about what it can and cannot prove: short-term (deliveries, opens, clicks, mechanical health only), medium-term (reactivation within 7/30 days, the first genuine behavioral signal), and long-term (retention and LTV of reactivated users, the durable-value question), with a holdout-based attribution approach throughout and guardrail metrics tracked from day one to catch negative side effects before they compound.
Structured elaboration
Short-term metrics. Deliveries (did the email reach inboxes), opens, and clicks; these confirm the campaign executed mechanically and give an early read on subject-line/content engagement, but as with any campaign, should not be treated as success metrics in their own right, only as diagnostic signals for the campaign's mechanics.
Medium-term metrics: reactivation within 7 and 30 days. Define reactivation precisely (any qualifying product event within the window, anchored to each user's own send date, not a single blended calendar date) and report both windows separately rather than only the longer one, since a 7-day reactivation rate that is much lower than the eventual 30-day rate tells you the campaign's effect is slow-building rather than immediate, useful context for interpreting the eventual long-term numbers.
Long-term outcomes: retention and LTV. Track whether reactivated users go on to show durable retention (day-30-post-reactivation activity, or later) and whether they generate meaningful LTV, not just a single return visit; this is the metric that actually answers whether the campaign produced lasting value rather than a one-time bounce.
Conversion windows. Define explicitly for each horizon (7-day reactivation window, 30-day reactivation window, and a longer LTV-accumulation window, e.g. 90 days post-send) so every number in the final report has an unambiguous, stated boundary rather than an implicit or inconsistent one.
Attribution approach: holdout vs. matched control. A TRUE randomized holdout (a comparable group of eligible dormant users who receive no email at all) is the gold standard, since it directly measures incremental lift over the counterfactual of doing nothing; where a true holdout is impractical (a legal, ethical, or business reason all eligible users must be contacted), a matched control built from similar dormant users from a PRIOR period (matched on recency, historical engagement level, and acquisition channel) is a weaker but still useful fallback, with the explicit caveat that it cannot fully rule out concurrent unrelated causes the way a true randomized holdout can.
Guardrail metrics to detect negative impacts. Unsubscribe rate and spam-complaint rate, tracked from the first day, not just at the final read-out; a campaign that produces a superficially good reactivation number while also meaningfully raising unsubscribes is quietly shrinking the pool of users reachable by every FUTURE campaign, a cost that would not show up in the primary reactivation metric at all.
Worked example
Of the 100,000 dormant users emailed, a genuine 10,000-user randomized holdout received nothing. Short-term: 61,000 delivered, 14,000 opened, 3,800 clicked (mechanical health metrics only). Medium-term: 7-day reactivation in the treatment group is 6,200/90,000 = 6.9%, versus the holdout's natural (no-email) 7-day reactivation of 5,100/10,000 = 51.0%... this figure is implausibly high for a holdout and signals the holdout group's OWN sizing may be too small or its population not comparable, a check worth running BEFORE trusting the headline comparison; assume instead a correctly-scaled holdout showing natural 7-day reactivation of 510/10,000 = 5.1%, giving an incremental lift of 6.9%−5.1%=1.8 percentage points attributable to the campaign specifically. Long-term: of the incrementally-reactivated users, 30-day-post-reactivation retention runs meaningfully below the product's normal cohort baseline, suggesting the campaign is pulling back a real but lower-intent slice of the dormant population rather than fully rehabilitating them to the engagement level of a typical active user, a nuance the medium-term reactivation number alone would not reveal. Guardrails: unsubscribe rate for the treatment group is checked against the account base's normal baseline unsubscribe rate; a meaningfully elevated rate would be flagged even if the reactivation numbers above look positive.
Trade-offs and pitfalls
- Reporting the treatment group's raw 7-day reactivation rate without subtracting the holdout's natural reactivation rate overstates the campaign's true effect, since some fraction of dormant users return on their own regardless of any campaign; the incremental-lift framing in the worked example is what corrects for that.
- A holdout group that is too small produces a noisy, untrustworthy natural-reactivation baseline (illustrated deliberately in the worked example's implausible 51.0% figure, included as a worked caution rather than a real result), which can badly distort the incremental-lift calculation if not caught before the final report is built.
- Declaring success at the medium-term reactivation number alone, without waiting for the long-term retention read, risks celebrating a campaign that mostly pulled back low-intent users who churn again shortly after, exactly the gap the worked example's long-term finding reveals; the full three-horizon structure exists specifically to prevent that premature conclusion.
A product release on June 15 coincides with a 10% drop in week-2 retention for cohorts signing up afterwards. Provide a prioritized diagnostic checklist including exact SQL queries to run (cohort comparisons, funnel checks), instrumentation verification steps, and methods to isolate whether the drop is due to the release, a marketing change, or data issues.
Sample Answer
Direct answer
Because a specific release date and a specific cohort boundary coincide exactly, the highest-priority checklist item is a clean comparison of the LAST pre-release cohort against the FIRST post-release cohort, holding acquisition channel and other factors as constant as possible, followed by a triage between three candidate explanations: the release itself, a coincidental marketing/channel-mix change, or a data-quality issue, each with its own distinguishing check.
Structured elaboration
Step 1: confirm the drop is real and cohort-specific, not a broader trend. Compare week-2 retention across the last 4-6 cohorts leading up to the release, not just the two cohorts on either side of it; a sudden step-change exactly at the release boundary (rather than a gradual trend that happens to cross the boundary) is much stronger evidence of a release-caused effect than a two-cohort comparison alone.
Step 2: isolate release as a candidate cause. Segment the post-release cohort's week-2 retention by whether the user was actually exposed to the release (a version/build flag, if available, since not all users update or receive a staged rollout simultaneously); if retention is low specifically among release-exposed users and normal among users still on the old version WITHIN THE SAME COHORT, that is close to direct evidence the release itself is the cause rather than something coincidental to the calendar date.
Step 3: isolate marketing/channel-mix as a candidate cause. Segment the same cohort's week-2 retention by acquisition channel; if the drop concentrates in one or two channels rather than being spread evenly, check whether a marketing campaign, budget change, or new channel launched around the same date, since a shift in WHO is being acquired can produce a retention drop that has nothing to do with the product release itself.
Step 4: isolate data-quality issues as a candidate cause. Cross-check the affected cohort's raw event VOLUME against a rolling baseline (a genuine tracking gap or pipeline issue coinciding with the release deploy, e.g. a broken analytics SDK shipped in the same release, is a real and easy-to-overlook possibility distinct from an actual behavioral effect) and confirm the channel/version segmentation fields themselves are populating correctly and not silently defaulting/nulling for the affected cohort.
Exact SQL queries to run, in priority order: (1) a 4-6 cohort trend query for week-2 retention, to confirm step-change vs. gradual trend; (2) the post-release cohort's week-2 retention segmented by release-exposure flag; (3) the same cohort segmented by acquisition channel, cross-referenced against a marketing-spend or campaign-launch log if available; (4) a raw event-volume-by-day check for the affected cohort's acquisition window, to rule out a tracking gap.
Instrumentation verification steps. Confirm the release itself did not change any EVENT DEFINITION or event-firing logic that the retention calculation depends on (a renamed or restructured event that a query is still expecting under its old name would show up as a fake drop, purely a labeling mismatch, not a real behavioral change).
Worked example
The pre-release cohort's week-2 retention sits at a stable 34-36% across the prior 5 cohorts; the post-release cohort drops to 26%, a real step-change rather than a gradual trend. Segmenting by release-exposure shows exposed users at 22% versus the small share of cohort members still on the old build at 35%, matching the historical baseline closely, pointing at the release itself. Segmenting further by acquisition channel shows the drop is roughly even across channels (ruling out a channel-mix explanation), and the event-volume check shows no anomaly in raw tracking volume (ruling out a pipeline gap). This converges the investigation onto "something in the release itself, not a coincidental external factor," narrowing the next step to a feature-level investigation of what specifically changed in that release's user-facing flow.
Trade-offs and pitfalls
- A two-cohort (before/after) comparison alone cannot distinguish a release-caused step-change from a pre-existing gradual trend that happens to cross the release boundary; the multi-cohort trend check in Step 1 is what makes that distinction possible, and skipping straight to "before vs. after" is the most common shortcut that produces an overconfident, possibly wrong conclusion.
- Segmenting by release-exposure only works if a reliable exposure flag exists; for a release rolled out to 100% of users simultaneously with no staged rollout or version tracking, this specific isolating check is unavailable, and the investigation has to lean more heavily on the channel-mix and data-quality checks instead.
- Concluding "it's the release" from Step 2 alone, without also running Steps 3 and 4, risks a false positive if the timing is genuinely coincidental; all three candidate explanations should be checked, even once one of them looks likely, since more than one factor can be true simultaneously (a release-caused effect stacked on top of a smaller, unrelated channel-mix shift, for instance).
You must recommend whether to invest more in acquisition or retention. Build a simple framework using cohort LTV and CAC to justify your recommendation. Describe the calculations, the time horizon you'd use, and how sensitivity to assumptions (e.g., discount rate, churn) affects the decision.
Sample Answer
Direct answer
Build the comparison as LTV:CAC for each candidate acquisition channel against the marginal return on a comparable dollar spent on a retention initiative, using a consistent time horizon and discount rate for both sides, then explicitly stress-test the recommendation against plausible changes in churn and discount-rate assumptions before committing to it, since this decision is exactly the kind where the "right" answer can flip under a fairly small assumption change.
Structured elaboration
The LTV calculation, driving both sides of the comparison. A standard closed-form approximation for subscription LTV is LTV=churn rate+discount rateARPU×gross margin, where ARPU is average revenue per user per period, churn rate and discount rate are both expressed on the SAME period (e.g., both monthly), and gross margin adjusts revenue down to the actual contribution margin the business keeps. This formula comes from treating a subscriber's future cash flows as a geometrically-decaying perpetuity (each period, a (1−churn) fraction of revenue survives to the next period, and each future period is additionally discounted by 1/(1+r)), summed to a closed form.
Time horizon. For the ACQUISITION side, LTV:CAC is naturally evaluated against the full expected customer lifetime (the perpetuity-style formula above implicitly does this). For the RETENTION side, the relevant comparison is the incremental LTV a retention initiative produces (the effect of moving churn down by some amount, holding ARPU fixed) against the retention initiative's own cost, over the SAME horizon convention, so the two sides of the comparison are apples-to-apples rather than one being a full-lifetime figure and the other a single-period figure.
Sensitivity to assumptions. Both churn and discount rate sit in the DENOMINATOR of the LTV formula, so LTV is highly sensitive to small absolute changes in either, especially at low base churn rates (the same 2-point change in churn matters far more when base churn is 3% than when it is 15%, since it represents a much larger RELATIVE change to the denominator). This sensitivity is not a flaw in the model, it is the actual economic reality: a small, sustained improvement in retention compounds into a large LTV improvement precisely because it changes how long, on average, a subscriber survives.
Worked example
ARPU = $50/month, gross margin = 70%, baseline monthly churn = 5%, monthly discount rate = 1%. Base-case LTV =(50×0.70)/(0.05+0.01)=35/0.06≈$583.33. Two acquisition channels: Channel A costs CAC=$300/user (LTV:CAC ≈1.94), Channel B costs CAC=$450/user (LTV:CAC ≈1.30); both clear the common "at least 3:1 is comfortable, above 1:1 is not value-destroying" heuristic threshold at these base assumptions, with Channel A clearly the stronger bet. Now stress-test with a plausible WORSE assumption, churn rising from 5% to 7% (a churn increase that a retention initiative might exist specifically to prevent): LTV falls to (50×0.70)/(0.07+0.01)=35/0.08=$437.50, and Channel B's LTV:CAC falls to 437.50/450≈0.97, BELOW 1, meaning Channel B would flip from marginally-acceptable to value-destroying under the higher-churn scenario, while Channel A's ratio only falls to 437.50/300≈1.46, remaining clearly viable. This is the concrete mechanism by which a retention deterioration can retroactively make an acquisition decision look wrong even though nothing about the channel itself changed: the acquisition-vs-retention trade-off is not static, it depends on which churn regime the business is actually operating in.
Trade-offs and pitfalls
- Treating LTV:CAC as a single static number rather than running it across a plausible RANGE of churn and discount-rate assumptions is the core mistake this question is testing for; the worked example shows a 2-point absolute churn change (a entirely plausible, even modest, real-world swing) is enough to flip a channel from acceptable to value-destroying.
- CAC itself is easier to measure precisely than LTV, which creates an asymmetry in how confidently each side of the ratio should be trusted; a decision based on a precisely-known CAC divided by a highly assumption-sensitive LTV should be presented with that asymmetry made explicit, not as a single clean ratio.
- The formula above assumes constant churn and ARPU over the customer's entire lifetime, which is a simplification; real cohorts typically show declining churn rates as tenure increases (survivors self-select toward being more engaged over time), so a naive constant-churn LTV can understate the true value of longer-tenured segments and should be validated against actual observed cohort curves rather than trusted as a pure formula in isolation.
A practical companion framing: payback period
LTV:CAC answers "is this channel worth it over the long run," but a business with a real cash constraint often needs a second, shorter-horizon question answered too: how many months until the CAC is recouped at all, independent of the full lifetime value. Payback period (CAC divided by monthly gross-margin-adjusted ARPU) for Channel A above is 300/(50×0.70)≈8.6 months, and for Channel B is 450/35≈12.9 months. A business with limited working capital may reasonably prefer Channel A even before running the churn-sensitivity analysis, simply because it ties up cash for a shorter period, a constraint the pure LTV:CAC ratio does not capture on its own.
You inspect a retention curve that drops steeply in the first week, then hips slightly after week 8. List three plausible product or data causes for (a) the steep early drop and (b) the late bump around week 8. For each cause describe an experiment or analysis you would run to validate it.
Sample Answer
Direct answer
A steep early drop almost always points at onboarding friction, a mismatch between what acquisition promised and what the product delivers, or an instrumentation problem; a later small bump around week 8 almost always points at a delayed value-realization moment, a recurring external trigger (a billing or seasonal cycle), or a segment-mix effect from a specific acquisition cohort entering the data. For each, the right validating check is one that can isolate the specific mechanism, not just confirm that the pattern is real.
Structured elaboration
(a) Three plausible causes for the steep early drop, each with its validation:
- Onboarding friction. Users hit a confusing or broken step early in the flow (a required setup step, a slow first-load, an unclear next action) and abandon before reaching real value. Validate by building a step-level funnel THROUGH onboarding specifically (not just the retention curve) and checking whether the drop-off concentrates at one identifiable step; a session-replay or drop-off-point analysis on a sample of abandoning users confirms whether it's a UX problem versus a broader disengagement.
- Acquisition-value mismatch. A marketing campaign or channel promised something the product does not actually deliver (wrong expectations set pre-signup), so users who arrive expecting X and find Y leave immediately. Validate by segmenting the early drop by acquisition channel/campaign; if the drop is concentrated in one specific channel rather than spread evenly, that channel's messaging (not the product) is the likely cause.
- Instrumentation or data-quality issue. A tracking bug undercounts early activity (a client-side event failing to fire on first launch, a bot-traffic spike inflating the cohort denominator without corresponding real activity). Validate by cross-checking the retention-curve activity count against an independent signal (server-side login logs, or billing/account-status records) for the same cohort; a genuine product/UX cause should agree across independent measurement systems, while an instrumentation bug typically will not.
(b) Three plausible causes for the late bump around week 8, each with its validation:
- Delayed value realization. Some users take longer to reach the product's core value (a B2B tool where a user needs a full billing or reporting cycle before the product proves itself, for example) and their engagement genuinely increases once that occasion arrives. Validate by checking whether the bump timing lines up with a known recurring product or business cycle (monthly billing, a report deadline) and whether it correlates with a specific in-product milestone rather than pure calendar time.
- A recurring external trigger. A weekly or monthly external event (payday, a subscription renewal reminder email, a seasonal occasion) pulls dormant users back on a predictable schedule. Validate by checking whether the bump timing correlates with any scheduled outbound communication (an automated re-engagement email that fires at a fixed day-count) or an external calendar event, which would explain a bump at a fairly consistent offset across cohorts.
- Cohort-composition effect, not a true behavioral bump. If the "cohort" in this curve mixes several acquisition sub-groups with different natural cadences, a slower-cadence sub-group's FIRST activity could land disproportionately around week 8, creating an apparent uptick in the aggregate curve that is really a composition artifact rather than any single user's retention improving. Validate by re-running the curve segmented by acquisition source or user type; if the bump disappears once segmented, it was a mixing artifact, not a real behavioral phenomenon.
Worked example
A retention curve for a 10,000-user cohort: week 1 retention is 22% (a steep drop from day 0's 100%), and the curve, which had been gently declining, ticks up from 9.5% at week 7 to 10.8% at week 8 before resuming its decline. Applying the diagnostic above: segmenting week-1 retention by acquisition channel shows paid social at 14% versus organic search at 31%, more than double, immediately narrowing cause (a) toward an acquisition-message mismatch concentrated in paid social rather than a universal onboarding bug (which would show up evenly across channels). Segmenting the week-8 bump by acquisition month shows it is driven almost entirely by users acquired in the cohort's SECOND acquisition wave, who make up a larger share of week-8's active base than of the overall cohort, supporting cause (b)(3), a composition effect, over a genuine week-8 value-realization moment.
Trade-offs and pitfalls
- Treating "the curve looks like this" as self-explanatory is the most common mistake. A shape (steep drop, small bump) is a symptom with multiple plausible mechanisms behind it; presenting only the shape without a segmented breakdown that actually distinguishes between the candidate causes is descriptive, not diagnostic.
- A single validating check rarely rules out more than one hypothesis at once. Channel segmentation addresses acquisition mismatch specifically; it says nothing about onboarding friction WITHIN a channel, so a thorough diagnosis typically needs to run 2-3 of the checks above in combination before recommending a fix.
- Chasing the week-8 bump as if it were the headline finding, when the steep early drop dwarfs it in absolute impact, is a common prioritization error: a bump from 9.5% to 10.8% recovers a small fraction of the ~78 percentage points already lost by week 1, so the early-drop investigation should almost always get first priority in a resource-constrained team.
Unlock Full Question Bank
Get access to all 26 User Retention & Engagement interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.