Monetizing mobile games through advertising: six common mistakes that lead to revenue loss
We are starting to publish video presentations (along with transcripts) from the "Game Industry" conference that took place in July. The first presentation is by Alexander Vasiliev, a partner manager at Yandex Advertising. His talk is dedicated to the main mistakes that mobile game developers make when integrating ad monetization.
The next "Game Industry" conference will take place on October 15-16 in Moscow. You can learn about its speakers and buy tickets here. By the way, we have already published a brief summary of Vasiliev's lecture, which you can find at this link.
If the YouTube video doesn't load, you can watch the presentation on "VK" here.
First Mistake: Using Only One Ad Network
I still see some products that use only one network. This is usually justified with phrases like, "I set up one network, monetization is working, everything is great, why think about anything else?".
If you have a single provider for a particular service, then you are somewhat dependent on the mood and preferences of that ad network. The network operates as it sees fit since any impression, if it needs to happen, will occur solely through it.
By adding additional networks, competition arises; networks have to work harder to win each impression, and as a result, there is additional optimization, contributing to an increase in bids.
An increase in bids means an increase in overall revenue.
However, it is certainly not advisable to go to the other extreme of adding every available network. In that case, the application simply won’t function effectively.
So, you need to find the optimum.
How can you find it, and which networks should you choose?
First of all, pay attention to the geography of your users. Take the time to study and observe the dynamics. This is necessary to select the networks that best suit your needs.
Situations often arise where we initially focus on the giants we hear about every day, forgetting about more niche networks that might be more effective in monetizing the specific users you have.
Additionally, it is important to look at the advertisers' databases. Some ad networks may be stronger in promoting certain mobile applications, while others may cater to entirely different ones. Some have advertiser databases focused on, for example, financial services, while others focus on puzzles. Therefore, it’s always important to consider the advertiser database. A well-targeted database can increase user interest in the creatives you present, which can also reflect on bids.
The advertising format is also a significant factor when choosing ad networks. Not every network can support the formats you're interested in.
Moreover, bids are, of course, an essential factor. It's vital to find effective bids that will perform well over time and lead to increased revenue.
Second Mistake: Not Updating the SDK
This is also a typical error. Often, if the creatives are showing and there are no crashes, developers delay the updates considerably.
To explain why this should not be the case, let me share a bit about how the system works overall.
Advertising display in mobile applications, through which developers monetize users, is only the tip of the iceberg. Essentially, it is designed so that advertisers coming into the ad network with their products and services can achieve their desired conversions, meaning they can promote what they brought.
Most advertising campaigns, especially in Russia, are targeted and operate on a CPA (Cost Per Action) strategy, meaning payment for a specific action, whether it's an installation, a website visit, a purchase of a specific product, or a booking of a particular service.
In this process, the network pays the developer directly for the impression that took place.
The economy of this entire process hinges on conversions.
Therefore, the network is primarily interested in achieving these conversions. With each new version of the SDK, not only does functionality and reliability improve, more importantly, new methods to increase conversion rates are developed. Improvements in conversion on your platform positively influence bid sizes.
Third Mistake: Not Caching Ads
This is a very basic mistake that I also see quite often.
What does it entail? To illustrate, let me give a common scenario.
You’re riding the subway. You’re playing a mobile game. Suddenly! A black screen with a spinning circle.
What does this mean?
For the user, it means that after a few moments, they will close the app. At best, they will restart it, but they could also switch to another project.
For the developer, this results in losing the traffic and user that they worked so hard to attract. Additionally, this causes a loss of valuable impressions, which could have generated extra revenue. There’s also the time during which the player could have completed a few more levels, between which there could have been some more impressions.
Consequently, the player loses interest, the project loses loyalty, and the developer loses income.
This problem can be overcome. The application needs to cache a reserve of creatives for the session.
How many creatives can you keep in reserve? A hundred will be enough.
But another problem arises here.
Let’s say we have a casual game. I open it, complete two levels, then finish the session and go back to work.
This means that out of a hundred creatives, only two were displayed. The rest went to waste. In this case, the show rate metric begins to operate within the system and model.
This metric is significant for assessing the app from the network's perspective. Based on this, the network decides whether to select better options for you (with higher bids) or not.
This metric should not be neglected, as the following situation will arise: the network tries and selects some advertising creatives for you, but they aren’t shown. What will the network think? Well, why should I bother picking? You guys aren't showing anything anyway, so I’ll just give you whatever comes along.
With ads selected on a "whatever comes along" basis, conversion is unlikely to occur, and they probably won't even get displayed. In the end, low show rate numbers start to deprioritize the app in the eyes of the network. It then becomes very difficult to reverse this situation.
Therefore, it’s essential to monitor the show rate, ensuring it's at least 20%.
The higher the show rate, the more interesting bids and more appealing ads the developer receives for monetization within their app.
Fourth Mistake: Blocking Too Many Topics
To explain this error, let's consider the following hypothetical situation.
Suppose I am a developer. I have an app called "Luxury Racing."
Given that my game is about racing, cars, and tracks, I might think that the ads in my app should only be related to this theme.
Now, let’s look at the player. Suppose they not only play but also drive a car. Does this mean they know about brake pads, brake fluid, or transmissions?
Not necessarily.
This means that if such a player sees an ad related to car repairs, they are unlikely to be interested.
However, we must remember that conversion is very important for increasing bids and your revenue.
But the user may love going to concerts. If an ad for a concert were shown, it would be more relevant for them, and they would likely click the link.
From all the above, the conclusion is: it’s not wise to block too many topics. And of course, pay attention to the user profile. In our case, the player in "Luxury Racing" is far from just being an enthusiastic mechanic.
At the same time, let’s not forget about blocking adult ads in children’s apps, and also refrain from showing competitor games to prevent our traffic from flowing to them.
Fifth Mistake: Using Inappropriate Advertising Formats
First, we should discuss not the formats themselves but rather the methods of their initialization.
Suppose you downloaded a game in which the ads pop up regularly right in the middle of the action. The user is playing, searching for something, or aiming at something, and suddenly, out of nowhere, a full-screen banner is displayed for 30 seconds.
If this happens once, the user may tolerate it; if it happens twice, they might also let it slide, but after the fifth time, they’ll likely close the app and probably uninstall it.
The point is that the methods of initialization and interaction with the user significantly affect engagement, loyalty, and monetization.
Therefore, it’s better to choose methods of initialization that occur after a level is completed. Players are accustomed to this, as they view it as a commercial break. Plus, the formats themselves perform better at this time, showing higher conversion rates.
Also, avoid placing ads on pages where the user is focused on tasks unrelated to the app’s functionality: on registration pages, error messages, various informational windows. The reason is that conversions rarely occur on those pages.
Sixth Mistake: Not Using app-ads.txt
What is this beast? It’s quite simple. It's a certificate. Just as you can choose topics and formats, advertisers also have the right to decide whether they want to work with your platform or not.
According to Google, this file "allows publishers to declare the authorized sellers of their advertising inventory. With the app-ads.txt file, you can control who is allowed to sell ads in your app."
The most interesting advertisers, who may be of interest to you in terms of quality and demand, are precisely those who look for this certificate.
It's important not only to use it but to update it as well.
The fact is that almost every ad network has its own direct advertiser with whom it works directly, as well as a large network of various partnerships.
The app-ads.txt file reflects the relationship between additional advertisers that the network can attract to your application.
This leads to increased competition, which means a higher chance of receiving more interesting ad spots.
Advertising networks don’t announce this, but they regularly develop additional partnerships. Therefore, systematic updates to this file are indeed beneficial.
***
Let’s summarize what I’ve discussed: