Yesterday, July 26th 2011, I presented along with 7 other Windows Phone 7 developers at the Tampa Windows Phone 7 User Group. The focus was ‘Show and Tell’ of our apps and experiences with the platform. I spent some time talking about my phone applications, but spent most of my time with my recent experiences in using multiple ad providers. The complete PowerPoint presentation is attached here, but to sum up the multiple ad providers part of the presentation I compiled it into this blog post.
Revenue for Windows Phone 7 apps is generated mostly by one of two methods, Paid or Free with ads. There are many other means such as subscriptions and micro transactions, but those are currently rarely implemented. To sum up the two popular methods:
- Very easy to implement. The marketplace takes care of the transaction and we only have to make a simple method call to determine if this user paid or not.
- Many users, perhaps a vast majority, are completely ignoring pay apps. There is a perception that by a lot of users that they don’t mind paying for hardware, but they see no reason why they should pay for additional software on the same device.
- The users who do browse and use the trial options of pay apps and extremely reluctant to purchase apps in general, even if its as low as 99 cents.
- Free with Ads
- The counter to above, users are more likely to see see and download your application if its free.
- There are many bloggers that have reported they have seen significant improvement in revenue from free ad apps over paid apps
- Less visual space due to the space the ads take
- If there is a paid version of the same app, developers need to determine what features, if any, are to be reduced. This requires more code throughout the app to lock down some features.
- Each ad provider requires an account, configuration, and payment information setup. Each provider has rules on how to use their ad components that need to be followed closely.
- Revenue is highly variable, even with consistent user activity. Effective cost per mille, or eCPM, drives what your revenue is per 1000 views of the ad, or impressions. This can change dramatically every few minutes based on your ad’s topics, user impressions, and users clicks into the ads.
So with Windows Phone 7 the easiest and best ad component to use is Microsoft’s pubCenter. Its now included with the latest WP7 SDK 7.1 Beta 2, but is available as a separate download. Its very easy to implement and seems extremely stable. Most bloggers have stated this is the best ad network for displaying ads in WP7, at least for United States users.
However, there is a problem with using pubCenter exclusively. The pubCenter ads can currently only produce ad revenue from users in the United States, United Kingdom, and the Netherlands. There is planned support for Canada, France, and Germany, which may or may not already be in place. Around half of my user downloads came from countries not covered by pubCenter.
So what to do? Fortunately, there are many other ad providers we can utilize. Here is a list of the ones I know about that currently support Windows Phone 7. There are many more ad providers out there that are geared towards mobile devices, but I’m just not aware if they support WP7 yet.
The next problem is how to use these providers. We cant simply just use a vender exclusively on separate pages as we could have mismatched users to ad providers (e.g. New Zealand user to pubCenter). We need to be able to load different ad providers based on where the user is from, switch to another ad provider should one fail, and possibly switch ad providers dynamically if one starts producing low eCPM. You could code all this yourself but fortunately there are several groups working on this problem already. The ones I identified are as follows:
- This provider gives you a single component to ad to your app and they handle all the ad switching among the various of providers they support. I was not able to test their component out as I couldn’t log into their system.
- Ad Configuration + Rotator for Windows
- Codeplex project that’s not released yet, but you can download his source code to try out.
- aldarIT SuperAds
- Supports pubCenter, AdMob, AdDuplex, Smaato, ZestADZ, and MobFox. They have a nuget package you can get here: http://nuget.org/List/Packages/SuperAds
- ImproviSoft AdManagement Component
- I talked to the CEO of ImproviSoft, Dan Colasanti, about his use of ads in his apps. Me and Dan used to work together when I used to live in the cold tundra of Syracuse, NY. He’s developing a very impressive ad handler. However, its not available yet so I am mentioning his effort as something to track for future use.
- Windows Phone 7 Ad Rotator
- This is the only component I had tried out completely. It covers pubCenter, AdMob, and AdDuplex with future support for Inneractive.
Ad Rotator has some great features in setting what probability an ad vendor will be shown based on the users culture settings on their phone. Here are the primary things you need to do to set it up. First, drop the XAML code into your page:
<adRotator:AdRotatorControl x:Name="AdRotatorControl" Width="480" Height="80" Grid.Row="0"
Note the two settings parameters. You need to set that to a local file to your project as well as where your remote settings file on your web server. You can load all your Ad Providers ID’s here also, but I suggest putting it all into your backend code. This way you can specify different settings if your in a debug build. It would look like this (with test settings):
AdRotatorControl.PubCenterAdUnitId = "Image480_80";
AdRotatorControl.PubCenterAppId = "test_client";
AdRotatorControl.AdDuplexAppId = "xxxxx";
AdRotatorControl.AdMobAdUnitId = "xxxxx";
AdRotatorControl.DefaultAdType = AdRotator.AdType.PubCenter;
Now you need to configure your settings file.
<?xml version="1.0" encoding="utf-8"?>
<Probabilities Probability="60" AdType="PubCenter" />
<Probabilities Probability="20" AdType="AdMob" />
<Probabilities Probability="20" AdType="AdDuplex" />
<Probabilities Probability="20" AdType="PubCenter" />
<Probabilities Probability="60" AdType="AdMob" />
<Probabilities Probability="20" AdType="AdDuplex" />
<Probabilities Probability="1" AdType="PubCenter" />
<Probabilities Probability="80" AdType="AdMob" />
<Probabilities Probability="19" AdType="AdDuplex" />
In this file I have pubCenter used a majority of the time for United States users. United Kingdom users see Admob a majority of the time. All others rarely see pubCenter at all. I left it 1 percent just in case the other two happen to fail to load immediately after each other. This same file is used on your remote web server. This is great when eCPM falls with one ad provider, you can switch your users immediately to a new probabilities file.
That’s pretty much it. There are some great ad handlers out now and there are sure to be new ones and great improvements with existing ones. There is no excuse to not use more then one ad provider.