How To Monitor And Optimize Your iOS App Ad Revenue

Personally one of the ongoing struggles of the app business is maximizing revenues from the various ad networks.  First off I’ll just say that there is no one perfect solution and a big part of this is opacity on the part of the ad networks.

The question is, how do we decide which network is working best?  How do we know if we’re getting what we’re worth from the ad networks that we’re using?

eCPM is the generally accepted model for measuring the effectiveness of an ad campaign (whether as a publisher or as an advertiser).  The problem is that sometimes this fails, which is why I’ve invented a new parameter to measure, eCPI.

eCPI – The New eCPM

eCPI means Effective Cost per Install.  You can work this out by dividing total revenue by total installs. I believe this is an important new parameter to measure to make sure you are using the best performing ad network and optimizing your ad revenue.

The best thing to make my point is to give you an example.

revmob stats

Here are some stats from an app of ours on Revmob.  You can see in the second column from the right that the eCPMs are pretty good, right?  $4-5 eCPMs are pretty high at the moment across various ad networks and $16-17 revenue per day is not bad for just one ad network, so if we were just looking at these stats we’d be jumping for joy (or would we?).

The thing is though, how much are we actually getting per install?  Without a doubt most advertisers are paying using a CPI (Cost Per Install) model.  Chartboost also helpfully publishes stats on average industry CPIs around that world so you can easily get industry benchmarks.

Just so you know, here are the current stats for November 2013:

Chartboost network CPI iPhone:   $1.65

Chartboost network CPI iPad:  $2.06

iOS US CPI:  $2.12  (with the range from $0.88 to $2.82)

chartboost network CPI

So, if we crunch the numbers for what we’re getting on this app, we find out the eCPI is a shockingly low $0.43 (to get the eCPI divide the revenue by number of installs, in this case $16.60 / 39).   If we had been measuring eCPI alarm bells would have been ringing instantly that we are getting paid far below any acceptable industry benchmark.

How much should we have been getting?  If we take the network CPI for iPhones of $1.65 and multiply this by the installs we generated (39), we SHOULD have been generating revenues of $64.35 for that same game, which would work out to an eCPM of $17.79.

Impossible you say?

For comparison, on that same day on another ad network (Applovin) in the SAME APP we had an eCPM of $14.20 and generated revenue of $143.91.  I’d love to give you our eCPI figure here, but unfortunately Applovin doesn’t reveal the amount of installs generated.

(Note – this is not to say one ad network is better than the other.  Each network has its advantages and disadvantages).

So, the bottom line is that wherever possible you should be measuring your eCPI (effective cost per install) and comparing this to industry benchmarks to see if your ad network is doing you a good service or not.

CPM – Watch Out!

Another reason for taking CPM with a VERY BIG grain of salt is that this doesn’t take into account FILL RATE.  An ad network might show fantastic CPMs, but it might only be achieving 50% fill rate, meaning you are losing out on A LOT of impressions.

A better statistic is to look at rCPM (request CPM).  To understand this you need a bit of background about how ads are called.

Let’s say you have an ad placement on app open.  When the app opens, a REQUEST will be sent to the ad server telling the server “the app just got opened, please show me an ad!”  The server will then check if it has advertisers available, and if the answer is yes it will send an ad to be shown.  If not, then obviously no ad will be shown.

Why might an ad not be shown? Typically advertisers pay a lot of money to get users from the US, Australia, UK and other Western countries, since these users tend to spend more money in their apps and so are worth a lot more money to the advertisers.  For most ad networks, fill rates in these countries are pretty good, while in other countries fill rate can be non-existent or at least much lower since advertisers aren’t looking to get users from non-Western countries.

So by looking at request CPM (rCPM) this takes into account fill rate.  If the fill rate is 100%, then rCPM will equal CPM.  But if the fill rate is 50%, then rCPM will be 50% lower than CPM. This will give a much truer picture of an ad network’s performance, since fill rate is a critical revenue driving factor.

A Call For More Transparency From Ad Networks

Unfortunately us publishers are left way too much in the dark when it comes to statistics from our ad networks.  As you can see from what I’ve written above, ad networks can be pretty selective with what info they share with developers.  Chartboost leads the way by a long long way in terms of transparency, with publishers able to view even which ads are showing and detailed stats for each ad.

This should be the minimum:

  • Fill Rate
  • Impressions
  • Clicks
  • Click through rate (CTR)
  • eCPM
  • eCPI
  • Revenue

Of course, it would be great if we could see even more detailed information, such as stats for various advertisers in our apps, stats for various countries, etc., but the above is really the bare bones of what I would want to see.

[Note:  while writing this article we corresponded with Applovin and they already implemented display of Fill Rate to their dashboard, so kudos to them!]

What can you do about all this?

First off, you really should be monitoring your stats.  Unfortunately as I pointed out above, most ad networks are missing out on vital information for us to make informed decisions, but you should be monitoring whatever you can.

Where possible, I’d advise you to keep track of your eCPIs (this is what we are doing).

So, if you see that an ad network is offering non-competitive CPIs, simply switch off their SDK and try out another ad network.  Compare the results and keep the better one.  This simple exercise can yield a huge difference in revenue, as I showed you above.

Apart from monitoring the payment per install, you should also keep in mind the massive issue of fill rates – this can be a huge source of missing revenue.

Ideally I would love to use an ad mediator for interstitial ads, using the highest paying networks first and then if there is no fill, to default back to a network which might be lower paying but which will have fill.  Unfortunately, to the best of my knowledge no such ad mediator exists.

So, in practice what we do at the moment is we use two ad networks at placements such as app open and on app movement to foreground.  Chartboost in our experience has the highest fill rate, so we will always use this in addition to Applovin or Revmob or other ad networks.

If you do these two things, you should see a significant increase in revenue.

What do you think?  Should ad networks be more transparent with their reporting? Write your thoughts below!