CPM is BS on iOS (and Android)
How to significantly increase mobile ad revenue
First of all, let’s get our acronyms straight. Really, it’s not CPM as it relates to this article, it’s RPM. CPM stands for Cost Per Thousand, whereas RPM stands for Revenue Per Thousand. The former is a term reserved for those that are spending money to advertise, the latter is for those making money from ads. It’s also referred to as demand side and supply side.
This essay is about those of us that are making money from ads, suppliers if you will, so what we’re talking about is RPM.
I should also point out there is eCPM which stands for Effective Cost Per Thousand, meaning the overall CPM you’re “effectively” getting because some ads are not paid for exclusively in the form of CPM. Many ads use other factors to determining how much a mobile app developer will receive. This could include CTR, or Click Through Rate, and Conversion Rate which is used for mobile app install ads resulting in an actual install or install and first open. Other factors include Time Between Impressions, Visibility Interval, Impressions per DAU, etc., but most of these are opaque to the mobile app developer. In the end, you get what you get and you really have no way of knowing what the “eCPM” actually is driven by.
But that is not why CPM is BS. Yes, it’s kinda BS, but it’s also complicated so I’m ok just accepting that. There is another.
To the meat then; CPM, or eCPM and RPM, are still BS, here’s why. Most supply side contributors are interested primarily in how much money they are going to make by running ads in their properties. Relevance and quality are factored in when making decisions about what ads to run and where, but ultimately most developers look to CPM as the deciding factor. That thinking is shortsighted.

If you are on the newsletter list for InMobi, you’ve probably gotten this one — guaranteed $20 eCPM. Boom, that’s amazing, I want that. Hell yes you do, $20 eCPM is astronomically high. So I must be talking out of my ass about CPM being BS right?
No, you see CPM is misleading. Let me try to illustrate. So your app as 1000 daily users, and say your users see 5 impressions of that sweet $20 eCPM ad unit per day, that’s a whopping 5,000 impressions. Divided by 1000, times 20, equals $100 in revenue. Sweeeet!
Now, lets say those same 1000 users see a different ad unit 150 times per day, but you only make a modest $1.50 eCPM on that one. Now you have a whopping 50,000 impressions. Divided by 1000, times 1.5, equals $225.
All this is assuming 100% fill, which it won’t be (more on that next).
But wait, 150 impressions per user, that in itself sounds like BS. How could one ad unit produce only 5 impressions per user per day whereas another could produce 150? I call BS. Well, maybe, maybe not. I’m trying to illustrate a point about the power of impressions over CPM.
Impressions per user has the potential to drive significantly more revenue for your app. But how do I get that many impressions per user? I’ll get to that, but first let me explain something I like to call the fulfillment shuffle, which all ad networks do. This is when you request an ad from an ad network, at that sweet guaranteed $20 eCPM, and they simply don’t fill it. It’s called the “fill rate” and it’s super important in calculating your returns on mobile advertising and even more important when I explain how to get more impressions per user later in this essay.
To complicate things further, an ad network may actually “fill” the ad, meaning you made a request, they returned an ad — but in the end they don’t give you credit for it. This can be for a number of reasons, some of them I mentioned as being “opaque” to you (e.g. the ad didn’t show for long enough to the user or you already showed too many ads to that user, and so on).
And, to complicate things even that much further, every ad network does it differently, so even if you figure out what’s really happening behind the iron curtain, it probably doesn’t mean jack-all for the next ad network you try.
So your effed right? Nope, let me get to the impressions per user part and then I’ll tell you about debunking the fulfillment shuffle.
So how does one get to 150 impressions per user from 5? Well, there are two factors that drive impressions — the ad unit and user behavior. There are many types of ad units available for mobile. Everyone is familiar with the fixed header/footer typically 300x50 static image or animated gif. This unit is total dogshit IMHO. And, with mobile phone resolutions and screen sizes growing, most of these ads are literally pixelated and unreadable, WTF. Incidentally, great medium post on this by Appsfire last year here.
There are many other formats: interstitials, video, app walls, rich media, sponsored content and so on. Many of these flavors also come in “native” format. Native essentially means that the ad is integrated natively into the user experience and tech capabilities of the phone. Native has an entirely different meaning on web by the way, which I’ll write about soon.
To achieve a high number of impressions per user, you need to have ad units that can potentially show many times per session, a video ad or interstitial is usually not that. Those are best suited to apps with massive amounts of users, vs. those that have small user bases. Before selecting an ad unit type, think about your user base and your app, what will be best suited for your UX and which will have the potential to drive the most impressions. This typically only goes so far, so you must look at the behaviors your users do in your app. So how can you optimize to the specific behaviors that users are doing or better yet, provide new behaviors? Game playing is not the best behavior drive impressions because you don’t have that much time to put ads in front of them. Video interstitials between games work well, but how many will you get in a day. Social behaviors like chat or feed based browsing and potentially content consumption have the potential to drive the most impressions.
If you don’t currently have a user behavior that drives impressions, then create one. Integrate chat to engage your users, give them a reason other than the core purpose of your app to come back and toggle through screens frequently. Then add native ads in those areas to pump up impressions. Remember, if a mobile user is only using your app for 5 or even 10 minutes per day, you can be sure they’re using other apps too. Create incremental time in your app then monetize it with ads.
The final component to driving revenue is optimizing for fill (remember the “shuffle”). If you are able to increase impression requests, that’s great, but you need to fill those requests to actually make money, regardless of the CPM/RPM. Typically you can’t do this from just one ad network. In fact, fill rates above 50% are nearly impossible from just one ad network; you’ll need to call multiple networks to get that kind of fill.
This is both complicated and time consuming. Every ad network has their own SDK, and those SDK’s update regularly. Moreover, different networks have different fill rules (remember those opaque reasons why an ad impression won’t be credited) and if you’re running multiple units, each of those has different rules. So the permutations can get unruly. But the effort can pay off. Try using an ad platform like MoPub, but that only goes so far. You’ll probably need to do a lot of customization to make it work.
To sum up, making significant money from ads in your app is a total reality, even if you have a small user base. Think about it holistically, here is a recap of the factors I’ve discussed in this essay:
1. CPM/RPM — It’s not the most important thing, but of course, the higher the amount the more you make
2. Impressions — Optimize your app to drive impressions
3. Ad Units — Use different ad units and incorporate native experiences whenever possible
4. User Behaviors — Incorporate activities that are impression centric like chat
5. Fill — Work with multiple networks to get maximum fill rates
Sadly, most apps take the easy route and just add the basic 300x50 bottom fixed ad. More disappointing is that the bulk of the inventory from the big guys like Admob and iAd are just that. If you do this you’re not only killing the user experience, you’re probably only tapping a quarter of the potential revenue from your app. If every app took these 5 factors into account when integrating ads, I’m quite confident we’d see a total lift in mobile advertising revenue and consequently CPM.
If you like this essay, please consider recommending it by clicking the little heart at the bottom. And please follow me to get notified when I post something new. To learn more about how my company Affinity Networks is helping apps maximize advertising revenue, please visit http://afty.co.