Lifecycle stage
A label on each user for where they are right now: new, current, resurrected, churned. It turns one active-user number into a story.
See it
What it is
Lifecycle stages put one label on each user for right now. The standard set comes from growth accounting, and every label is defined against two consecutive, non-overlapping periods: new (first ever active this period), current or retained (active this period and the previous one), resurrected (active this period, not active the previous one, but active at some point before that), and churned (active the previous period, not active this one). New plus resurrected plus current is your active count, churned is what leaked out this period, and the difference explains why the active number moved instead of just reporting that it did.
Keep that period-level churned bucket separate from dormant, which is the longer-term state for anyone who has been silent past your inactivity threshold. Someone who skipped one period is churned for the growth accounting math but may not be dormant yet; someone dormant for eight months only shows up in the churned bucket once, in the period they stopped. Mixing the two makes the bars stop adding up.
Reach for it when a flat DAU line hides a leaky bucket: thousands of new users arriving each week exactly cancelling thousands dropping out, which looks like stability and is actually a treadmill. The same labels double as campaign triggers, since 'dormant for 14 days' is a much better email audience than 'everyone', and 'resurrected' is worth studying because those people already came back on their own.
Gotcha: the boundary is arbitrary and you own it. Calling someone dormant after 30 days in a product people genuinely use quarterly invents churn that is not there. Without a cancel event there is no ground truth, so derive the threshold from the actual return-time distribution (when do 90 percent of returning users come back?) rather than picking 30 because it is round. And read the stages as a flow: people bounce between labels week to week, so a stage is a state, not a personality.
Ask AI for it
Classify my users into lifecycle stages and chart it. Define active as [event]. Use consecutive, non-overlapping 28 day periods (not a rolling window), so every user is evaluated against exactly two periods: the current one and the one immediately before it. Define each bucket as an explicit pair of predicates, mutually exclusive and covering everyone: new (active this period, never active in any earlier period), current (active this period and the previous one), resurrected (active this period, not active the previous one, active at some point before that), churned (not active this period, active the previous one). Output a growth accounting chart with new, resurrected, and current stacked above the axis and churned below it, plus a quick ratio line of (new + resurrected) divided by churned. Report long-term dormancy as a separate chart, not a bucket in this one: derive its threshold from the 90th percentile of my users' observed return-time distribution rather than assuming 30 days, and state the threshold you calculated.