Race to Scale

Growth model template for startups, with inputs, a cohort layer cake, a loop row and a sensitivity table

A growth model template in four sheets: inputs, a cohort layer cake, a loop row and a sensitivity table, with worked numbers you can copy this week.

By Race to Scale Desk, edited by Lila Odinaev. Published . How we work

Start of month 1
From all channels, month 1
%Month over month
Arrive the month after
%Active users kept each month
How far to project

After 12 months you have about 5,230 active users, adding 845 a month, of which 161 come from referrals.

Retention loses about 3,517 users over the period, against 7,747 added. Five points more monthly retention would end the period at about 6,676.

Active users month by month
MonthAcquiredReferredKept from last monthActive
140009001,300
2420801,1701,670
34411001,5032,044
44631081,8402,411
54861142,1702,770
65111202,4933,124
75361262,8113,474
85631323,1263,821
95911393,4394,169
106211463,7524,519
116521534,0674,872
126841614,3855,230
Active users at month 12: retention down the side, referred users per new user across the top
RetentionK 0.1K 0.2K 0.3
85%3,7904,2074,731
90%4,7285,2305,857
95%6,0646,6767,438

How it is worked out

acquired(m) = A × (1 + g)^(m − 1)
referred(m) = K × new(m − 1)
active(m) = active(m − 1) × retention + acquired(m) + referred(m)
A
users acquired in month 1
g
the monthly growth of acquisition
K
referred users each new user brings, arriving the following month
new(m)
acquired(m) + referred(m)

Worked example, with the default inputs:

  1. Month 1: acquired 400; referred 0.2 × 0 = 0; kept 1,000 × 90% = 900; active 900 + 400 = 1,300.
  2. Month 2: acquired 400 × 1.05 = 420; referred 0.2 × 400 = 80; kept 1,300 × 90% = 1,170; active 1,170 + 420 + 80 = 1,670.
  3. Each later month repeats the same three steps; the table under the result shows all of them.

Where the defaults come from

InputDefaultSource
Active users today1,000Example input, not a benchmark. Replace it with your own.
Users acquired a month400Example input, not a benchmark. Replace it with your own.
Acquisition growth5%Example input, not a benchmark. Replace it with your own.
Referred users per new user0.2Example input, not a benchmark. Replace it with your own.
Monthly retention90%Example input, not a benchmark. Replace it with your own.
Months12Example input, not a benchmark. Replace it with your own.

A growth model template is a spreadsheet that turns your inputs into active users, paying customers and revenue across 12 monthly columns. This one has four sheets: inputs, a cohort layer cake, a loop row and a sensitivity table. Our worked example starts with 1,000 new users a month at 40% activation and ends at 580 active users and $580 in monthly recurring revenue by month 3.

What is a growth model, and what goes in this template?

A growth model is a spreadsheet that turns your inputs into outputs. The inputs are new users by channel, activation, retention by cohort month, loop output, conversion to paid and price. The outputs are active users, paying customers and revenue. We lay them out in 12 monthly columns so you can see what each input does to the year.

The reason to build one is focus. Reforge lists the first step of its growth process as: "Build a growth model that helps you identify the most impactful variables/levers around acquisition, retention, engagement and monetization."

Pick your output before you fill in any cells. Reforge's model guide says there are "two primary options for the output metric: your retention metric or a liquidity metric." If you already have a north star metric, use it as that output.

Why loops replace the funnel

A funnel-shaped plan has a built-in limit. As Reforge puts it, "Funnels operate in one direction. Put more in at the top, get more out at the bottom." The funnel has no concept of reinvesting what comes out at the bottom to get more at the top. That means no compounding.

A growth loop works differently. Reforge describes loops as "closed systems where the inputs through some process generates more of an output that can be reinvested in the input." The practical test is to explain how one cohort of users leads to the next. In the spreadsheet, the loop row takes users created by this month's users and adds them to next month's inputs. For more on loop types, see growth loops explained.

What the four sheets hold

Sheet What goes in What it answers
Inputs New users per channel, activation rate, conversion rate, price What you are assuming
Cohort layer cake Each month's sign-up cohort as its own row, decayed by retention by cohort month, stacked How many active users each month's cohort contributes
Loop row Users generated by existing users through invites, shared content or indexed pages How much of next month's growth feeds itself
Sensitivity table Outputs recalculated as you move one input up or down Which input to work on first

A worked example

These are round example inputs, not benchmarks. Suppose 1,000 sign-ups arrive with a 40% activation rate, which gives 400 activated users. If 30% of those 400 are still active in a later month, that cohort holds 120 users. If 10% of those 120 users pay, you have 12 paying customers. At $20 a month, 12 paying customers bring in $240 a month.

Each later sheet builds on this chain. The layer cake repeats it for every monthly cohort. The loop row adds new users back in, and the sensitivity table shows which of these inputs moves revenue the most when it changes.

What inputs does a startup growth model need?

The order of work comes from Reforge's guide to an end-to-end quantitative growth model: pick the output metric, list the inputs that drive it, insert baselines, then project 12 months. Their growth forecast guide sums up the middle steps: "work backward from it to identify the key inputs that influence it, break down each of your loops into steps, and use historical data to create a baseline."

There is no off-the-shelf version. The Reforge guide says so directly: "Remember, there’s no template. We have to go through this process and define this for your specific product." Treat the sheet below as a starting shape, then rename the rows to match your product.

The input sheet

Input Definition Where to get the baseline Example value (illustrative, not a benchmark)
Output metric The one number the model projects, often your north star metric Your product analytics definition of an active user Weekly active users
New visitors per month Unique people reaching signup pages Web analytics, last full month 1000
Signup rate Visitors who create an account Signup events divided by visitors 40%
Activation rate Signups who reach first value Activation event divided by signups 30%
Invites per active user Invites sent per user each month Invite events divided by active users 10
Monthly churn Active users who stop being active Retention cohort table 20%

Here is the worked example: if 1000 visitors arrive and 40% sign up, that is 400 signups; at a 30% activation rate, 400 signups become 120 activated users. Each row feeds the next, so a change in one input carries forward through the rest.

The Strava example in Reforge's forecast guide uses the same chain for a viral invite loop. "In month one, 2M people see the CTA, and 40% click through", invites go out "at a variable rate of 1.8 invites per month", and the loop ends with "an activation rate of 48%" (Reforge).

Add a note column for inputs you expect to drift. That guide defines growth constraints as "places in your model where you expect growth rates to change over time, even if you do nothing to affect them." Invites per inviter fall "as existing users will have a finite number of new invites they can make."

Split inputs when behavior differs

Our rule: when a segment or market behaves differently, give it its own row set rather than one blended average. Reforge's international growth model post explains why: "most products grow very differently across international markets," and differences in language, culture and willingness to pay "can dramatically alter the behavior and performance of a company's core growth loops."

Start narrow. Quizlet's first version "was limited to US web users," and the finished model reached "~100 input variables and ~20 key outputs". Only split once a segment has enough users to measure; the same post notes the approach "depends on having a critical mass of international users who can be analyzed and compared across countries."

How do you build the cohort layer cake?

The cohort layer cake is a grid. Each row is a signup month. Each column is months since signup. Each cell is that month's new users, times your activation rate, times the retention rate for that cohort month.

The 6-month user retention rate counted as GOOD ranges from about 25% for consumer social to about 70% for enterprise SaaS.

6-month user retention considered GOOD, by business typePer cent

6-month user retention considered GOOD, by business type
ItemValue, %
Consumer social25%
Consumer transactional30%
SMB/mid-market SaaS60%
Enterprise SaaS70%
Source: Lenny's Newsletter, What is good retention, 2024.

You enter how many customers you acquired each month and how many stayed in each later month. The sheet then shifts the data into "left-aligned mode" so that every cohort lines up by lifetime month.

A worked example

These are example inputs, not a benchmark. Each month brings 1000 signups and 40% activate, so month 0 holds 1000 × 40% = 400 active users. Month 1 retention is 30%, so the cohort keeps 400 × 30% = 120. Month 2 retention is 20%, so it keeps 400 × 20% = 80.

Signup month Month 0 Month 1 Month 2
January 400 120 80
February 400 120
March 400

To build the cake, add the cells that fall in the same calendar month. February stacks January's month 1 layer on February's month 0 layer: 120 + 400 = 520. March adds January's month 2 layer to that: 80 + 520 = 600.

Each new month adds a fresh layer on top of thinner older ones. Plot the calendar totals as stacked areas and you can see how much of the active base comes from older cohorts.

Why older layers hold the base steady

Reforge describes the effect: older cohorts of subscribers generally have much higher retention rates than newer ones. That lets companies stack mature cohorts into a "layer cake" and build a stable recurring revenue base.

Churn often runs high in the first months and then starts to stabilize. Over time you also want to see younger cohorts getting better than older cohorts.

In our reading, the right side of your grid decides most of the forecast. If month 2 flattens instead of declining toward zero, every new row adds to a base that stays. For more on reading the shape, see how to read retention curves.

Where to get 6-month reference points

Lenny's Newsletter defines user retention as the percentage of users who signed up and are still active six months later. It then gives ranges by business type:

Check the denominator before you compare your numbers. For consumer social, it is registered users. Your month 6 cell should be divided by the same base. For monthly figures, see our monthly churn benchmarks.

How do you model a referral loop in a spreadsheet?

The loop row is one line of arithmetic that closes the model. It takes this month's active users, multiplies by invites per active user and by invite conversion, and drops the result into the top of next month's cohort in the grid from the last section.

Loop-sourced new users (next month) = active users (this month) × invites per active user × invite conversion

In the sheet, keep invites per active user and invite conversion on the inputs tab. That cohort decays on its own retention curve and adds to active users, which feed the loop again.

The published pattern

Those two inputs give a multiplier of 1.4 (2 × 0.7). The essay projects that out to 500M users in 5 years.

The essay multiplies new users. Our row multiplies active users. In our reading, the new-user version fits products where invites happen at signup. The active-user version fits products where retained users keep inviting month after month.

Each user brings What the grid does What it means for the plan (our reading)
Fewer than 1 Loop cohorts shrink each month Paid and organic channels carry growth; the loop adds a discount on them
Exactly 1 Constant new users, total grows in a straight line The loop sustains itself but does not compound
More than 1 Each cohort is larger than the last Compounding growth, until the network or market caps it

A worked example

As an example, not a benchmark: 1000 active users send 400 invites, and 30% of those invites convert, so the loop row adds 120 new users to next month's cohort. That is 120 loop users from 1000 active users, a monthly yield of 0.12.

That looks small. In our reading, judge it across a user's active life, since the active-user formula counts the same user again for every month they stay. A user retained for 10 months at 0.12 a month brings 1.2 new users in total. For the lifetime version of this number, see viral coefficient and run your inputs through the viral coefficient calculator.

Let invites decline

A flat invite rate overstates late months. The essay suggests early adopters invite 10-15 each, a mature base 1.5 or less. Put invites per active user on the inputs tab as a row by month, not a single cell, and step it down.

How do you turn active users into paid customers and revenue?

The paid layer sits under the cohort layer cake. It takes active users from each cohort, applies a conversion rate to paid and a price per month, and returns monthly recurring revenue (MRR). Reforge describes this step as using your price per user to calculate the retained monthly revenue, along with expansion revenue, churned value and baseline annual recurring revenue (ARR).

Step 1: Build the baseline with no new work

Start with a forecast that assumes the team ships nothing. Reforge defines a baseline forecast as one that reflects performance expectations assuming no growth work is done. Use your current conversion rate and current price, held flat.

Here is an example, not a benchmark. You have 1,000 active users, and 40 of them pay, so conversion to paid is 4%. Those 40 paying customers at $30 per month give $1,200 in MRR. That figure is your floor.

Step 2: Discount each initiative by confidence

Next, list the growth work planned for the quarter. For each item, Reforge advises you to consider how confident you are in different growth initiatives and discount your forecast accordingly. Score confidence honestly. An ICE score gives you a confidence number you may already have.

Continuing the example, a pricing page test might add 20 paid customers, and at 40% confidence you forecast 8 of them. Those 8 customers at $30 per month add $240 in MRR.

Row Paid customers expected Confidence (our example) Customers forecast MRR added at $30
Baseline 40 n/a 40 $1,200
Pricing page test 20 40% 8 $240
Onboarding email 10 30% 3 $90

Keep each initiative on its own row so you can see what the plan rests on. Reforge also suggests you adjust how you apply discounts based on the type of growth initiative and check how initiatives affect one another. Two tests on the same paywall will not add up cleanly.

Step 3: Check that price fits the channel

A revenue row is only useful if your acquisition channels can pay for it. Brian Balfour describes an ARPU ↔ CAC spectrum, where average revenue per user (ARPU) has to match customer acquisition cost (CAC). His example: a freemium product with $10/month pricing can’t succeed through enterprise sales teams, and a $50,000 annual license cannot rely on viral social growth.

In practice, put your price next to your main channel and its cost. If a $30 plan depends on outbound sales, the payback period will tell you quickly. For AI products, add cost to serve as a line, since Balfour notes that bearing this new cost can break the economics of free/freemium products.

For conversion inputs, compare your rate with our free-to-paid conversion benchmarks and choose a model with our freemium vs. free trial guide.

Worked example with 1,000 new users a month

Here is the template filled in end to end with round example inputs. They are an example to test the mechanics, not a benchmark.

Step 1: one cohort

Start with 1,000 new users a month at 40% activation, which gives 400 activated users. Apply retention as a share of the original activated cohort: 400 users at 60% retention leaves 240 after month 1, 400 at 45% leaves 180 after month 2, and 400 at 40% leaves 160 after month 3.

Step 2: stack three cohorts

Each month a new cohort of 400 activated users joins and follows the same curve. Read the active base down each month column.

Cohort Month 1 Month 2 Month 3
Joined month 1 240 180 160
Joined month 2 not yet 240 180
Joined month 3 not yet not yet 240
Total active 240 420 580

Month 2 is 240 plus 180, which is 420. For month 3, 160 plus 180 is 340, and 340 plus 240 is 580 active users.

Step 3: add the loop row without double counting

In this example the invite feature ships in month 3, and each active user brings 0.2 new users. That means 580 active users times 0.2 gives 116 new users.

Book those 116 as signups in month 4, not as month-3 actives. Month 4 intake becomes 1,000 plus 116, which is 1,116 new users, and they pass through the same 40% activation row as everyone else. A loop user who skips the activation and retention rows gets counted as already retained, and in our reading that is the most common way a growth loop inflates a model.

Reforge's guide uses the same chaining in a hypothetical Strava invite loop: each step multiplies the one before, and the loop ends on newly activated members, with "an activation rate of 48% or roughly 55,000" in month one (Reforge). The loop's output then feeds the cohort intake. It is never added on top of the active total.

Step 4: convert to revenue

Apply 5% paid conversion to the month-3 base: 580 active users times 5% gives 29 paid customers. At $20 a month, 29 customers times $20 gives $580 in monthly recurring revenue (MRR).

What to do with it this week

  • Rebuild these four steps in your own sheet with these exact inputs and check that you get 580 active users and $580 MRR. If you do not, the formulas are wrong, not the assumptions.
  • Swap in your own activation and retention numbers one at a time.
  • Compare your conversion input against our free-to-paid conversion benchmarks before you show the model to anyone.

Which input moves the outcome most? Build a sensitivity table

A sensitivity table shows which input changes the result most, so you know where to spend next month's experiment. The method is a one-at-a-time test: move one input up and down by 10%, hold everything else fixed, and record month-12 active users and monthly recurring revenue (MRR).

The template

Copy this into a tab next to your model. Each row points at one input cell. Run the model three times per row (base, low, high) and paste the outputs.

Input Example base value Low case High case Month-12 active users (low / high) Month-12 MRR (low / high) Swing in MRR (high minus low)
New users per month 1,000 Base minus 10% Base plus 10% fill in fill in fill in
Month-1 retention 40% Base minus 10% Base plus 10% fill in fill in fill in
Invites sent per active user your value Base minus 10% Base plus 10% fill in fill in fill in
Free-to-paid conversion your value Base minus 10% Base plus 10% fill in fill in fill in
Monthly price $30 Base minus 10% Base plus 10% fill in fill in fill in

The base values are example inputs, not benchmarks. With 1,000 new users a month, a 10% move shifts that input by 100, to 900 or 1,100. With 40% month-1 retention, the same relative move is 4 points, to 36% or 44%.

Use a relative 10% for every row so the swings are comparable. Then sort the table by the swing column, largest first. The top row is your answer for this quarter.

Three cautions

Retention and referral feed each other, because retained users keep sending invites. After the single-input pass, test the top two inputs together at plus 10% each. If the combined swing beats the sum of the two single swings, we read that as a loop effect worth modeling explicitly.

Inputs that drift on their own. Reforge describes growth constraints as places where you expect rates to change over time even with no work on them. In its Strava example, invites per inviter fall as existing users will have a finite number of new invites they can make. An input that looks sensitive at month 1 may matter less by month 12, so check the shape, not just the size.

Stale baselines. Reforge's guidance is to use historical data to create a baseline and to refine the model as you learn more and gain additional data. Each month, replace assumed inputs with actuals and rerun the table. In our reading, the ranking often reorders once real retention curves arrive.

Turn the top row into an experiment

Write the top input as a hypothesis with a target, for example raising month-1 retention from 40% to 44%. Before committing, Reforge suggests you evaluate the elasticity of the variable to understand cost. A large swing on an input that is expensive to move may rank below a smaller swing that is cheap.

Score the candidates with an ICE score, log them in the growth experiment backlog template, size the test with the A/B test sample size calculator, and run it using how to run a growth experiment.

Three traps that break a growth model, and what to do this week

In our reading, most broken growth models fail in one of three places. Each one has a fix you can make in the sheet today.

Trap 1: one blended retention rate

A single monthly rate treats every user the same.

The fix: give each cohort row its own retention by cohort month, read from your actual curves. Our guide on reading retention curves shows how to pull those numbers.

Trap 2: flat channel inputs

In our reading, a paid or outbound channel rarely holds its month-one volume. Audiences saturate and costs rise. Here is an example, not a benchmark: a channel that delivers 400 sign-ups in month one and loses 30 a month delivers 370 in month two. If you type 400 into every column, the model overstates every month after the first.

The fix: add a decay row under each channel and set it from your own last three months of data.

Trap 3: loop users counted twice

This one hides in the totals. Take another example: the channel tab reports 1,000 sign-ups, and 120 of those came from invites. If the loop row adds those 120 again, the sheet shows 1,000 + 120 = 1,120 new users when only 1,000 arrived.

The fix: tag every sign-up with one source. Channel rows count only non-invited users. The loop row owns the invited ones.

A note on markets

Reforge warns that "most products grow very differently across international markets," because language, culture, consumer preferences, willingness to pay, and competition change how loops behave. We think the practical rule is one tab per market that behaves differently, built on the same structure.

Five steps for this week

  1. Start narrow. Quizlet's first version was limited to US web users. Pick your largest segment and model only that.
  2. Pull retention by cohort month for your last six cohorts and fill the layer cake.
  3. Add a decay row to each channel input.
  4. Tag sign-ups by single source and rebuild the loop row so nothing counts twice.
  5. Check outputs against your finance numbers. If last quarter's modeled revenue misses actual revenue, fix inputs before you forecast.

What this page does not cover

This page does not cover how to set up the analytics events that supply your baselines, how to choose acquisition channels, or how to build a full financial model with costs and cash. All figures are illustrative examples for testing the mechanics, not benchmarks or forecasts. Nothing here is financial or investment advice.

Related on Race to Scale: Growth loops explained, with the four loop types and a template to draw your own; North Star Metric Examples, and How to Pick One for Your Startup; A/B test sample size and duration calculator, with the formula.

Embed this calculator

Paste this into any page to show the live calculator with its formula and the source of each default, linked back here.

<iframe src="https://www.racetoscale.com/embed/growth-model" title="Growth model, from Race to Scale" width="100%" height="1700" style="border:0;max-width:1100px" loading="lazy"></iframe>

Questions

What is a growth model?

A growth model is a spreadsheet that turns inputs into outputs. The inputs are new users by channel, activation, retention by cohort month, loop output, conversion to paid and price. The outputs are active users, paying customers and revenue. Reforge lists building one as the first step of its growth process, because it shows which variables have the most impact.

How do I build a growth model in a spreadsheet?

Pick your output metric first, list the inputs that drive it, insert baselines from historical data, then project 12 months. Lay it out in four sheets: inputs, a cohort layer cake, a loop row and a sensitivity table. There is no off-the-shelf version, so rename the rows to match your product. To check your formulas, rebuild our worked example: 1,000 new users a month, 40% activation, 60%, 45% and 40% retention, 5% paid conversion and $20 a month should give 580 active users and $580 in monthly recurring revenue (MRR) in month 3.

What inputs does a startup growth model need?

Start with an output metric, often your north star metric, then add new visitors per month, signup rate, activation rate, invites per active user and monthly churn. The paid layer adds conversion to paid and price per month. Add a note column for inputs you expect to drift, such as invites per inviter. When a segment or market behaves differently, give it its own set of rows instead of one blended average.

What is a cohort layer cake?

It is a grid where each row is a signup month, each column is months since signup, and each cell is new users times activation rate times retention for that cohort month. Add the cells that fall in the same calendar month to get total active users. In our example, 400 activated users a month with 30% month 1 and 20% month 2 retention stack to 400, then 520, then 600 active users. Older cohorts generally retain better, so mature layers build a stable base.

How do I model a referral loop in Excel?

Use one row: loop-sourced new users next month equal active users this month times invites per active user times invite conversion. For example, 1,000 active users sending 400 invites at 30% conversion add 120 new users next month. Book those users as signups so they pass through the same activation and retention rows, and never add them on top of the active total. Put invites per active user on the inputs tab as a row by month and step it down, since a flat rate overstates late months.

How do I find which input matters most in my growth model?

Build a sensitivity table. Move one input up and down by a relative 10%, hold everything else fixed, and record month-12 active users and MRR. Sort the rows by the swing in MRR, largest first, and the top row is the input to work on this quarter. Then test the top two inputs together, and weigh how costly each input is to move before you commit to an experiment.

Sources

  1. Building Growth: Product, Process, and Team | Reforge Blog, reforge.com, 2018-07-24.
  2. Build an end-to-end quantitative growth model, Reforge, 2023-10-24.
  3. Growth Loops are the New Funnels | Reforge Blog, reforge.com, 2018-07-31.
  4. Build a growth forecast, Reforge, 2024-01-08.
  5. How to Build an International Growth Loop Model In 3 Steps | Reforge Blog, reforge.com, 2022-03-08.
  6. Use this spreadsheet for churn, MRR, and cohort analysis (Guest Post) at andrewchen, andrewchen.com.
  7. Increase user motivation, Reforge, 2024-01-10.
  8. What is good retention, lennysnewsletter.com, 2024-01-13.
  9. How to model virality & cohorts in a Financial Plan, giansegato.com.
  10. The Model Market Fit Threshold & What it Means for Your Growth Strategy, Brian Balfour, Brian Balfour, 2017-07-26.
  11. The Four Fits: A Growth Framework for the AI Era, blog.brianbalfour.com, 2025-09-25.