Growth Metrics
Momentum has quarters of truth, not one number
Growth accounting segments new, resurrected and returned activity across periods. Understanding which lever moves means better experiments and honest momentum narratives.
What you will learn
- Segment activity into new, resurrected and retained buckets
- Use activation and retention as leading growth signals
- Explain why MRR growth can slow despite more signups
What is this?
Growth metrics decompose change into sources: new customers, resurrected (re-gained) customers, retained (kept) customers, and lost/churned ones. Growth accounting then explains period-over-period changes: faster acquisition, slower churn, or expanded value. Activation (the first meaningful session) and retention (still active N days later) are the leading indicators that precede revenue growth.
Why do you need it?
- A raw 'users up 10%' hides whether that is real or a window artifact.
- Growth accounting separates luck (resurrection) from durable retention.
- Activation predicts growth before revenue does; fixing it is cheaper than acquiring more users.
- Investors ask the retention question; your cohort curves are the answer.
Mental model
A bucket brigade replenishing a well
Growth accounting
Water rising depends on new buckets arriving (new users), buckets coming back (resurrection), buckets that keep filling (retention), and buckets that stop (churn). One leak in retention kills a brigade of otherwise-acquiring new people.
How it works
- Define a period (week/month) and an activity event (order, login, session).
- Tag each active customer by history: new (first activity), resurrected (returned after a gap), retained (was active last period too).
- Churn counts customers who were active but stopped.
- Rate curves plot cohorts by activity week to compare retention.
- Expansion revenue comes from existing customers increasing spend.
Growth accounting buckets in a period.
Examples
Growth accounting by SQL
SELECT month, COUNT(DISTINCT CASE WHEN first_month = month THEN customer END) AS new, COUNT(DISTINCT CASE WHEN last_month < month AND active THEN customer END) AS resurrected, COUNT(DISTINCT CASE WHEN prev_active THEN customer END) AS retainedFROM customer_activityGROUP BY month;Each bucket is defined from first_month, last seen month and previous-month activity so the totals partition cleanly and any month can be reproduced exactly.
In production
- A streaming product reports 'new vs returning' weekly and separates resurrected binge watchers from durable subscribers.
- An e-commerce team uses activation (first organic order) as its north-star leading metric.
- An enterprise tool shows expansion within existing logos before pushing new acquisition spend.
Best practices
- Define active precisely (the event + the period window) in the dictionary.
- Publish cohort retention curves alongside headline growth.
- Separate new money, expansion money and retained money in revenue accounting.
- Benchmark activation against time-to-first-value for the segment.
Common mistakes
- Counting resurrected users as new, flattering the acquisition line.
- Measuring retention only on revenue cohorts, blinding the insight team to free users.
- Looking at aggregate retention ignoring cohort composition shifts.
- Attributing month-over-month growth to acquisition when expansion revenue is the driver.
Common issues
New-user count doubled but MRR is flatCheap signups not converting to revenue
Track activation and revenue-per-user, not acquisition alone.
Retention looks flat yet growth stallsCohort mix shifted toward weaker segments
Slice retention curves by channel and cohort.
Resurrection spikes distort the trendSeasonal windows or email blasts return dormant users
Report resurrection separately from new and retained.
Debugging tips
- Decompose: (new + resurrected + retained) must equal active for each period.
- Check the gap-window used for 'resurrected' — too short a gap inflates new.
- Plot cohort curves on the same axis to compare like-to-like.
- When MRR grows but active users don't, calculate average revenue per active.
Interview checkpoint
Quick quiz
Which bucket catches a customer who was active, went dormant, then returned?
Retention curves compare cohorts of different ages on the same axis.