The stages
Every account starts as Not activated and moves toward Power. Each stage is a level of product usage.
All calculations use a rolling 28-day window. Four full weeks, so no day of the week gets to bias the result.
Key features are the events you mark as key features in Retain. An active
account is one with at least 1 event in the last 28 days and a subscription
that hasn’t been canceled.
active days × ln(1 + key events) over 28 days. Active days weigh more than raw volume, so a script firing 1,000 events in one afternoon doesn’t crown itself a power user.
Moving between stages
Accounts go up the moment they meet a rule. They go down only after missing it for 7 days straight, so one quiet weekend doesn’t send anyone backward. Activation is permanent. Once an account has activated, it never drops back to Not activated.Stalled accounts
An account is also flagged stalled when it has sat in its stage longer than 75% of the accounts that have been in that stage (those who already left and those still there), with a minimum of 14 days. While there are fewer than 5 accounts to compare, the limit is 28 days. Power accounts and churned accounts are never stalled.How stages are defined
You don’t write the rules. Retain derives them from your own data.- Activation event. Retain looks at accounts that subscribed 60 or more days ago and finds the event that best separates the ones who stayed from the ones who left. It tries counts of 1, 2, 3, 5, and 10 inside the first 7 or 14 days. It needs at least 30 such accounts, and at least 10 on each side of the split.
- Fallback. With fewer than 30 accounts or no clear winner, activation is “1 key feature event within 14 days”.
- Basic, Advanced, Power. Percentiles and medians across your active accounts, as shown in the table above.
- What defines each stage. For Advanced and Power, Retain lists up to 3 events that show up much more in that stage than in the one below it (at least 2x as often, in at least 30% of its accounts).
Editing the rules
You can replace the rules for Activated, Basic, Advanced, or Power with your own, up to 3 rules per stage, all of which must be met. A manual definition is never overwritten by the daily job. Retain keeps refreshing its stats and the events that define the stage. Only the rules stay yours. To go back, use Reset to automatic on that stage.Day one: bringing your history
A journey with no history starts empty. There are two ways to fill it, and you can use both.Import from PostHog
If you use PostHog, Retain can import the last 90 days of events.1
Create a personal API key
In PostHog, open your user settings and create a personal API key. Give
it the Query Read scope.
2
Find your Project ID
It’s the number in your PostHog project settings.
3
Fill the form in Retain
Go to Sources → PostHog, then Import the last 90 days. Pick your
region (US, EU, or self-hosted). For self-hosted, enter your public
https:// URL. Add the Project ID and the key.Send history through the API
Without PostHog, send past events with atimestamp. The /track endpoint accepts an ISO 8601 date, so the event lands where it happened instead of today.
cURL
The
track method of @retain-so/sdk doesn’t take a timestamp yet. Use
the HTTP endpoint above for backfills./track shows up on the next daily run.
Without any history, the journey still works. It fills in as events arrive.