Mobile Analytics Integration Pitfalls

Tony Larin
Mobile Analytics Insights
4 min readJan 7, 2015

I have played awhile with Flurry, MixPanel and Localytics with the same mobile app. Here are some integration errors I have made.

One Analytics Service

If you have only one analytics integrated into an app it will be hard to discover an error and impossible to find an answer to your question.

Solution: At least integrate Flurry and MixPanel.

No APP_LAUNCH_FIRST event

MixPanel and Localytics can’t create funnels for new users only. So if you want to, for example, collect Activation and Stickiness metrics you need to define it yourself in code.

Solution: Define APP_LAUCH_FIRST event in didFinishLaunchingWithOptions. To avoid firing it next time set up a flag in NSUserDefaults.

Too Many Non-User Generated Events

In the FollowMe app on launch I generate events in this order:

APP_LAUNCH_FIRST

APP_LAUNCH

SESSION_START

RADIO_SHOWN

RADIO_CHANNEL_CHANGED

The user didn’t do anything, events are generated by themselves. So Flurry’s User Paths Report becomes unusable:

Solution: Don’t send non-user generated events in Flurry. In that case you still can build funnels for new users, because Flurry has the built-in App Launch First event.

To be honest that not a big problem. The User Paths Report not so important and if you really need it use Google Analytics or Localytics, they separate screen views from events.

Not Rounded Fractional Parameters

When the user drags the slider in the FollowMe App, it generates a PODCAST_SEEK event with a position parameter.

The position is a fractional number between zero and one. So take a look at the report:

It’s confusing. The numbers are so unique that they are not grouped properly. If we had rounded it to two decimal places we may have had some insights about the user’s behaviour.

Solution: Round fractional parameters to two decimal places. Think ahead about your reports; maybe you need to send one parameter in different formats, like two decimal places and one decimal place.

Development Analytics Key in the AppStore

I use two integration keys of the same analytics in the same project. One of them is the Development key other one is the AppStore key. This approach makes analytics data cleaner. Testers and developers do not interfere the real user’s data.

But a few times we have sent a version to the AppStore with the Development key. It’s a terrible mistake. Retention reports were broken, it was really hard to compare data from the different app versions.

App with dev-key was released to AppStore at 14 of November and was fixed at 26 of November

Solution: Don’t release versions in a hurry, make a before-release checklist. Or you can automate the build process for AppStore.

MixPanel’s Identify call without createAlias call

MixPanel’s Identify method allows you to use your own user id, for example, login name, email or phone number. Calling this method also enables MixPanel’s useful People extension.

MixPanel’s People User Profile Example

In the Follow Me App, I called Identify right after sending the APP_LAUNCH_FIRST event. It was a foolish error. Take a look at the documentation:

Calling identify: with a new ID will change the ID being sent with future events. If you change the ID in the middle of a funnel, the funnel will break — we won’t be able to associate the old ID with the new.

So I wasn’t able to create funnels starting with APP_LAUCH_FIRST

Solution: Always call createAlias MixPanel method before Identify.

MixPanel’s identify call after createAlias call

I have not figured it out completely, but if you call createAlias and identify correctly MixPanel will partially drop you funnels.

Compare Activation funnels for WAYD-messenger in Flurry and MixPanel.

MixPanel Activation Funnel (incorrect)
Flurry Activation Funnel (correct)

Solution: I’m still trying to fix this in my projects. Meanwhile try to avoid Identify and createAlias usage and double-check your funnels in Flurry.

Event APP_LAUCH_FIRST in didFinishLaunchingWithOptions for Localytics

Localytics opens the user session in applicationWillEnterForeground or applicationWillBecomeActive, so if you fire some events before you will not see them in Localytics. (I have fired APP_LAUNCH_FIRST event in didFinishLaunchingWithOption).

Solution: Call [[LocalyticsSession shared] resume] right after Localytics initialization.

If my article was helpful, hit the Recommend button and subscribe for future ones.

--

--