Today we look at monetizing your mobile app through in-app ads as a given. Yet rapid market growth and resulting frequent changes keep mobile publishers on their toes. So in order to keep up, it’s necessary to learn working with metrics in the most efficient way to ensure revenue success. This is especially important for those who just got their first app(s) published.

What are the major metrics?

The publisher shows an ad in their app and expects monetary gain for each impression. Sounds pretty simple, but is it? In order to understand where your revenue comes from and how to add to it, let’s lay out the essentials of revenue metrics.

The first and the most fundamental metric is Impression — an ad displayed on a user’s mobile device. And before we go any further, let’s keep in mind that there are different cost models that are applied to ad campaigns:

  1. CPM (Cost per Mille) is a cost model that is based on 1,000 ad impressions. This metric helps define the price of ad space. CPM pricing is best suited for campaigns aimed at increasing brand awareness.
  2. CPC (Cost per Click) is an advertising model where advertisers pay the publisher for each time a user clicks on the ad. CPC pricing is perfect for campaigns aimed at specific user actions, such as installing an app or becoming a registered user, etc.
  3. CPI (Cost per Install) is a model where an advertiser pays whenever the user installs the advertised application.
  4. CPA (Cost per Action) is a pricing model to evaluate performance — advertisers pay a fixed amount based on a pre-specified action.

Impressions are expected to produce earnings, however, there is no control over further actions such as an ad click or an app download. But it is always possible to access information about ad impressions and use it to see how much revenue has been generated based on the actual number of impressions shown.

A price for one ad impression is calculated by dividing revenue by total number of impressions:

Because we can easily predict that the price for one impression will be low, it is common to calculate your effective cost per mille (eCPM), which is calculated by dividing your total revenue by the total number of impressions your app served, and then multiplying by 1,000:

By operating the metrics relating to impressions and their average revenue, you can forecast your overall revenue:

Before showing an ad there is a process of requesting it from an ad network (Request). Not every request can be answered with a matching ad, that’s why we need an additional metric informing us about the number of ads actually filling the ad space in the application. It’s what we refer to as Fills.

When we know how many ad requests were made and how many of them were answered by ad networks that supplied ads, we can make a judgement on the fill capacity of the network. The metric to do that is Fill rate and it presents a percentage of ad requests that are filled by the ad networks. This is calculated by dividing the number of fills an app actually downloads by the number of ad requests by the app:

Some of the downloaded ads will not be shown, because due to the logic of the application the moment for the display might not arrive or the user might leave the application before the display moment. The Display Ratemetric shows how many uploaded ads are actually shown.

And, vice and versa, you can use Display rate stats to evaluate the number of Impressions:

By adding Fill rate we have this more general formula:

By analyzing these metrics, you can look at what income consists of in more detail:

Note that in this formula, revenue depends on the parameters related to the ad display logic (Requests and Display rate) and on the parameters related to the ad network performance (Fill rate and eCPM).

Does income really depend that much on the logic of ad display and network performance?

What do we mean by “the logic of ad display”? These are the rules by which ads are shown in the application; that is, how and when they are shown. When determining at what points ads are displayed (level completion, when a reward is requested, death in the game, transition between pages in a book, etc.), you need to take into account the time period of these displays, namely the expected time interval (Impression Period) between two ad displays with the same format on the device. Sometimes this period can be determined with high accuracy. For example, in the case of small banners, it will be the time between refreshing the banners (Refresh Period). You can also consider the period statistically. For example, when you know that the display occurs at the end of the game level and you know the average time to complete this level. It’s important to follow the statistics of the average time between displays as well.

If you don’t collect insights into your Average Session Count per User and Average Session Length, then we certainly recommend to begin collecting this data as soon as possible. With this data, you can calculate the most suitable period between displays (especially in the case of full-screen ads), as well as estimate the expected number of ad impressions per user, per session:

Conversely, you can calculate the optimum time between two displays based on how many ads are planned to be shown to the user in one session:

Typical cases of logic influencing performance

Situation #1: The ad was uploaded, but the user left the session or the display moment has not arrived (according to the application logic). The fact that the ad was not shown has a negative effect on the Display Rate. The degree of this effect depends on the frequency of such cases and the number of successfully displayed ads per session. On the other hand, if you show 10–20 full-screen banners in one session, always uploading ads in advance, then you face no problems here, because the final numbers won’t be affected by the costs of ads pre-loading. It’s impossible to show 100% of all uploaded ads — the user will eventually leave the application at some point and the session will be interrupted. In that case, the uploaded ads most likely, won’t be used again.

The variants of the ad cycle results depend on the accuracy of Impressions made in accordance with the app logic. The best scenario unfolds when ads are displayed right before the end of the session: in this case, the user will see an ad before leaving the app, and the next one won’t be uploaded and lost. The most common scenario is when the user sees the ads and leaves the application in the middle of the session. An unfortunate scenario is enacted when the interval between Impressions is poorly calculated, thus the user leaves the application right before the ad is shown.

However, the situation needs action if you display 1–2 full-screen ads and have a high percentage of undisplayed uploaded ads. In this case, there has probably been a poor choice of the ad location during the session or bad timing with the moment of its uploading. It is recommended to calculate Impression Period more accurately and adjust the app logic.

However, the situation needs action if you display 1–2 full-screen ads and have a high percentage of undisplayed uploaded ads. In this case, there has probably been a poor choice of the ad location during the session or bad timing with the moment of its uploading. It is recommended to calculate Impression Period more accurately and adjust the app logic.

Situation #2: The ad isn’t loaded at the designated time of display according to the app logic, so the ad won’t be shown and the moment will be lost. It’s important to make sure that Fill rate is doing well and that enough time is allowed for an ad to load between two Impressions. Keep in mind that the loss of impressions does not always lead to a loss of income, since the price for one impression might be higher rather than several impressions in a row. Imagine that you set the Price floor and load ads only with a price above a certain threshold. In this case, the advertisement was searched longer, but could cost significantly more, and its eCPM was higher. In this situation, much depends on network performance.

Directly affecting network performance is quite difficult, but it is possible when making direct deals with ad networks. You can also influence performance indirectly. For example, use multiple networks in your mediation and allow networks to work together to increase overall Fill rate. In addition, good traffic is valued by networks and is well paid. In general, the most frequently valued new unique users come from the Tier 1 group, where the price for displaying advertising will is maximized.

Going back to metrics, it is important to remember that the total balance between Fill rate, eCPM and ad display logic is quite difficult to track if one of the parameters changes, because these metrics significantly affect one another. Therefore, it will be more convenient and more useful to evaluate the effectiveness of monetization with ARPDAU (Average Revenue Per Daily Active User) The logic and profitability change, but users remain. You need to divide the daily income by the number of users and multiply it by 1,000, so that the total numbers are clearer.

A tip here is to always look at APRDAU separately for each country, since the price of advertising and user behavior vary depending on geographic location.


The truth is that the main indicators of ad revenue are expressed only in a few metrics. Directly affecting network performance is possible only in the case of personal deals with the network. However, with a competent assessment of the ad sources performance, it is possible to adjust the advertising strategy more precisely and increase the profitability of the application. For example, you can use several networks as part of mediation and allow networks to work together to increase the total fill rate, as well as use modern technologies like Programmatic and Parallel Bidding that allow you to get an objective cost of each impression in real-time. In addition, good traffic is valued by all ad sources and is sold faster. In general, new unique users from the Tier 1 group are highly valued — the price for displaying ads will be the maximum. Having taken good care of your app’s monetization, you can organize the process of purchasing traffic more accurately and, therefore, increase your income.