Developers know that you can’t wait for the hand of Nadella to reach down and anoint your app. If you want your app to succeed, you have to push it yourself — so if your marketing plan is “ASO” or “Get a feature from Microsoft”, you’re going to have a very bad time.
That means at the start of your app’s life, you have to get beta users excited, curry likes and upvotes, and attract press for your launch.
At a certain point, you’ll come to the horrible realization that your app’s user base isn’t going to grow any further without reinvesting some of your hard-earned app money into paid advertisements.
But how do you allocate your budget? We decided to find out by throwing some money at five paid channels, plus our own inventory. We tried to spend at least $100 on each channel on campaigns restricted to the US and Canada. (Why such small budgets? Read on to find out.)
Prologue: Picking the right app
A few weeks before writing this piece, we launched Calbot, a cute calendar app with a conversational interface. The app was a passion project that we never expected to release, so we didn’t build community support or press buzz for its launch. That meant a paid marketing budget was mandatory if we wanted to get the word out.
Here’s the short version of the lesson that came next: don’t pay to market your just-launched passion project.
The stuff we skipped turned out to be mandatory, and we ended up spending around $10 cost per install (CPI) on all channels (for a free app!) — even Photoshopped Young Bill Gates, our winsome ad creative at the top of this post, couldn’t move Calbot installs for us. The general Microsoft Store audience isn’t mature enough yet to appreciate your weird niche hipster app. (I hear that strategy works on macOS, maybe try it there?)
So, on to the next app. We knew from past campaigns that one of our apps, Duplicate Cleaner Pro, performs well enough on paid traffic. We put it on sale for free (100% off), bought ads for it, and are publishing those results instead. We didn’t plan on making any money, but since the app asked each new user to review the app, we were guaranteed to at least get the benefit of a few decent ratings out of this experiment.
Facebook “app install” ads: Actually just CPC
Facebook and Microsoft announced in February that you could now buy installs for apps listed in the Microsoft Store. It’s a bit more complicated than that — what you can actually buy and optimize for are ad clicks, not installs — but the general idea is there, even though Facebook’s Microsoft Store platform lag behind its offerings for iOS and Android.
To buy on Facebook, your app needs to include the Windows SDK for Facebook. You also need a Facebook page for your app, to stand in as the ‘actor’ for the campaign.
You can’t use the Dev Center’s own campaign (CID) attribution. It looks like Facebook is relying on that tracking itself for its own attribution, since these ads make an absolute hash of the Channels & Conversions table in your Dev Center:
(If this is indeed what’s going on under the hood, it makes it hard to understand why you need an SDK to buy on this platform. It also makes Apple’s decision to require a minimum of five conversions per campaign ID before displaying data in iTunes Connect more understandable.)
There are heavy restrictions on the design of your creative. A screenshot of your app probably won’t work, since you aren’t allowed text in your images. (The Microsoft badge in our creative shown above was pushing it.)
Targeting on this platform is a marketer’s fantasy. We restricted our campaign to users on desktop Windows 10; as far as we know, Facebook is the only large mainstream ad platform that allows targeting by operating system. (Google and Bing, I’m looking at you.)
Unfortunately, affiliation on this channel isn’t possible; Facebook insists on linking directly to the canonical URL of your app.
As nice as it was to use a modern ad platform like Facebook’s, we weren’t able to achieve anything close to a sustainable CPI. The best performer was the Recycle Bin creative, up above, at $6.51 per user. Obviously, paying $6.51 for a each free acquisition is not going to work out for us.
- Creepily-good targeting
- Lots of inventory
- Really attractive ad formats
- A mainstream platform that lets you target by OS
- Near-real time reporting
- High cost
- Requires an SDK
- Can’t affiliate clicks
- Can’t use the Dev Center’s built-in attribution
- Turns your Channels & Conversions table into a hot mess
Update as of December 20, 2018: User Camp is now a Facebook-Free Business and commits to not using or supporting Facebook or its properties.
Microsoft’s network: Built-in and simple
As one of our developer benefits, Microsoft offered us a $200 credit to try a taste of their built-in ad network’s traffic. This network covers Microsoft’s “premium surfaces” (no, not those Surfaces) like Skype and Solitaire.
It’s slick. You can start a campaign right from your dashboard with no SDK, no creative, and no minimum budget.
But the auto-generated creative is pretty rough (see above). We’re not afraid to make our own, but it seems that if you upload manual creative, it’s served at low DPI — and between half-resolution image ads and weird breaks in the text, we chose the weird breaks.
Oddly, you can’t affiliate your clicks here, or use the Dev Center’s built-in attribution. You also can’t use any third-party tracking links or redirectors except Microsoft’s chosen third-party tracking partners, Kochava and Tune. But the Promote Your App section of your dashboard does get its own conversion data, so ROI calculation is still possible without bringing on an expensive external attribution partner.
The platform forcibly divided our $200 coupon evenly over 30 days, so the spend rate is very low and we weren’t able to collect much data. What we did manage to collect didn’t look promising for our app:
I know our creative for this campaign was bad, but that is the worst clickthrough rate (CTR) on an ad I’ve ever seen. It’s hard for me to see how we could have made this work. But Microsoft is selling this traffic, so someone, somewhere must be buying it and getting value.
- Very slick — you can get started immediately, and you don’t have to change your app
- The built-in ad generator is actually pretty good, as long as your app doesn’t have a really long name like ours does
- Low CTR
- Can’t affiliate clicks
- Can’t use the Dev Center’s built-in attribution
- Standard DPI image assets only (for custom ads — auto-generated ads seem to be high DPI)
- Reporting is delayed by 1–3 days
Sponsored Reddit posts: Fun but frustrating
Reddit is another traffic source that allows exceptionally granular targeting, but it’s much less creepy than Facebook, since users volunteer their interests instead of being analyzed by the platform.
For this campaign, we bought impressions on the Windows 10 subreddit, setting the campaign to Desktop only. (We couldn’t count on mobile visitors to this subreddit being on a Windows Phone, and the Microsoft Store does not provide a good way of saving downloads when browsing on incompatible devices.)
We wanted to affiliate this traffic, but didn’t, for two reasons. First, it made the display URL in the ad unit look shady (clkde.tradedoubler.com instead of www.microsoft.com). Second, you’re actually not allowed to. Reddit, for a number of reasons, forbids you from posting redirectors of any kind, and Microsoft’s affiliate program relies on a redirect. (Hopefully, Microsoft will follow in Apple’s footsteps and make their affiliate program work without one.)
We were able to use the ?cid= campaign parameter to take advantage of the Dev Center’s built-in attribution, giving us install rate data for our ROI calculation.
Campaign and creative setup was easy, but actually getting it to run was a chore. Approvals can take up to 72 hours, the ad platform just flat-out doesn’t save changes sometimes, and our ads were rejected mid-flight (after initial approval) because Reddit doesn’t allow “free-just-pay-shipping” ads, a policy that has nothing to do with a free app download.
Twenty-four hours later, we were allowed to run our ads again, but by that time the sale on our app had ended. And even though we bid twice what Reddit recommended, we were still able to buy only a trickle of the 440,000 daily impressions promised by the platform on r/Windows10.
Our CTR was far from good. Each creative performed equally badly, although it’s hard to say for sure at such low sample sizes.
I was a bit disappointed by all this; we love Reddit and the community there, and I was excited to be able to spend some money with them, but they definitely didn’t make it easy. We’ll revisit this channel once Reddit squashes the bugs in its new ad platform.
- Great targeting
- Allows Dev Center CID attribution
- Engagement with the community (if you enable comments)
- Arbitrary ad rejections mid-flight
- Ads need to be re-approved each time you change the budget, targeting, or campaign schedule
- Janky ad interface
- Slow approvals
- No affiliation allowed
AdDuplex banner and interstitial ads: The default choice
AdDuplex is the default choice for indie Store developers trying to buy or sell traffic, and for good reason: they’ve been in the game since 2011, focused on supporting the Windows ecosystem the entire time.
We had some credits leftover from a previous ad purchase with AdDuplex, so we set up two campaigns. One used the interstitial format, which covers the entire app window when displayed (the larger images above). The other was a simple banner.
Setting up the campaign on AdDuplex was easy. They let us target by OS (Windows 10 in our case) and device type (Desktop, in our case — to keep things even with the other ad networks). We were allowed to use CID tracking, which made attribution easy. I wasn’t able to test whether affiliation is possible on this channel.
The traffic we received for the interstitial campaign was surprisingly affordable. But it’s clear there’s a lot more traffic available on the banner side, perhaps by an order of magnitude.
The CTR on the banner ad was about as low as we saw on Microsoft’s platform, although I think we could have done better with different creative. But the interstitial campaign did very well by all measures:
Paying $0.24 per free user is within the realm of affordability for many apps. Hopefully there will be more volume available here in the future.
- They know what they’re doing. App developers are AdDuplex’s bread and butter.
- Mature and stable ad platform
- Allowed to use Dev Center CID attribution
- Excellent performance on the Interstitial campaign type
- Delayed reporting (24–48 hours)
- Low banner performance
AppRaisin: A shot in the arm
AppRaisin is an app news platform owned by AdDuplex. AppRaisin’s community loves new apps (or deals on old ones), so we suspected they’d respond to Duplicate Cleaner Pro’s big discount.
We paid $99.00 for a 3-day “Spotlight” feature, which inserted a pitch for Duplicate Cleaner Pro in news items about other apps. Setting up this feature was simple: we just logged in to our AdDuplex account, wrote a pitch for our app, and submitted it.
Using this channel was a bit harrowing, since we didn’t know precisely when the spotlight promotion would start. But once it did, the results were positive:
We weren’t allowed to specify our own campaign ID, but AppRaisin helpfully supplied their own, so we were still able to use the Dev Center’s built-in attribution. We couldn’t affiliate these clicks (looks like AppRaisin places their own affiliate cookie instead — fair enough).
- Simple setup
- Good CPI
- Good community of engaged and positive users
- Only really relevant when doing a price drop, app update, or app launch
- No affiliation
Our own traffic: The stalwart
Most of our free apps have the ability to show house ads, so we made a few treatments for Duplicate Cleaner Pro to provide a baseline.
We’re a bit spoiled with our house ad system: we can affiliate the clicks, we can use the Dev Center’s CID attribution, we get real-time reports, and of course, we don’t have any ad approval issues.
Depending on the sophistication of your app’s ad tag or tag manager, you’ll get some or all of these benefits yourself.
We use our own technology, but you can get house ads in your own app by using Microsoft’s AdMediatorControl, AdControl, or InterstitialAd controls, and then running a “house ad” campaign from the “Promote Your App” section of the dashboard.
- Complete control from the ad to the Store page
- Opportunity cost (we could have sold this inventory instead)
- Management overhead of rolling your own ads
Epilogue: Prepare for unintended consequences
When we set the app to free, some lovely person submitted the update to AppRaisin organically, which drove 28 installs — nice!
But then MyAppFree.com got a hold of it, and drove a whopping 3,865 free installs. All of these were organic; we didn’t pay MyAppFree or set up anything with them.
This surge of users definitely made up for some of the failed experiments above.
Our next launch strategy will be focused on house ads, AdDuplex (and AppRaisin), MyAppFree.com, and maybe Reddit.
Facebook’s ads are beautiful, but seem too expensive; Microsoft’s placements have such low CTR that it’s not worth the trouble of us setting them up right now.
Despite Microsoft’s heavy promotion of their affiliate network, the only channel we used that allowed affiliation was our internal house ad network.
Managing active campaigns across all these channels would be difficult, since no single attribution solution works for all of them (even if you have expensive third-party attribution from Kochava or Tune).
- Facebook: Beautiful ads; probably too expensive right now
- Microsoft: Very low CTR; hard to buy traffic in volume
- Reddit: Promising, but hobbled by deficiencies in the platform
- AdDuplex: The default choice for a reason; start here
- AppRaisin: Great value, time it with your sales/updates/releases
- House ads: Make it happen; use Microsoft’s ad SDK or roll your own
Did this help your own marketing plan? Anything we left out? Let us know on Twitter!