Why traditional analytics didn’t work

We needed a way to find out who uninstalled our app, as far as I know, most analytics services can’t track this information since iOS doesn’t provide a way to do this and because there’s no concrete way to track this type of information.

We use Mixpanel peoples analytics in-house to track a bunch of stuffs which works great and you can also set up notifications for users who have been inactive for a certain period of time to re-engage them, among others.

Since our app is strictly used for calling, we’ve noticed people are not as engaged, compared to say, a social app etc. I personally use our app only a handful of times a month to keep in touch with family and friends overseas. This makes tracking in-active users ineffective for us.

Looking for a better way: Epiphany.

The idea to actually dig deeper and track this information occurred to me when I decided to cancel my TV subscription since it was setting me back about $99 a month. I decided to purchase a Roku and Chrome Cast because I figured a Netflix subscription was good enough for me, so I called in and requested for a cancellation, a day after the cable guy came over for the disconnection and everything was done.

All well and good right ? Nope, I got a call the next day from the same cable company offering a 1 year offer I couldn’t refuse, talk about saving 80%. As you can see, they had a very effective and solid retention strategy in place.

So fast forward a couple weeks, the solution I came up it was pretty simple and straightforward but highly effective. Let’s get started,

Background Updates

First off, I needed a way for the app to stay in communicating with our server by sending heartbeats at certain intervals, so we know it’s still alive even when not in use.

Background updates provides you a way to wake your app in the background to perform short-lived tasks. This was introduced in iOS 7 so it seemed like a perfect candidate. Since this feature was not meant to be used as a way to track users but to improve the overall iOS apps user experience. I decided to keep things healthy by opting-in to have it wake the app only once or twice a day.

When your app is woken up in the background, you have 30 seconds to perform any updates you like, this was more than enough since all I had to do was ping the server to tell it the app was alive on the user’s device.

Limitations

Although background updates is highly effective; there was one fatal flaw you have to keep in mind, if a user decides to kill/close your app from the app switcher; this will effectively stop future background updates until the user manually opens your app again, which totally makes sense. That’s where push notifications comes in:

Push Notifications

Initially I wanted to use silent notifications, but I came to the realization that it had the same characteristics as background updates meaning if a user decides to kill/close your app, they’ll stop receiving silent notifications until it’s manually re-opened. So I ended up using user notifications.