How to Model Viral Growth: Simple Loss

6 min read Original article ↗

This post is the second in a series in which I show you how to model viral growth. We started with the simplest possible model, and we are working our way up to a model that simultaneously accounts for non-viral channels, how you retain users over time, and even how a user's virality changes over time. A model like this can arm you with realistic expectations, and can give you a predictive tool that you can keep up to date with real data.

You can read the first post here.

Recap

In the last post, we built a hybrid model of growth that accounts for both viral and non-viral channels. We saw that when our viral factor is less than one, we can interpret it as the amplification factor a = 1/(1-v). To calculate our total number of users, all we have to do is multiply the number of users acquired through non-viral channels by our amplification factor.

Although our model was a good first step, it still has major issues. For example, we assume that when we acquire a user, they stay with us forevermore. This is clearly over-optimistic: we stop using products all the time. We can forget about a product. We can stop liking a product. We may have never liked a product to begin with.

Let's rebuild our model to incorporate a simple representation of user loss.

Follow along and experiment for yourself with this Excel spreadsheet: "How to Model Viral Growth.xlsx"

The Hybrid Model, with Simple Loss

Let's assume our viral factor is 0.2, and that we have these non-viral channels:

  • Launch press, attracting 70,000 intial users
  • App store search traffic, providing 24,000 new users per month
  • Direct traffic, providing 10,000 new users per month

(See the sheet labelled "4. Simple Loss".)

Now let's assume that every month there is a 15% chance that any particular user will stop using our product. Sounds reasonable, right?

Well, as a consequence, this means that every month we should expect to lose about 15% of our total user base. Let's see what that looks like.

After the initial spike provided by our launch press, our growth seems to slow down. In fact, it looks like our growth might slow to a complete halt, even though our non-viral channels are constantly supplying new users, and even though our viral channels are constantly working their amplification magic.

What's going on here?

To make this effect more obvious, let's set our viral factor to 0 and our monthly loss rate to 40%.

Ouch!

Let's take a look at the numbers.

After our launch press, our gross growth quickly stabilizes at 34,000 users per month. But look at the loss column. Since we lose a percentage of our user base each month, as our user base grows and shrinks, our loss also grows and shrinks. In fact, our user base will tend towards a fixed size, because eventually our loss will equal our growth.

Carrying Capacity

Our growth and loss rates directly determine our final number of users, which in this model is known as the carrying capacity. The carrying capacity is defined as the number of users where the rate at which we lose users equals the rate at which we gain users:

U•l = g

U is the carrying capacity; l is the rate at which we lose users per month (or the probability that we lose any particular user in a month); g is our monthly non-viral growth rate.

We can rearrange this definition to give us a formula for the carrying capacity:

U = g/l where l ≠ 0

To double our final number of users, either we could double our non-viral growth rate (e.g. by investing more heavily in our non-viral channels), or we could halve our loss rate (e.g. by improving our first user experience, making a more useful or entertaining product, and focussing our marketing channels at better targeted users). We would most likely do some mixture of both.

In our current example, g is 34,000 users per month, and l is 40% per month. The formula predicts that our final number of users U will be 34,000/0.4 = 85,000. Looking at the graph, this is exactly what we see.

Carrying Capacity with Virality

How do we modify the carrying capacity formula to account for virality?

Remember: when our viral factor is less than one, we can interpret it as the amplification factor a = 1/(1-v). Since the amplification factor applies to our non-viral growth rate g, we can multiply it directly into the carrying capacity:

U = a•g/l = g/(l•(1-v)) where l ≠ 0 and v < 1

Perfect for napkins and backs of envelopes!

Let's return to our first example, where our growth was slowing. Here, g is 34,000 users per month, l is 15% per month, and v is 0.2. The formula predicts that our final number of users U will be 34,000/(0.15•(1-0.2)) = 283,000. Again, this is exactly where the graph is headed.

The Curse of Simple Loss

With realistic numbers, this model can be sobering. For example, with a monthly non-viral growth rate of 40,000 users, a monthly loss rate of 15%, and a viral factor of 0.2, we end up with no more than 330,000 users. This is nothing to be sniffed at, of course — imagine 6 stadiums, each of which can seat 50,000 people, and each of which packed to the rafters with people who use our product — it's great, but we want a model that can paint a better picture.

In our previous model, we never lost any users. In our current model, we rapidly lose them all. Reality, as ever, lies somewhere inbetween. In my next post, we will rebuild our model once again, and we will find an even better way to reason about virality and retention.

You can read the next post here.

Summary

  • User retention can be simply modeled as a fixed chance of losing a user in each time period
  • In this model your user base will grow to fixed number U, also known as the carrying capacity
  • Your final number of users is U = a•g/l = g/(l•(1-v)), where g is the non-viral growth rate, l is rate at which you lose users, and v is your viral factor

If you like this post, then follow me on LinkedIn! In addition to this series on virality, I'll share interesting links about the web, technology, and entrepreneurship :)

Thank you to Andrew Chen, George Zachary, Elliot Shmukler, and Reid Hoffman for reading drafts and debating these ideas.

Til' next time!