Introducing Retentioneer, a retention analysis script written in R

In an effort to continue learning R and gain a deeper understanding of how various metrics are calculated, I’ve been working on a few scripts to analyze user behavior. The first was the script that let you visualize your active users by signup cohort and today I’m happy to open source a new one, a retention analysis script that I’m calling Retentioneer (cause everything needs a cool name, right?).

Retentioneer is a script that lets you measure how long your app’s users remain active after signing up broken down by which month or year they signed up in. You can check it out on Github for complete instructions on how to use it and the configuration options available.

If you’ve never seen a retention curve before, here’s an example that you might make it clearer:

My friend Adam Weeks cofounded Brewski Me, a popular iPhone app which helps users keep track of the craft beer they drink. By running Brewski Me’s activity data through Retentioneer we get the following yearly retention curves:


By combining a little bit of knowledge about the history of the app with this chart, we can learn a lot:

From 2011 through 2013 Brewski Me had about a 34% 90-day retention rate, meaning that more than 1 in 3 users used it for longer than 3 months (side note: you can configure the script to count only users who were active exactly n-days days after signing up or count them if they were active on or after n-days).

Why the drop in 2014 in 2015? Three possibilities:

  • In mid-2014, Brewski Me changed from a paid app to a free app. We suspect that users who paid up front were more likely to be engaged long term compared to later users who could try it out for free.
  • Because we’re counting a user as retained if they were active at any point after 30, 60, 90 days etc, users who signed up in 2011 – 2013 have simply had more time to come back to the app compared to users who signed up in 2014 and 2015.
  • Finally, the rise of its main competitor Untappd and the social network effects it created may have led some users to switch away from Brewski Me.

In future posts I’ll go into more detail on some of the things I learned working on this including the impact of using activities measured to the second vs measured by just the date and how segmenting your users before running their activity data through this script might make more sense depending on the type of app.

One thought on “Introducing Retentioneer, a retention analysis script written in R

  1. Calculating D1 Retention Rate – Matt Mazur

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s