?

Log in

No account? Create an account
FlySmarter postmortem (or: how to publish an app and lose money) - Greg [entries|archive|friends|userinfo]
Greg

[ website | gregstoll.com ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| * Homepage * Mobile apps (Windows Phone, Win8, Android, webOS) * Pictures * LJBackup * Same-sex marriage map * iTunesAnalysis * Where's lunch? ]

FlySmarter postmortem (or: how to publish an app and lose money) [Jun. 8th, 2015|10:28 pm]
Greg
[Tags|, , , ]
[Current Mood |disappointeddisappointed]

Edit: Linked to from WinBeta - thanks!

I released FlySmarter on May 13 (26 days ago), and I thought it would be a good time to report on how it's doing and some lessons I've learned.

So - how's it doing? The short answer: good and not good.

Good: The download counts have been good. As of today, it's been downloaded 2366 times, although the actual numbers have been very spiky: (click for full-size)

For comparsion, my other most-downloaded apps are Marriage Map (around 25/day) and SatRadioGuide (around 9/day), so FlySmarter is doing quite well by those standards, although clearly it will lose some ground when things stop being so spiky.

So what do the spikes come from? Here are the things I've noticed:
- It got posted to WMPowerUser, which is what caused the first spike. (I think) I haven't announced any of my apps there before, but I definitely will in the future!
- Gizmodo picked it as one of their favorite Windows Phone apps of the week! This looks like the cause of the next spike.
- It was featured on the Windows Phone Store, which is awesome! It was featured in the US store on: May 28, June 1 and June 6. Sadly Microsoft is moving to personalized app recommendations so this won't happen in the future, but this was a nice source of downloads.

I debated between making the app free versus making the app paid but allowing a trial - the effect is the same, but I think having it labeled as free led to a lot more downloads. Unfortunately, there's a flip side to this...

Bad: The purchases have been lousy. Let me walk you through my financial calculations a bit. The key fact is that every time a user refreshes a flight I have to pay a small amount (4/10 of a cent). This sounds small, but remember the app has to repeatedly poll the status to provide push notifications. I estimated that each flight would cost me around $0.08, so:
My costUser costRevenue (after MS cut)Profit
12 flights$0.96$2.99$2.09$1.13
22 flights$1.76$4.99$3.49$1.73

Keep in mind I have fixed costs as well, like the Azure web service that powers the app, the website hosting, etc.

The good news is that so far each flight has cost me almost exactly $0.08, so that was on target. The bad news is that people have added a total of 360 flights so far and I've sold a grand total of 2 packs of 22 flights. (and 0 packs of 12 flights) So...that's a bit of a downer.

I'm not sure what I could have done to avoid this. I feel like I needed to give some flights away to let people try out the app and see if they like it. But my conversion rate is apparently terrible. (there are 243 people that have searched for a flight, and 24 of them have added all 4 flights) And again, I wouldn't be so bummed about this if my app wasn't losing money!

And yes, there are ads if you haven't bought any flights, but they've taken in a total of less than a dollar. I'm using Microsoft's Ad Mediation, and I've gotten $0.72 from PubCenter (with a CPM of $0.43) and $0.19 from Smaato. (with a CPM of $0.07)

Bad: Reviews started out good but there have been some serious problems since then. (you can see the reviews with comments here) One person complained that the ads were "overwhelming", which I honestly don't understand since there's a banner ad on every page. (until you buy some flights) Is that overwhelming?

But the much bigger problem has been people complaining about having to login with their Microsoft account. I actually had a beta tester bring this up, but I didn't do anything because a) I thought it was necessary (details below) and b) I thought people who weren't comfortable with it would just uninstall the app and move along, since it's not like I was doing anything sneaky. Lesson learned: People will one-star your app for this!

So how did I get into this mess? Well, I was worried about people adding their four flights, uninstalling the app, and redownloading it to get another four flights. I'm pretty sure that if I just used roaming settings to keep track of their flights, this would happen. Again - not a big deal if they were just bilking me out of money, but since each flight costs me money I was worried about this. So my solution was to force people to login with their Microsoft account and use a hashed version as a user ID. (see the privacy policy) This also made it more reliable to transfer flights if they got a new device, etc.

Originally I was using a line like await auth.LoginAsync(new string[] { "wl.basic", "wl.offline_access" }); to request a login - I had some documentation suggesting that wl.basic and wl.offline_access were required. This led to a rather scary screen saying the app would have access to all their contacts, etc. I was hoping that the privacy policy would assuage people's fears, but no such luck. And I was afraid to change it because since the first time I got the login to work on my device I never saw it again! Lesson learned: You can go to account.live.com -> Security & privacy -> Manage permissions to revoke permissions from apps. And now the login line looks lke await auth.LoginAsync(new string[] { }); and the login page looks les scary.

Some other lessons learned:
- Responding to reviews is worth your time! Not everyone will read your email (or care), but I did manage to get some ratings revised upwards because people can tell that you care. (I originally had a really long response planned, but it turns out there's a 1000 character limit on responses :-) )
- It's very hard to get people to pay for stuff. I'm trying not to get too cynical about this, but...there it is. Maybe FlySmarter isn't compelling enough. Maybe the flights are too expensive. I don't know!

Summary:
FlySmarter has definitely been a failure moneywise. But it's not going to drain me out of house and home, and I learned a lot while doing it, including how to make an app use an Azure service on the backend and how to set up push notifications and tile notifications. And it did get featured in the Store multiple times, which is a nice feather in my cap. And I am generally proud of the app!

--

See all my Windows Phone development posts. I also send out a monthly-or-so email with news for developers - check out the latest email and sign up here!

I'm planning on writing more posts about Windows Phone development - what would you like to hear about? Reply here, on twitter at @gregstoll, or by email at greg@gregstoll.com.
LinkReply