Reports
In this section you have several menu tabs:

Basic Metrics

In this section you can create and save custom reports. To create a custom report, choose metrics you want to see and click the “View result” button. If you would like to build the report after changing settings, use the “Refresh” button. You can choose up to 5 metrics.
You can change the following settings of the chart:
‘Group By’ section includes two lists: ‘Main groups’ with the basic criteria for grouping such as ‘Applications’, ’Country’, ‘Platforms’, etc. and ‘Custom user properties’ which contains custom properties that are being sent to ‘User profile’.
If you select any parameter in the ‘Group By’ dropdown list, except ‘None’, you will be able to see the result for the top values by ticking the box (Filter Top N).
This setting is optional for the ‘Main groups’ and mandatory for ‘Custom user properties’.
Also, you can select the number of top values to be shown (from 1 to 50) and select a specific metric to be displayed.
If you are going to group metrics by Custom user properties with numeric values, please note that only properties with up to 1,000 unique values could be used for grouping.
Moreover, you can turn in the following options:
  • Trend - add a trend function
  • Smooth - makes lines on the chart more smooth
  • Cumulative - add a cumulative function
  • Labels - if you previously created any labels, you can turn them on/off on the reports
Default report period is the last 30 days, you can change it in the top right corner. You can configure a filter in the report. Use already created filter template or custom segment to get more detailed data. To apply changes press “Refresh” button.
For example, if you update your custom user characteristic that shows how many friends your players invited, you can later monitor the distribution of the revenue metrics by the number of users a player added. Also, you can now filter Top N by the chosen metric when the grouping is active. When you group by the custom values of the user card, the active grouping is obligatory. If you need to build a report not for the whole user set but for a user segment, you can click the "Segments" button. To build a report after you’ve defined all the settings, click the “View Results” button.
You can save the report for further, share it with teammates or on Slack. You can find these options in the top right corner under the “Menu” sign.

Conditional formatting for tables

Conditional formatting review
Use this feature to highlight desired values in your tables, quickly evaluate metrics, and find relationships in the data.
It is available for tables in the ‘Basic Metrics’ or ‘SQL’ reports. After adding the report to a dashboard or sharing a link to it, conditional formatting remains intact.
Click ‘Conditional formating’ in the drop-down menu above the table to apply the formatting.
It will open a new window where you can select formatting conditions for each metric. There are two types of formatting:
  • Formatting by a specific value e.g. if the value is more than 5, the cell changes its color to the selected color.
  • Formatting using a color scale. In this case, all cells in the row will change their color but the color intensity will differ - the bigger the value, the brighter the cell, and vice versa.
If you check the box of ‘Format total values’, then the color scale will be applied to the ‘Total’ columns.
If grouping is applied, the second type of formatting will have two more options. Let’s say, you sum certain metric values by day, then:
  1. 1.
    If ‘Format by all metric values’ is selected, then the color scale is applied to the entire range and each cell is colored according to its value.
  2. 2.
    If ‘Format each column separately’ is selected, then the color scale is applied to each column separately based on its minimum and maximum values regardless of the metric values on other days.

Conversion Funnels

The Conversion Funnel report allows you to create conversion funnels based on the sequence of custom events. With this report you get statistics on the number of unique users who completed these events.
To launch the report, choose up to 4 steps by clicking the "Add step" button. The sequence here is important: if you take A, B and C steps, first you will get the number of users who completed the A event, then the number of users who completed both A and B events, then the number of users who completed A, B and C events during a selected period of time.
To specify the value of step’s parameters, click "Add parameter" button to the right of the step, choose a parameter and set value’s condition. Choose dates when events are completed by modifying the date range menu on the top right of the page. Click "View result" to see the funnel.
You can also set a time limit between two steps ("Step time limit" check button), make a step optional ("Optional" check button; in this case, two funnels will be built: with users who have and haven't completed the step) or set a time limit for the whole funnel. In the last case, if the user completes only 2 of 5 steps for the selected time, they will be calculated on these 2 steps, even if they complete all steps but it takes more time than you set.
You can also select the type for the funnel and choose between a table or a chart.
Also, you will be able to set an ‘Aggregation period’ to see how users pass the steps on the specific days, weeks or months. This chart shows the conversion and number of users at different steps like if this funnel was built only for the data point (day/week/month) of the horizontal axis.
For example, if you select aggregation by days and report time frame from July 1 to July 7, then for July 1 on the chart you will see only those users who started and finished the steps on that day.
To set a filter based on app version, channel, device or some custom segment, click the "Filter" button on the top right of the page. Compare the funnel for different segments by clicking “Add comparison”. The funnel will be built after clicking “View result” or “Refresh” buttons.
The number of unique users that completed events during a chosen time period is presented in the vertical axis of the chart.
The funnel can be saved by clicking the "Save" button in the top right corner. It will be available in the funnels list in the “Conversion Funnel” section.
After the funnel is created, you can see a grey icon to the right of each funnel step. A click on this icon shows the menu with the following options:
  • When the ‘Aggregation period’ is disabled, you will be able to see conversion dynamics for steps. It shows the distribution of the conversion by days between two neighboring steps. The denominator for this conversion always stays the same - it is the number of users who performed the funnel step. The numerator contains the number of users who converted on a specific day. For example, if you build a funnel from the 1st to the 7th of July, then for the 3rd of July you will see the users who performed the specific step on the 3rd of July related to users who performed this step for the whole period (1st to 7th of July).
  • “Create segment” allows to create a static segment, which contains users who completed funnel steps to the current one inclusively
Also, the results of the funnel can be exported as a .csv file by clicking the “Export” button in the top right corner.
This report requires Custom Event integration. Learn more here

Custom Events

The Custom Event report allows you to analyze and keep track of user activity collected as custom events.
Custom events are used to track particular user actions, which you specified for your app, such as:
  • Any action a user takes in the app (hits, shoots, moves, putting an item into the basket, etc.)
  • Taps on certain menu elements.
  • Users' search for items in a virtual shop, etc.
You can track both events and their parameters (properties) and you can set up to 20 parameters for each event. For example, if you have an event for battle creation, parameters can be duration, map, number of players, battle mode, etc.
When one or more events are integrated, you can start using the Custom Event report.
To build the report, select up to 3 events above the report, and to set a filter for event parameters, select a parameter and value.
You can change the following report settings:
  • Metric type – what you want to calculate; and it can be one of the following:
    • Number of events - the total number of performed events. It can be, for example, the number of item views or item category views, the number of shop openings from a certain screen.
    • Number of users completed event - count of unique users who completed events. Use it, for example, to calculate the number of users who shared a link or the number of users who logged in using a certain type of authentication.
    • Number of unique parameter values - count the number of unique parameter values. It can be, for example, the number of unique game areas opened by the users from a specific country or, if you pass the title of the article viewed by the user, you can find out the number of unique articles viewed by users.
    • Average parameter value - to see the average parameter number, select a metric and choose the parameter you want to calculate next to it. You can find out the average price of the viewed items or the average delivery price, the average user age, etc. if you pass these parameters.
    • Average number of events per user. Use it to find out the average number of combats the user engaged in, or how often they use the app for training.
    • Average sum of parameter values per user. To calculate the average sum of parameter values per user, select a metric and choose the parameter you want to calculate next to it. If you, for example, pass video view duration or combat duration, you can calculate the average sum of time periods the user spent battling or watching your video content.
    • Sum of the parameter values. To calculate the sum of parameter values, select a metric and choose the event parameter you want to sum next to it. If you, for example, pass the order value as a parameter, you can see the sum of all orders.
    • Minimum number of events per user. Use it to find out the minimum number of viewed ads longer than 10 min or the minimum number of processed photos in possession of paying users.
    • Minimum parameter value. To calculate the minimum parameter value, select a metric and choose the parameter you want to calculate next to it. You can, for example, group orders by acquisition channels and find out the one with the least sum.
    • Maximum number of events per user. Use it, for example, to find out the maximum number of live ops events your users participate in, the maximum number of ad views per user broken down by app version, etc.
    • Maximum parameter value. To calculate the maximum parameter value, select a metric and choose the parameter you want to calculate next to it. If you, for example, pass the discount percentage as a parameter, you can find out the maximum discount applied by your users, or, if you pass the combat duration, you can find out the longest combat duration to adjust the fighting sessions.
    • Median of parameter values. To calculate the median of parameter values, select a metric and choose the parameter you want to calculate next to it. If you, for example, pass the number of coins sent to a friend as a parameter, you can find out the median number of coins your players send to their friends.
    • Median number of events per user. Use it, for example, to find out the median number of completed training sessions with breakdown by training types or the median number of completed quests.
    • Median of the sum of parameter values per user. To calculate the median of the sum of parameter values, select a metric and choose the parameter you want to calculate next to it. Use it, for example, to calculate the median revenue from a paying user. % of users completed event among active users. Use it, for example, to find out the percentage of active users who view items and make purchases, the percentage of active users who participated in a live ops event, etc.
    Add up to 5 metrics to a single report. Use the metrics coupled with the selected events. Besides the set metrics, you are free to create your own custom formula. Use it, for example, to analyze the relationship of one event to another or even to two events or to find out the number of users who completed the first event but fail to complete the second, or even to calculate the number of users who completed all three events. In the formulas, use the operators described below. You can also carry out some arithmetic functions, for example, feel free to use the following operators: subtraction "-”, addition "+", division "/", multiplication “*” and numerical coefficients. You can also use parentheses () to specify the order of operations. These functions can be useful if you need to convert the value of a parameter from one currency to another, from minutes to seconds, to express the result as a percentage, or divide the number of events A by the number of users who completed event B.

Formula operators:

count(event) - allows you to calculate the number of performed events, e.g. count(A). Using the arithmetic operators, you can find out the number of started and unfinished training sessions, as well as apply grouping by the training objective:
count(event.param) - the number of events performed with the selected parameter. To specify the parameter, define it after a dot, e.g. count(A.parameter_name).
sum(event.param) - the sum of parameter values. For example, if you pass training duration as part of a ‘training complete’ event, you can calculate the total training duration of all users.
min(event) - the minimum number of events per user. For example, you can find out the minimum number of spins per player.
min(event.param) - the minimum value of event parameter. For example, you can find out the minimum value of coins players send to their friends or receive for completing a quest at someone else’s farm.
max(event) - the maximum number of events per user. Use it, for example, to calculate the maximum number of orders per user.
max(event.param) - the maximum value of event parameter. For example, you can use it to find out the maximum value of the order.
count_distinct(event)* - the number of users who performed the selected event e.g. the number of signed-in users. You can use operators and calculate the share of users who completed transactions out of total users who opened the shop.
count_distinct(event.param)* - the number of unique event parameter values e.g. the number of unique values of areas completed by users from a specific country.
avg(event.param) - the average value of event parameter, e.g. use it to find out the average number of coins acquired from a wheel of fortune or the average combat duration.
avg_per_user(event) - the average number of events per user, e.g. the average number of combats with friends.
avg_per_user(event.param) - the average sum of parameter values per user.
median(event.param)* - the median parameter value, e.g. the median payment amount.
median_per_user(event)* - the median number of events per user, e.g. the median number of items viewed in a catalog.
median_per_user(event.param)* - the median sum of parameter values per user, e.g. the median number of coins spent per user and grouped by level.
percentile(event.param, fraction)* - the percentile of the fraction parameter value (0-1), e.g. the 75th percentile of the total of all purchases - percentile(a.Sum, 0.75).
percentile_per_user(event, fraction)* - the percentile of the number of events among fraction (0-1) users, e.g. percentile_per_user(a, 0.5). The percentile is the value below which a given percentage of values falls. For example, our formula shows the 50th percentile of users who initiated the ‘trading order placed’ event. This means that, on average, 50% of users perform the ‘trading order placed’ three times or less.
percentile_per_user(event.param, fraction)* - the percentile of the parameter value sum among fraction (0-1) users. For example, the ‘money transfer’ event has an ‘amount’ parameter and we introduce the following formula - percentile_per_user(a.amount, 0.8). It means, that as a result, we get an 80th percentile for the ‘amount’ parameter per user.
percent_of_active(event)* - the percentage of users who completed the event out of all active users. For example, you can use it to find out the share of users who participated in a live ops event out of the total users in daily trend. least(expr1, expr2, ... expr_n ) - the lowest value among the specified expressions. For example, you can find out the minimum value of the coins that the user gains for performing certain actions (pass them to separate events) by specifying two ‘min’ operators with different events in the formula, and the final formula will find the lowest value: greatest(expr1, expr2, ... expr_n ) - the highest value among the specified expressions. For example, you used nested formulas to calculate the number of users who participated in live ops events and now you can find out an event with the highest number of participants.
coalesce(expr1, expr2, ... expr_n ) - returns the first non-null expression. If one of the listed formulas returns an empty result, then the final formula will turn in the first non-empty result as the final result. For example, you use several payment systems to complete transactions in your app and each of them has its own commission. You create a formula that describes how you deal with commissions from different systems. A user completes a transaction using one of the systems, the rest of them return empty results and all of this will be taken into account by the final formula, e.g. coalesce(avg(a.discount)*0.8, max(a.discount)*0.6)
round(expr,lenght) - rounding the value of the expression to the specified precision. For example, if you want to find out the ratio of the number of one event to another, then you can round the value to the desired precision: round(count(b)/count(a),1).
* - To speed up report loading, devtodev uses the HyperLogLog approximate calculation algorithm, that allows an error rate of up to 2%.
Metrics that require parameter selection for calculation use all parameter values except "null".
  • Aggregation period – the time period over which the data are aggregated (5 min, hour, day, week, month, year). To use a 5 min aggregation report the time frame should be 2 days or less.
  • View – chart type (chart, table or transposed table, area chart, and bar chart).
Also, there are powerful Grouping capabilities. You can select “on” in the Group by selector and then select up to 2 grouping levels. It can be user properties like app version, channel, country, language, device, paying capacity, paying status, campaign. You can also group values by custom user properties. For every grouping, you can select Top N filter to include into the report only Top N groups by events count.
And more complex grouping options such as Frequency and Parameter values grouping. Frequency grouping shows you how many users perform your events 1 time, 2 times, 3-5 times, and so on. So you can decide if they used it because it’s just a new button or feature in your app, or because it is a really useful feature. You can follow the frequency of use of any event dynamic and analyze how it’s changed over time or over app versions.
To analyze parameters of your events select “Parameter value” in a group by section then select the parameter and then one of the parameter functions. For numeric parameters it can be:
  • None - without additional grouping.
  • Distinct values - are unique values of the selected parameter. For every parameter value, you can calculate the total events count or unique users that perform an event with this parameter value (pick one of them in Metric view selector).
  • Distribution - is a grouping option that allows you to analyze unlimited numeric parameter values that will be grouped into the bins; for each bin, you can calculate total events count or unique users that perform events within this parameter value bin.
Text parameters are always analyzed by distinct values, so for every text value, you can calculate the metric chosen in the Metric Type list.
To see results, choose the events and click the "View result" or “Refresh” button.
If you'd like to work with data on your own, click the "Export" button and data will be exported as a .csv file. Data in the exported file can be sorted by days.
Also, you can save the report by clicking the “Save” button. It will be available in the “Custom Events” section.
The default report period is the last 7 days; you can change it in the top right corner. You can configure a filter in the report, use an already created filter template or custom segment to get more detailed data. Compare different segments by clicking “Add comparison”. To apply changes tap the “Refresh” button.
This report requires Custom Event integration. Learn more here

SQL Wizard

SQL Wizard allows you to create SQL-like queries and extract any type of data related to your project from the devtodev database.
Click "Add column" to start editing your query, then select columns for your report. You can choose any data about:
  • User data (install date, country, app version, etc.)
  • Basic events (sessions, payments, in-app purchases, tutorial steps, etc.)
  • Custom events (any parameters of any custom event that you've integrated)
After you select columns, the body of the query will be created. All connections (joins) between the tables are set, but you can change them if necessary.
Drag and drop column names to reorder them in the report. If you need to use an aggregate function (AVG, MAX, MIN, etc.), click the down arrow button right to the column name and select a function from the list.
To add conditions to your query, click "Add conditions" button and then add rules (or groups of rules and logical operations between them) by clicking "Add rule" / "Add group" buttons.
Finally, you can set the order of lines in the report by filling the "Order by" condition.
Click "View result" - and the results of your query will be shown in the table below. You can save this query to use it again in future by clicking the "Save report" button.
Please note that only 200 lines are shown here, but you can get complete data by downloading results as a .csv file.

Share reports with links

After the report is created, you don’t need to save it or add it to a dashboard to share with coworkers. To share, you need to copy a special link that contains all report settings. Click the drop-down menu in the top right corner and choose “Copy report URL”.
You can use this method to share any finished custom report or to set various settings and apply filters to the reports. After a user clicks the link, he will see a report with the selected settings: time period, applied segments, filers, etc. For example, you can share: a funnel built with the Conversion Funnels report that retains all the selected stages and filters, the Game structure report with selected metrics and filters, comparison of selected cohorts in the Cohort analysis report, a filtered list of users in the Users section, a configured User flow report, data on comparing retention rates of two cohorts who executed different events in the Retention by event report, and other valuable reports that allow you to quickly start a discussion of discovered correlations, issues and any other observations. Note, that if in the report settings you set a date range that is not within the time frame of raw data retention at the time of creating the report and you save the link, then the date range of the report will be changed. The retention period of the links is 1 year. After that the link gets disabled.