Tips for using ads in your Windows Phone apps

Windows Phone developers have three basic ways to make money from their apps: paid app sales, mobile advertising, and in-app purchases (coming in Windows Phone 8). Last month I wrote about my approach to paid apps, and how to take advantage of the Windows Phone Dev Center’s new country-by-country pricing and analysis features.

Today I’ll share some lessons I’ve learned about increasing mobile ad revenue—ones I picked up from publishing more than 20 games in the Windows Phone Store, half of them ad-based.

Advertising 101

If you’re new to the world of mobile ads, here’s a quick recap of how they work and a summary of the most common ad-related terms you’ll encounter.


A typical ad on one of my games.

On Windows Phone, mobile ad revenue is driven by the number of ads shown (“ad impressions”) and number of ads acted upon (“clicks”), as well as availability of ads to be served into the app at any given time (“fill rate”). Ultimately app developers are paid a certain “eCPM” (cost per mille, or thousand) for ads shown within their apps. To drive revenue, you want to create experiences that will add value to your customers while also driving ad impressions that garner the highest eCPM possible.

Driving more impressions

How do you do that? My first recommendation is an obvious one: create apps that are interesting and that drive engagement with lots of people. The more time customers spend in your app, the more ad impressions that are generated and the greater opportunity to solicit clicks.

By appealing to a broad audience, I’ve tried to make my own apps as “sticky” as possible. Here are some tricks I’ve learned:

  1. Make sure your app is intuitive to learn (clear instructions, visual examples) and easy to use (consistent, straight-forward navigation).
  2. Have an attractive UI, with compelling graphics and fluid animations.
  3. Adequately design and thoroughly test your apps to ensure it almost never crashes or stops, so users don’t get frustrated and continue to come back for more.
  4. Ensure the app caters to beginners and experts alike (for games, offer a super easy level for beginners to get them into the game with progressively more difficult levels for experts).
  5. Add social elements (global score tracking, sharing through social networks).
  6. Add online gameplay (allow users to keep playing or play each other whether on their phone or at a PC).
  7. Update the app frequently to keep it fresh and rekindle interest over time.

In addition to making my apps appealing, I also pay special attention to how ads are positioned on screen within my apps to help drive impression and clicks (without interfering with the experience):

  1. Layout your apps such that ads shown integrate seamlessly with the user experience of your app.
  2. Be selective about how and when ads appear. Too many or distracting ads will burn out users and will likely result in poor ratings and reviews.image
  3. Select the ad category in pubCenter that fits best with the type of users you expect to get.

Increasing fill rate

Now let’s take it up a level and address how to ensure the best possible fill rate. The goal of course is to try to keep the ad space filled as much as possible. But this isn’t as simple as it seems.

If customers are engaging your app, you will generate ad impressions. But there is often a lot of variance in the availability of ads to be served into your app, including and especially because of different service offerings across countries or regions. Take the Microsoft Ad Control, for example. While availability of the Microsoft Ad Control continues to expand, there are some parts of the world where it’s still not available.

To address the gap, I take the time to set-up multiple layers of ad elements within my apps, using: 1. The Microsoft ad control, 2. third-party ad controls, and 3. my own ads. My apps are designed to show the right layer depending on the user’s country/geo and whether or not an ad from a higher order layer is available.


The three layers

Let’s take a closer look at each of the three layers I just mentioned.

The top element is the Microsoft Ad Control. This control is reliable, has simple integration with the app, easy integration with Windows Phone Dev Center, and provides good eCPM. Developers that live in these 35 countries can use this ad control. It doesn’t deliver ads in all the countries of the world, but I always use this control wherever possible.  

PubCenter, the Microsoft Ad Control portal, provides a report that helps understand which countries are showing ads, and the eCPM per country. To find out which countries are ideal for the Microsoft Ad Control, go to PubCenter>Advanced Reports>Create Report>Include this data [country]:  


The second layer, below the Microsoft Ad Control, is for third-party ad controls. These ad controls help me show ads within my apps in countries that the Microsoft Ad Control does not serve.

I have used several different third-party ad controls in my Windows Phone apps, including MobFox, AdMob, and Millennial Media. And there are several others as well, including Inneractive and Smaato. I’ve found that the country coverage and eCPM varies significantly by ad provider, requiring some trial and error to determine the best one to use for any given scenario. I’ve also found that reliability varies between third-party ad controls and that it changes over time. One option is to periodically check the date of last update of the third-party ad controls you’re considering. If an ad control hasn’t been updated recently, it could cause performance issues with your app.

The third layer I’ll talk about is used to show my own ads. This layer always has the Visibility property turned on, so any time the ad controls in the top two layers are not showing ads, this layer shows. In this layer I put my own ad to cross promote my other apps: When clicked, this ad can open another one of my apps in the Store or the paid version of the current app.

Sometimes in place of my own ads, I use Ad Duplex ads on the third layer. These do not generate revenue, but are a good option to fill unused ad space, and participation in Ad Duplex helps me promote my apps within other apps utilizing Ad Duplex.

What about ad rotators, which package several ad controls in a single master ad control that can target different ad controls to different countries/geos? I have yet to try one of these, but the AdRotator in Codeplex looks worth trying. (Perhaps a future post on ad rotators is in order. I’d be interested in hearing your feedback on these.)

Below is the XAML example that shows the layering technique. The bottom layer has my ad, and I implement MyAdClick() to call the marketplace with one of my other apps. And I set visibility to “Visible” and collapsed to either the MobFoxAdControl or the PubCntrAd, depending on the country or region. Detecting the country or region is not always simple, but here are some pointers on how to do it.

<Grid Name="AdsGrid" Visibility="Visible" Height="80" Width="480" VerticalAlignment="Top">
  <Image Source="Images/MyAd480x80.png" MouseLeftButtonDown="MyAdClick" />
  <mobfox:AdControl Margin="0,5,0,0" Name="mobFoxadControl" PublisherID="(myid)" TestMode="False" AutoRotate="False" />
  <my:AdControl Name="PubCntrAd" Height="80" Width="480" AdUnitId="(myAdID)" ApplicationId="(myappid)"/>

Wrapping up

I’ve found that making good, advertising-focused design choices and then implementing a layered approach to ad controls has significantly increased the revenue I generate from mobile ads within my own Windows Phone apps. If you want to learn even more about the ad control and ways to profit from it, I suggest watching two recent ad-focused episodes of Inside Windows Phone, which you'll find here and here.

In my next post I’ll focus on the third common revenue-generating strategy: in-app purchases. In the meantime, I’d love to hear your own experiences and tips in comments.