Flutter App Monetization with Google AdMob: Choice of the right ad formats and placements for our social app

BatCat
7 min readMar 26, 2024

--

In this article, I will describe the types of ads we selected to monetize our app and where we strategically placed them to minimize disruptions and maximize revenue. Google Ads are easy to set up, the documentation is concise and clear, and there are plenty of materials available if one gets stuck, making it a compelling option. In this article I will focus solely on what we chose for our app and the rationale behind our decisions.

NeatPick

My partner and I at CyberHut are thrilled to be launching our very first application called NeatPick! I can compare NeatPick to a web shop: people will search on a mobile app, browse through pages of products and view details about an item they are interested in. Eventually they will stumble upon something they like enough to start the process to purchase the item. Sometimes they will apply updates to their own profiles or check out other people’s profiles to learn more about the seller or the buyer.

NeatPick — A place to trade your game

First steps to monetization

Transforming an idea into a product is an exhilarating experience. Transitioning that product into a revenue-generating venture is a whole new challenge.

However, one concern crossed my mind when considering the release of NeatPick: What if the app achieves success, but we struggle to manage the associated costs?

A common practice adopted by many companies is relying on advertisements, making users watch them before they even figure out if the app is useful. It’s like they’re saying, “Pay up or deal with annoying interruptions right when things start getting interesting.” And to make it worse, the ads are often irrelevant and have nothing to do with the app itself.

Currently, I think that all apps are tools and a tool should not just catch your eye but also be useful, especially if you have invested time in reading associated reviews, deleted other apps to make space for it, and downloaded it for evaluation.

Network effect

I believe that on a social app, even users who do not intend to subscribe should still derive some benefit from the app because their presence contributes to making the app better. This principle is what we refer to as the network effect. By providing value to all users, including non-subscribers, we can gather valuable data, potentially receive positive reviews, and monetize through ads while they use the app. However, the challenge lies in striking a balance: how to generate revenue from ads while maintaining the product’s enjoyment factor?

Google AdMob

Google AdMob is a platform for mobile applications that developers use to monetize their apps; works with both Android and iOS apps allowing us to boost our revenue by showing in-app advertisements.

With Google AdMob, the revenue share is 60:40, meaning that 60% of the total revenue stays with the publisher (app owner — us) and Google keeps the remaining 40%. Yes, Google takes a significant cut, but it is their platform and there would be no Flutter without them.

While waiting for Google to approve your request to become their publisher, after submitting all the paperwork regarding your company’s legitimacy and tax residency, you can delve into the details of Ad formats.

Flutter and Google — Ad formats

Flutter offers integration with Google Mobile Ads SDK.

There are a few options to choose from when it comes to ad format:

Native ads

Native ads are customizable advertisements that can be seamlessly integrated into the overall design and user experience of the app. Initially, we intended to place native ads onto the home screen, aligning them with the size of the games (grid items). However, at the moment we need to address other issues, and the current placement of native ad is not ideal. We plan to revisit this at a later time, following Google’s recommendations for maximizing ad revenue. We would like to minimize interruptions during browsing, so users can enjoy a seamless experience, potentially resulting in long-term benefits.

Note: Stay tuned for the upcoming article that will show how ad placement can impact ad revenue.

Planned placement of native ad on the home screen as one of the games on the left, and actual placement on the right

Banner ads

Banner ads are ads that are always visible either on the top or the bottom of the screen, depending on your preference. Personally, I think that banner ads always stand out in a negative way and they occupy valuable space, potentially obstructing our users’ view of essential information. We decided to add them in the place where we already have a list of items to achieve a more cohesive experience.

Interstitial ads

Interstitial ads are ads that take up the whole screen and can be closed by the user. They break the flow and disrupt the user experience, therefore we must ensure that they’re injected at the right moment to avoid incessantly interrupting users. We introduced a chance-based occurrence that can either enhance or disrupt the user’s interaction with the app. When someone clicks on a game to view its details and the epoch time’s modulo (unlucky) 13 is precisely 1, an interstitial ad pops up. It’s a bit like playing a game of chance with our users: if Lady Luck isn’t on their side, they’ll be greeted with an interstitial ad. Just hope they don’t find it too “epochal” of an experience!

Interstitial ad popping up when opening game details

Rewarded Video Ads

Rewarded ads are ads that appear automatically during natural app transitions and allow the user to gain access to content or feature after completing a certain action. The user is presented the ad right away. This ad type requires an intro screen that announces the reward and gives users a chance to opt out if they wish to do so. We wanted the user to access extra information if they are curious about specific data we collect, so we put a rewarded ad before they can access valuable information: reviews.

The user gains access to the reviews after watching a short video ad

Invalid traffic

We are getting revenue for user engagement. One can think of many ideas how to just easily generate revenue with a script. Google is keeping an eye on many properties to determine if the traffic is coming from real users — potential customers, and generating fraudulent traffic can lead to account suspension or disablement. This directly affects your earnings.

Some examples of invalid traffic:

  • publishers (you) interacting with their own live ads
  • repeated ad clicks or impressions by the same user or multiple users
  • encouraging users to click on ads
  • tricking users into clicking an ad (content and ads are overlapping)
  • engagement influenced by automated clicking tools, deceptive software, robots, or other artificial traffic sources.

Suggestions and notes

When an ad appears on Google or the Google Network, it’s counted as one impression. RPM (Revenue-per-mille) represents the estimated earnings you’d accrue for every 1000 impressions you receive.

  • There is a point where too many ads will yield lower revenue.
  • If you have low user retention, then more ads are better.
  • Banner ads generate low RPMs (revenue per mille) because they aren’t very engaging with the user, and we generally show quite a few of them.
  • Interstitial ads are the exact opposite; they generate higher RPM.
  • The general key to a higher RPM is to show ads less frequently. Users engage with the ads more if they do not feel like they are being advertised to excessively.
  • RPM should not be used as the sole measuring tool. It is better to understand ARPDAU (Average Revenue Per Daily Active User): calculate all revenue earned in a date range and divide it by the number of active users for that date range. Measure at least one-week-long chunks because there is usually some seasonality depending on the app;
  • Mondays might result in lower ARPDAU, and weekends might yield higher ARPDAU.
  • In some cases, one ad network is not enough, and mediating multiple networks works better.
  • How much you earn depends on the region your users are in.
  • Google might file you a complaint if the user is presented with an ad at the moment when they want to leave the app. It might be better to show an interstitial ad at startup.

Final Thoughts

As always, the choice depends on the project’s unique requirements: speed, budget, and features (scope). When speed is critical and functionality takes priority over aesthetics, it makes sense to stick to the predefined ad formats offered by Google. Deep-diving into native ads, playing around with ad placement, and checking out other ad networks is definitely a good idea. For now, I will leave it aside and revisit this topic from time to time to discuss our results.

If you’re seeking software engineers who prioritize cost-efficiency, adhere to timelines, and stand by their estimates, feel free to reach out. We’re readily available to offer our services either as a team or individually.

Ragnar will enjoy an entire chicken each time a contract is signed:

Ragnar

Check out more about Ragnar’s contribution on our website: CyberHut

--

--

BatCat
BatCat

Written by BatCat

My mission is to share some of the solutions I find during my journey as a data engineer. I mostly write about PostgreSQL and Python.

No responses yet