The Growth Equation
By the end of this lesson, you should be able to: write today's active users in terms of yesterday's, split any change into the four things that can cause it, read a quick ratio, and rank causes by how much they actually contributed instead of by which percentage looks biggest.
One equation, and everything else is a term in it
Users don't appear from nowhere and they don't vanish. Everyone active today arrived in one of a few ways, and everyone active yesterday either stayed or left. Growth accounting is those two sentences, written carefully.
Before any formula, learn the five words. They are the standard ones, so an interviewer will say them without stopping to explain them.
- New. Has never been active before. Not "signed up recently". Never active.
- Retained. Was active last period, and is active again this period.
- Resurrected. Was active at some point in the past, went quiet, and is back. Some teams say reactivated. Same thing.
- Churned. Was active last period, and is not active this period.
- Stale. Was not active last period either, and is still not active. They signed up, and then nothing.
The trick to keeping them straight is that they answer two different questions. New, retained and resurrected describe how somebody active today got here. Churned and stale describe people who are not here today, which is why neither shows up in a count of today's users. The only difference between those two is whether they were here last period.
Stale is the state nobody puts on a dashboard, and after retained it is the biggest one you have. Basket had 25,505 stale users in its last week against 5,154 who resurrected. Those two numbers belong next to each other, because the dormant pool is the only sensible denominator for judging a win-back campaign, and almost nobody computes it. Add all five states together and you get 49,750, which is exactly everyone who had signed up by that week. Nothing left over, because there is nowhere else for a user to be.
With those four, the whole framework is two statements that are true by definition rather than by assumption.
Everyone active today is exactly one of three kinds of person. Retained, new, or resurrected. Nobody is two of those and nobody is none of them:
Everyone who was active last period either stayed or left. There is no third option:
Subtract the second from the first. Retained sits on both sides and cancels, which leaves the form you will actually see on a dashboard:
Notice what just happened. Retained is normally the largest group by far, 9,372 of Basket's 17,300 this week, and it drops out of the growth equation completely. That is why a conversation about growth can run for an hour without mentioning three quarters of your users, and it is why the growth number and the health of the product are two different questions.
Here's why it's worth committing to memory. Every remaining topic in this track is one term in this equation. Acquisition analysis is the New term. Onboarding is the quality of the New term. Retention and churn are the last two. Funnels sit inside each term. When somebody asks why a number moved, they are asking which of four things changed, and there are only four.
Say this equation out loud early in a growth case. It converts a vague question ("why is growth slowing") into a bounded one ("which of these four terms moved, and by how much"), and interviewers notice the difference immediately.
Basket's eleven weeks, split four ways
Using the definition we settled on in lesson 1, take a single week first. This is the last week in the data, and every number in it comes from the same table.
Check it yourself. 9,372 plus 6,945 is 16,317, last week's total. 9,372 plus 2,774 plus 5,154 is 17,300, this week's. If a decomposition does not close like that, it is not a decomposition, it is an estimate.
Now here is every week with the change split into its parts.
| Week | Active | New | Resurrected | Churned | Net change |
|---|---|---|---|---|---|
| Mar 16 | 9,297 | 2,965 | 1,351 | −3,622 | +694 |
| Mar 23 | 10,093 | 2,460 | 2,121 | −3,785 | +796 |
| Mar 30 | 10,817 | 2,213 | 2,578 | −4,067 | +724 |
| Apr 6 | 11,407 | 2,013 | 2,879 | −4,302 | +590 |
| Apr 13 | 12,270 | 2,133 | 3,289 | −4,559 | +863 |
| Apr 20 | 13,247 | 2,309 | 3,625 | −4,957 | +977 |
| Apr 27 | 14,358 | 2,549 | 3,940 | −5,378 | +1,111 |
| May 4 | 15,427 | 2,771 | 4,252 | −5,954 | +1,069 |
| May 11 | 16,317 | 2,691 | 4,727 | −6,528 | +890 |
| May 18 | 17,300 | 2,774 | 5,154 | −6,945 | +983 |

The chart is the point of this lesson. Basket adds roughly eight thousand users a week and loses roughly seven thousand. The net gain, the only number most dashboards show, is the small difference between two very large flows.
That matters because the small number moves whenever either large number twitches. A 10% worsening in churn wipes out a 30% improvement in acquisition here. You can't see that on a chart of active users, and you can't manage it either.