Wow quite the mixpanel ad. My own experience started with Google Analytics which turned sour. Their Android API only supports one tracker instance and reporting id so you can't have different components in the app using it simultaneously. While it does support events, it only supports reporting one value with the event. And it only shows the average for numerical values which is spectacularly useless - you want to see the distribution of the values. (They also only have two prices - free and $150k per year.)

Mixpanel was tried next. Thankfully you can supply a JSON object of key values with each event (properties in their terminology) which matches our usage model. Unfortunately the reporting is nowhere near as useful as Google Analytics. For example there are no pre-canned reports, so if you want to find out anything (eg platform, version and country distributions) you have to build new reports. (I have the sneaking suspicion it was all designed by architecture astronauts - after all data is data when abstracted as data.) You can't copy reports across projects. Reports have to start with a particular event name - you can't do them across events (ie any name). Their realtime view doesn't show any properties. When doing a multi-dimensional analysis (eg country then operating system), everything except the last one has to be an expression - you can't say slice by all countries then by all operating systems - the country bit would have to be an expression. They do use geoip to add country information, but won't add region/state or ISP information. That makes it hard to work with US data. Their Android code is visible, but requests for an explicit license have taken over a month and they still can't make their mind up.

Despite all this, Mixpanel do have one redeeming feature. You can get an export of your raw data (comically bad mishandling of timezone issues aside). It isn't real time (generated once a day). However Google Analytics does not let you get the raw data - only queries. We have resorted to building our own analysis tools on the exported data from Mixpanel, but are still stymied by lack of geoip for region and isp. (Yes there have been support requests, no they haven't actually done anything about these and many other issues.)

I had considered trying out Localytics, but thankfully this article saved me that effort.

Some of the other products like Flurry aren't usable because they also do advertising which is a conflict of interest for our use cases.

Some lessons:

* You don't really find out the various gnarly issues with any of the analytics services until you are quite far down the road with integration and getting a variety of data back and need to slice and dice things in various ways

* Don't touch them unless you can get the raw data back out, not just aggregated reports

* Make sure they can coexist in your apps (ie other libraries/components in the app can also use the same service but with a different id)

* Make sure client libraries are open source, read the code and make sure there is an actual license attached so you are on solid ground when you need to make modifications (you will always need to)

* The various services all suck in some way. Hopefully someone will come along that doesn't.