Client analytics systems
Imagine that you are a budding entrepreneur who has just made a website and a mobile application (for example, for a donut shop). You want to connect user analytics with a small budget, but don’t know how. Everyone around uses Mixpanel, Facebook analytics, Yandex.Metrica and other systems, but it is not clear what to choose and how to use it.
What are analytics systems?
First of all, I must say that the user analytics system is not a system of analytics of the logs of the service itself. Monitoring how the service works focuses on stability and performance, and is carried out separately by developers. User analytics was created in order to study precisely the user's behavior: what actions he performs, how often, how he reacts to pushing or other events in the service. Globally, user analytics has two areas: mobile and web analytics. Despite the different interfaces and capabilities of web and mobile services, work with the analytics system in both directions is approximately the same.
Why is this needed?
User analytics needed:
- to monitor what happens when using the service;
- to change the content, and understand where to develop, what features to add / remove;
- to find what users don’t like and change it.
How it works?
To study user behavior, you need to collect a history of this behavior. But what exactly to collect? This question is up to 70% of the complexity of the entire task. Many participants in the product team must answer it together: product manager, programmers, analysts. Any mistake at this step is expensive: you can not collect what you need and collect something that will not allow you to make significant conclusions.
Once you have decided what to assemble, you need to consider the architecture of how to assemble it. The main object with which analytical systems work is an event. Event is a description of what happened that is sent to the analytics system in response to a user’s action. As a rule, for each of the actions selected for tracking in the previous step, the event looks like a JSON package with fields that describe the perfect action.
A JSON package is a text file that describes what happened. For example, a JSON package may contain information that user Mary performed the Started game action at 23:00 on November 15. How to describe each action? For example, a user clicks on a button. What properties need to be collected at this moment? They are divided into two types:
- super properties - properties that are characteristic of all events that are always present. This time, device idi, api version, analytics version, OS version;
- event specific properties - these properties are arbitrary and the main difficulty is how to choose them. For example, for the “buy coins” button in the game, such properties would be “how many coins the user bought”, “how much the coins cost”.
An example of a JSON package in a language learning service:
But why not just collect everything in a row?
Because all events are created manually. In analytics systems, there is no “save everything" button (and that would be pointless). Only those actions from the service logic that are interesting to some part of the team are collected. Even for each state of a button or window, not all events are usually of interest. For long processes (for example, the level of the game), only the beginning and the end may be important. What happens in the middle may not be collected.
As a rule, the logic of services consists of objects - entities. It can be a coin entity, a level entity. Therefore, it is possible to compile events from entities, their states and actions. Examples: “the level has begun”, “the level has ended”, “the level has ended, the reason is eaten by the dragon”. It is desirable that all entities that can be “discovered” are closed so as not to violate the logic and not complicate themselves further work with analytics.
How many events are in a complex system?
Complex systems can handle several hundred events that were collected from all customers (product manager, programmers, analysts) and carefully (!) Brought to the tablet, and then to the service logic. Event preparation is a big interdisciplinary work that requires everyone to understand what needs to be collected, attentiveness and accuracy.
Let's say we came up with all the interesting events. It's time to collect them. To do this, you need to connect client analytics. We go into Google and look for mobile analytics (or choose from the well-known: Mixpanel , Yandex.Metrica , Google Analytics , Facebook analytics , Tune , Amplitude ). We take the SDK from the site and embed it in the code of our service (hence the name “client” - because the SDK is built into the client).
And where to collect events?
All JSON packages that will be created need to be stored somewhere. Where to send them and where will they be going? In the case of a client analytic system, she is responsible for this. We do not know where our JSON packages are, where their storage is, how many there are and how they are stored there. The entire collection process is performed by the system and does not matter to us. In the analytics service, we gain access to your personal account, where we already see the results of processing the initial behavioral data. Further, analysts work with what they see in your account.
In the free versions, the source data is usually not downloadable. In the expensive version there are such opportunities.
How long will the connection take?
The simplest analytics can be connected in an hour: it will be the App Metrika, which will show the simplest things without analyzing custom events. The setup time for a more complex system depends on the selected events. There are difficulties that require additional development:
- Is there a queue of events? For example, how to fix that one event cannot come earlier than another?
- What to do if the user has moved the time? Changed the time zone?
- What if there is no internet?
On average, you can set up Mixpanel in a couple of days. When it is planned to collect a large number of specific events, it can take a week.
How to choose which one I need?
General statistics in all analytical systems works fine. Well suited for marketers and sales people: you can see the retention, how many users spent in the application, all the basic high-level metrics. For the simplest landing page, Yandex metrics will suffice.
When it comes to non-standard tasks, the choice depends on your service, analytical tasks and events that need to be processed to solve them.
- In Mixpanel, for example, A / B tests can be performed. How to do it? You create an experiment in which there will be several samples and make a selection (you assign such users to A, others to B). For A the button will be green, for B it will be blue. Since Mixpanel collects all the data, it can find the device id of each user from A and B. In the service code, using the SDK, tweaks are created - these are places in which something can change for testing. Further, for each user, the value (in our case, the button color) is pulled from the Mixpanel. If there is no Internet connection, the default option will be selected.
- Often you want to not only store and study events, but also aggregate users. The same Mixpanel does this automatically in the Users tab. There you can view all the permanent user data (name, email, facebook profile) and the history of user logs. You can look at the user data as statistics: the dragon ate 100 times, bought 3 flowers . In some systems, user aggregation can be downloaded.
- What is the main coolness of Facebook analytics ? It combines the visitor of the service with his Facebook profile. Therefore, you can find out your audience, and most importantly, then convert it into an advertising audience. For example, if I visited the site 1 time, and its owner included ads (autofillable audience in Facebook analytics) on visitors, then in the future I will see ads on this site on Facebook. For the site owner, it works simply and conveniently, you just need to remember to put a daily cap on the advertising budget. The minus of Facebook analytics is that it is not particularly convenient: a rather complex site that is not immediately clear, it does not work very fast.
Almost nothing to do and everything works! Probably there are cons?
Yes, and one of them is that usually it is expensive. For a startup, it can be around $ 50k per month. But there are also free options. Yandex App Metrica is free and suitable for the most basic metrics.
However, if the solution is inexpensive, then the analytics will not be detailed: it will be possible to see the type of device, OS, but not specific events, and it will not be possible to create funnels. Mixpanel can cost 50k dollars a year (for example, an application with Am Nyam, can eat so much). In general, access to data is often quite limited in all. You can’t imagine and run your own models. Payment is usually carried out monthly / periodically.
But the worst thing is that even Mixpanel considers the amount of data that is characteristic of an active mobile application as an approximation (openly indicated directly in the documentation). If you compare the results with server analytics, the values will diverge. (For information on how to create your own server analytics, read our next article!)
The big minus of almost all analytical systems is that they restrict access to raw logs. So, launching your own model on, it would seem, your own data will not work. For example, if you look at the funnels in Mixpanel, you can only calculate the average time between steps. More complex metrics, such as median time or percentiles, cannot be calculated.
Also, often the ability of complex aggregations and segmentations is not enough. For example, the cunning groupby “to unite users who were born in 1990 and bought at least 50 donuts each” may not be available.
Facebook analytics has a very complex interface and is slow.
And if I turn on all systems at once?
Great idea! It often happens that different systems produce different results. Different numbers. In addition, some have one functional, secondly another, others are free.
In addition, several systems can be included in parallel for testing: for example, to familiarize yourself with the new interface and gradually switch to it. As in any business, here you need to know the measure and connect the analytics in such a volume that you can keep track of (and which will not slow down network connection).
Мы все подключили, а потом зарелизили новые фичи, как добавить ивенты?
Так же, как при подключении аналитики с нуля: собрать описание нужных ивентов и с помощью SDK вставить в клиентский код.
Надеюсь, что ответы на частые вопросы будут вам полезны. Если они помогли вам понять, что клиентские аналитики не подходят вашему приложению, советуем попробовать свою серверную аналитику. О ней я расскажу в следующей части, а затем расскажу и о том, как воплотить это в своем проекте.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какими системами клиентской аналитики вы пользуетесь?
- 9%Facebook Analytics4
- 43.1%Google Analytics19
- 34%Yandex Metrica15
- 29.5% by other 13
- 15.9% with your system 7
- 15.9% Nothing 7