Monetizing Windows Phone Apps

Author: Dan Rigsby

Discover the various ways that a Windows Phone application can be monetized. More importantly, learn the situations where the various monetization strategies work best as well as understand where monetization approaches for Windows Phone might differ from phone applications on other platforms. 

Introduction

Building applications for Windows Phone has always been fun and easy. With Microsoft's new partnership with Nokia as well as its expanding global presence, developers have a unique chance to start building applications now for a platform that is growing on the world stage.  When Windows Phone 7 was launched, it was available in 17 countries in 4 display languages.  With the recent "Mango" release, that number has grown to 35 countries in 22 display languages (See: http://create.msdn.com/en-US/home/faq for a complete list of countries and languages).  With each new release, we can expect this market to keep growing and growing.

Get Started with Windows Phone. Download the free tools.

Microsoft's new expansive partnership with Nokia opens the doors of the world even more. Nokia is a huge global brand with exposure into every region of the world. This kind of reach will enable Windows Phone and the applications built for it to reach a market that is literally the size of the world. Companies and developers who want to maximize the return on their investments need to look at how to support as many of these markets as possible.

This worldwide market presents a large audience of customers for Windows Phone apps, and it is up you as the developers to be sure that the apps are ready to be localized to each country and ready to be marketed and sold. But even if you are only considering a single country or region today, there are ways to monetize the apps you develop.

Monetization Styles

When we think about building apps, one of the first questions to consider is how it will be distributed.  Fortunately for Windows Phone development, this is an easy task.  There is a single marketplace on all phones to which apps are deployed.  During one of the final stages of submitting an app in the AppHub, the developers can determine what regions it will be sold in and what the cost of the app will be.

Apps for phones can typically be monetized in one of five styles:

1.Paid Apps

Traditional "monetization" of software comes in the form of paying a price for an app and having unrestricted access to its features. A paid app is built and deployed just like a free app. The only difference is that when it is deployed to the marketplace, a price is set.

The marketplace allows apps be sold for a minimum price of $0.99 USD, and a maximum of $499.99 USD. Prices in other currencies are determined based on a fixed exchange rate.  Microsoft will pay you 70% of cost with the remaining 30% going to the phone carrier and Microsoft to cover the upkeep of the marketplace and the testing of the app. (This may vary based on region. See http://msdn.microsoft.com/en-us/library/hh202929(VS.92).aspx for more details.)

Many factors go into determining the cost of your app.  One of the most crucial is to preform market analysis of similar apps.  If you are going to charge $0.99 for a app that users can download for free, you should have a compelling reason for them to download yours instead.  Pricing yourself out of the market is not a good strategy.

One important thing to remember with paid apps, is that users love trial apps.  It gives them the ability to try it out before making the commitment to purchase an app.  This results not only into more traffic for your app, but more paid users as well.  Windows Phone provides a complete "Try before you buy" API to allow you to create rich trial versions of your application that can be limited in any way you desire.  The APIs can even allow you to provide easy ways for users to upgrade to the paid version of the app right from the trial version. If you write quality apps, a well-designed trial mode will drive sales.

Tip: It is a good idea to provide some kind of trial version with all paid apps if possible. This will help maximize your potential revenue. This is especially true the more the app costs. 

2.Free Apps

Apps can be given away freely to everyone.  While, this isn't a great way to generate revenue, it can help get your company's name or ideas out to a broader market.

Tip:  There are many success stories of apps offering both free and paid versions. If a user is searching for "free" apps only, a paid app or "try before your buy" app will not show up in the search.  By offering a completely free version with limited functionally, you may actually be able to drive up more traffic to your paid version of the application.

3. Ad Supported Apps
Another option is to generate revenue off free apps by adding ads.  Typically the ads are unobtrusive to the user and could appear before the app loads, or during the app's normal operation.

Tip: It may be beneficial to offer a free ad supported app a long side a paid version of the same app. Users may start out with the ad supported version, and pay for the full app later to remove the ads.  This gives you the flexibility of multiple revenue streams.

4. Subscriptions (Not supported in Windows Phone at this time)
Some apps may choose to charge customers over time. This is commonly seen in newspaper, magazine, or MMORPG apps.

This form of monetization is not available in Windows Phone 7 at this time.

5. In-App Purchases (Not supported in Windows Phone 7 at this time)
In-app purchasing (IAP) is the ability to buy more content for the app through a standard Marketplace while in the app itself.  This could take the form of purchasing a new add-ons for a business app, buying new levels for a game, etc.  Many times IAP features are added to free apps, so that users try out the app and fall in love with it before purchasing items within it.  This can also lead to higher revenues for an app than making it a standard "paid app".  Companies such as Zynga have used this strategy to maximize revenues with hits like Farmville.

This is a key monetization strategy in iOS and Android, however it is not available in Windows Phone at this time.  It was hoped that this would make the cut as a feature in the "Mango" release, but rest assured that this is a highly requested feature and will hopefully be coming soon to the platform.

Implementing Trial Supported Applications

Trial supported apps work like any other app in the marketplace except that Windows Phone tracks whether or not the app is currently in trial mode or if it has been purchased.  It is up to the app developer to test whether the app is in trial mode and adjust the app functionality accordingly. 

In order to deploy a trial supported app, it must be identified as such when submitting the app for approval.  This is done when setting the price of the app in the AppHub.

Enable trials to be downloaded

LicenseInformation.IsTrial in Silverlight apps

For Silverlight apps you can use the LicenseInformationclass to determine whether or not the app is in trial mode.

Var info = new Microsoft.Phone.Marketplace.LicenseInformation();
if (info.IsTrial())
{
    // We are in trial mode here
}
else
{
    // The user has purchased the app
}

However, the example above isn't the best way to check this.  It can take over 60 milliseconds for the app to determine if it is in trial mode.  It would be best to cache this functionality to avoid this cost. A common way of doing this is to add a static public property to the main app.xaml.cs file:

public partial class App : Application
{
     private static bool? _IsTrial;
 
     public static bool IsTrial
     {
         get
         {
                  if (_IsTrial == null)
                  {
                      _IsTrial = new Microsoft.Phone.Marketplace.LicenseInformation().IsTrial();
                  }
                  return _IsTrial.Value;
         }
     }
// Do something app.xaml.cs
}

Now anywhere in your application you can check for a cached copy this value by simply checking:

if (App.IsTrial)
{
       // Do something
}

GamerServices.Guide class In XNA apps

For Xna apps, you make use of the GamerServices.Guide class to access all of the functionality needed to support trial mode.  To check if the app is currently in trial mode, you call:

if (Microsoft.Xna.Framework.GamerServices.Guide.IsTrialMode) 
{
    // We are in trial mode here
}
else
{
    // The user has purchased the app
}

Note here that unlike in Silverlight applications, we do not need to cache this value as it is determined on start up.  This method can also be called in Silverlight apps, however it is not recommended as its intent is for Xna apps.  The Silverlight app would also have to take a dependency on the Microsoft.Xna.Framework.GamerServices assembly.

Testing trial application support

Everyone knows you need to thoroughly test your apps, and developing for Windows Phone is no exception.  The marketplace approval process can be brutal and they will test your app inside and out. However, the testing turnaround time can be days, and the marketplace testers may not understand your intentions for how the trial mode should work.  You need to test that your app meets all of your criteria while in trial mode and that the app has no remnants of trial mode limitations when the full app is purchased.

Testing trial mode is not difficult, but you have to remember that when building and testing an app on your local computer, it was not downloaded from the marketplace. So any check for trial mode will return "false". To get around this you could just go in and manually change your code to set IsTrial to "true" or "false" during your testing.  This isn't the most desirable option as it could be easy to forget to change this code before deploying to the marketplace.  A better approach is to create a new configuration option for testing applications in trial mode.

1. From your solution open the Configuration Manager, and create a new a "solution configuration":

Create a new a solution configuration

2. Give the new configuration a name such as "Trial":

Give the new configuration a name

3. Open the properties window for each project, select the "Build" tab, and add a new conditional compilation symbol called "TRIAL":

Add a new conditional compilation symbol

4. Modify your code with a preprocessor conditional such that when a check is performed to determine if it is in trial mode, then it will always return true:

private static bool? _IsTrial;
 
public static bool IsTrial
{
     get
     {
#if TRIAL
         return true;
#else
         if (_IsTrial == null)
         {
              _IsTrial = new Microsoft.Phone.Marketplace.LicenseInformation().IsTrial();
         }
         return _IsTrial.Value;
#endif
     }
}

5. Finally set the active configuration to "Trial", and when you run your project the section with the conditional around "TRIAL" will be active and you can test your app as if it was in trial mode. 

Note: that these changes can be deployed in production code since the conditional sections are not compiled when you perform a build in a "Release" configuration

Considerations

There are a number of ways to limit your trial period such as the number of times the app can be used, how many days the trial lasts, a limited set of features, etc.  While there is no right answer, you will need to keep in mind that if a user uninstalls an app, all of the data associated with the app is removed, and there currently isn't a way to persist any app usage data outside of the app itself on the phone.  So, if you store trial related data in the app's local storage, then a user could just uninstall your app and reinstall it again to restart the trial period.  This leads us to three viable options for tracking trial periods:

1. Store app usage data in local app storage.  The user can always reinstall the app and reengage the trial period, but you can hope that the time involved to do this vs. the value of your app when translate into a purchase

2. Store app usage data on your own servers or to some cloud storage.  Each time your app starts, you can make a call to a service to check if the user has reached the end of the trial period.  The down side to this is that it could take longer to start your app, and users may not be able to use it there is no internet connectivity.  However, you would only need to make this check while the app is in trial mode.  Once they have the purchased copy, you would not need to make this call.

3. Offer limited functionality in the trial version of the app.  The missing features don't have to be anything huge either.  Something as simple persisting log in information in a paid version, could be enough to get user's to make the purchase.

To increase the likelihood that a user will upgrade to the full app, you should always make it clear to the user what upgrading gives them.  Additionally, users will need to know how to upgrade to the full version of the app both during and after the trial period has expired.  They could go directly to the marketplace to upgrade the app, but developers should make it easier for them and increase the likelihood that they will upgrade.

In a Silverlight app, you can provide a button or link somewhere in your app that calls the MarketplaceDetailTask to open up the marketplace app on the phone and have it navigate directly to your app:

var task = new Microsoft.Phone.Tasks.MarketplaceDetailTask();
task.Show();

In an Xna app, the method to show the marketplace is in theGamerServices.Guide class:

Microsoft.Xna.Framework.GamerServices.Guide.ShowMarketplace(PlayerIndex.One);

Implementing Ad Supported Applications

Another way to monetize is to add ads to your app.  You could offer ads in either paid or free apps, although they are more common in free versions.  It is up to the developer to decide where and how these ads should be displayed.  Sometimes ads are shown before the app starts, but traditionally ads are shown within the app in a single ad zone that is unobtrusive, but is visible the majority of the time.

Microsoft Advertising SDK

One of the easiest to use Ad Frameworks is the Microsoft Advertising SDK from pubCenter.  The benefits of this platform are that it's easy to use, has tight integration with Visual Studio, it can be used for Windows Phone and Windows 8 ads, and the fact that it's already installed with the Windows Phone SDK.

Getting setup to deliver ads with the Microsoft Ad Framework can be done 5 quick steps:

1. Add the ad control to your app.  The framework and controls are already built into the Windows Phone SDK.  Just open up your page and toolbox windows and drag and drop the control:

Add the control to your app

2. Sign up for free at the Microsoft Advertising pubCenter to register your Windows Live ID for receiving ads:

Register your Windows Live ID

3. Click on the Setup tab in the pubCenter and register your app to obtain an Application ID:

Click on the Setup tab to register your app

4. Create an Ad Unit that will define the size of the ad as well as the types of advertising data that will be shown:

Create an ad unit

5. Finally, add your Application ID and Ad Unit ID from pubCenter into your app with the code such as:

#if SHOW_TEST_ADS                     adControl1.ApplicationId = "test_client";
adControl1.AdUnitId = "Image480_80";
#else
// Use your real Application ID and Ad Unit ID here
adControl1.ApplicationId = "12345678-abcd-efgh-ijkl-mnopqrstuvwx";
adControl1.AdUnitId = "123456";
#endif

Tip:It is useful here to be able to test both real ads and fake ads as real ads will not show up in the emulator.  This is why it is useful to use conditional compilation symbols and set these values in code instead of in the visual properties window of the control.

Now when your app is deployed the ad control will pull ads from pubCenter and display them to your users.  You can track the ad impressions and other data with a variety of reports directly from pubCenter.

Tip: Here are some additional resources to help you get started with Microsoft Advertising:

Note: To use the Microsoft Ad Framework you must reside in one of the 12 supported countries.  However, you can expect more countries to be added over time.

Third-party ad frameworks

There are a number of other third party ad frameworks you could decide to include in your application that can range in their features and payout amounts.  When evaluating a third-party ad framework, be sure to check the following:

  • How is payment determined? This could be based on:
    • Cost per Impression (CPI or CPM), usually based on cost per 1000 impressions
    • Cost per click Through (CPC)
    • Cost per Sale (CPS)
    • Cost per Lead (CPL)
    • Click through Rate (CTR), based on the number of clicks of an ad divided by impressions
    • Some other custom metric
  • How much is the payout amount?
  • How is the world wide support? If your app is available in many markets, you want to be sure that you display ads relevant to the target region.
  • How often are the payouts?
  • How good is the reporting of data?  This could go a long way to determine how much your app is being used.  For instance, if you have 1000 downloads, but your ad impressions are small, you would be able to determine that your app is not used often.
  • How are the tools?  Is it easy to include ads in Windows Phone 7?  Does the ad framework work in Silverlight as well as Xna?

Working with the  AppHub MarketPlace

Deployment

This article isn't going to dive into all of the details about deploying an app to the marketplace, but there are a lot of resources to help you with this.  For the purpose of this article it is important to point out the "set price and market availability" step of the process which allows you to:

  • Set the price of your app
  • Enable it for trials
  • Allow for worldwide market distribution

In this screen shot you can how each of these can be setup:

Set price and market availability

If you ever need to make changes or open your app up to new markets, you can come back to this page at any time and resubmit your app.  Any change to a price alone will take effect immediately.  However, if you move from a Paid to Free app or upload any new content, the app will have to go through the certification process again which could take days.

Collecting money from AppHub

When you register at the AppHub marketplace you enter your bank and tax information before you app is submitted.  When payouts do start coming in, this money will automatically direct deposited to your account. However, don't expect payouts to start happening right away.  No payouts can be made until Microsoft has finalized the collection of the money from the users which can take 15 to 30 days for credit cards or 90 to 120 days for payments made through the mobile carriers.  After that, you must reach a minimum threshold of $200 USD before that first 70% commission payout payment will be sent.  So if your $.99 USD app only sells 100 copies, don't expect any payouts. You want the broadest worldwide exposure possible to increase the frequency and amount of each payout.

A complete list of details about payout information can be found at: http://msdn.microsoft.com/library/hh202925(VS.92).aspx

Monitoring App Sales

The AppHub offers a robust set of reports to see how often your app is being downloaded and sold as well as which markets it's being sold in.  Through these reports you can see past payouts and look ahead to determine when your next payout might occur.  If you have a trial version of your app, you can also use these reports to determine the percentage of people who buy the full app vs. downloading the trial.

Here are a few example reports that show previous payouts, download details, daily download summaries:

APP HUB

App Download Details

App Download Summary

Marketing your application

Once the app is in the marketplace, there is still the job of marketing the app.  You don't have to fight for shelf space like in a department store, but you still need to get the word out about the app.  There are literally countless ways that an app could be marketed, but here are some tips to get you started:

  • The first week or so that an app is deployed it will show up in the "New Apps" category of the marketplace.  This will give it some added exposure and is your opportunity to market the app heavily.  You could for instance run a promotion listing the app with a special "new release price" with the price of the app increasing in the future.  This will hopefully lead to more downloads and a chance to get your app in the "Top Apps" category.
  • Create a website to promote the app.  You could design your own site, or use a template such as: http://wp7appsite.codeplex.com/.
  • Be sure to include the deep link to your app on your website and other social networking sites.  You can find the deep on the windows phone site.  The format is: http://www.windowsphone.com/en-US/apps/{YourAppGuidHere}
  • Create a demo video of your app.  Include this video on your website and send out links.
  • Find creative ways to get users to add reviews for your app.  The higher the reviews, the more likely people are to give the app a closer look.
  • Microsoft has a lot of resources to get you started at: http://create.msdn.com/en-US/education/basics/marketing.  This kit includes marketing guidelines, website assistance tools, and other items.

Conclusion

Microsoft has provided developers with everything they need to build, deploy, sell, and market apps for the Windows Phone to the world while at the same time giving developers the monetary incentives they need to build quality apps. With its ever growing market presence, it is up to the developer community to use these tools to create great apps that the world will love,

   
Add to My MSN

Mobile Code Samples

22 new code samples cover nearly all the new features for Windows Phone 7.5 (Mango) including the most requested and hotly anticipated areas - camera, media, sockets, sensors, SL/XNA integration, Tile backgrounds and background agents.
Click here to download
Listbox, Why Art Thou Blanking?
Memory Profiling - The Heap Summary View
Delivering Rich Mobile Web Experiences in Windows Phone 7.5 (ESPN.com Case Study)
Four ways were improving Marketplace
Two Marketplace changes; An update on 9 new markets

Making Money with your Application on Windows Phone

Windows Phone: how to build a game

Building device & cloud apps

Windows Phone user experience design




Bryson Ewell
This young developer was inspired by his big brother. Find out how he learned to program and why you wont be seeing skydiving Sasquatches anytime soon...
Read More