Retention Funnel

A Shiny App to Track User Retention

Ali Baghshomali
Growth Manager

What is a "Funnel"?

A popular concept within the tech industry, funnels are used to measure the loss or gain of a cohort as they move through various stages.

The most common (and important) type of funnel is a "user retention funnel". This type of funnel follows a cohort of users from when they arrive at the service until they have become a loyal user.

But why is retention so important?

The Importance of Retention

With the advent of new advertising methods, acquiring users has become more and more correlated with budget and financial means. As a result, the sheer number of users that arrive at a service - or sign up for it - is no longer a reliable metric for measuring its appeal.

This leaves metrics that are indicative of the user's interactions with the service, which in our case are "Engagement" and "Retention". The former is usually defined as a small interaction with the product post-signup. The latter, however, shows long term usage of the service, and is indicative of the fact that the users are happy with the product, since the continue to use it.

Because of this, retention has become what is arguably the most important metric for a web/mobile service.

Setup of Retention Funnel Shiny app

This retention funnel takes four inputs:

  1. Starting number of users (numeric value)
  2. Signup rate (percentage)
  3. Engagement rate (percentage)
  4. Retention rate (percentage)

The starting number takes a numeric input, since it is only bounded on its low end (can't be less than 0). The other three metrics are all rates, and have to be between 0 and 100. As a result, the ideal input system is a slider. This allows the user to easily adjust the values and see the result of an increase or decrease in drop-off at each stage.

The results are all output numerically, and a bar plot is drawn to give visual representation of the cohort size at each stage of the funnel. The following is an example of said plot, with some typical rates: Arriving cohort size: 10,000 | Signup rate: 80% | Engagement: 50% | Retention: 25%

Sample Bar Plot

valuesVec <- c(1000, 800, 400, 100) ;namesVec <- c("Arrived", "Signed Up", "Engaged", "Retained")
barplot(height = valuesVec, names.arg = namesVec, col = c('grey', 'purple', 'blue', 'green' ))

plot of chunk unnamed-chunk-1