Slopes Diaries #25: A New Lineup

Slopes Diaries is my ongoing journey to turn my indie app into a more sustainable part of my business. First time reading? Catch up on the journey so far.

What is Slopes? Think Nike+, Runkeeper, Strava, MapMyRun, etc for skiers and snowboarders.


Some of you may recall that one of the reasons I wanted to add free sync to Slopes was so that I could better understand how my free users use Slopes. What keeps them a free user instead of converting to a paid user? How I might have structured my in-app purchase offerings in such a way to exclude large parts of my market (something I had certainly done before in my early focus on subscriptions)?

Sync launched in time for the 2017/18 season, so I started this summer with a database filled with a treasure trove of raw information that might help me answer these questions. Over the week of WWDC in San Jose , with the help of some friends and a lot of tea, I got to writing some very painful SQL queries so I could start to look for patterns.

With the queries I focused on trying to understand the recording patterns of three classes of users:

  • People who recorded entirely in free mode for the 2017/2018 season
  • People who bought a Day or a Trip Pass for 2017/2018
  • People who bought a Season Pass for 2017/2018

What I found, once I was done figuring out some SQL acrobatics, was pretty interesting and lead to a theory of how I might improve my IAP offerings.

The thing that first stood out to me was how similar free users were to the users that bought a Day or Trip Pass. Like, strikingly similar. Those two classes of users recorded the same number of days on average that season, for example. But then one stat stood out as a key difference: how long their season was (that is how many days lapsed between the first time they record and the last time they record in the season). People who didn't buy anything tended to have a length of season that was double those that did buy a pass.

So this meant said free users would get a same theoretical value (same number of days recorded on average) out of buying the pass, but the timing of when they could go up to the mountain was affecting their willingness to buy a pass. Their usage of Slopes was more spread out in the season, so my main consumable offering of the Trip Pass (valid for 7 days straight) wasn't of any use to them.


To date I've always tried to mirror how ski resorts charge to help people quickly understand my IAP structure. Generally when one goes to a ski resort for multiple days you'll be sold a multi-day pass that is limited in the time it is valid for (so you can ski 3 days within a 4 day window, or 5 days in a 7 day window, for example). Resorts do this to make sure the multi-day pass isn't going to be valid after you leave, even if you didn't use all the days you paid for. Ski resorts often price tickets based on the historical demand of that day (for example peak season is more expensive, holiday weekend might be pricier, days earlier or later in the season are cheaper), so these discounted bundles need to be limited in validity for this demand-based pricing to work.

One advantage resorts had that I didn't though was that they would customize how many days this multi-day pass could last for: 2 days, 3 days, 5 days, whatever. My Trip Pass, to simplify my IAP offerings, was fixed to a 7 day window. This did lead to a few emails a year of customers saying they wished the Trip pass worked differently because it could feel like a waste to buy a 7 day pass to only ski 3 days (you were still saving money vs buying 3 Days Passes, but customers still perceived a loss).

Besides lacking that key advantage, I also didn't like that this added mental load to the purchase time. It felt like three different product offerings, even though two were similar (Day and Trip) in how they worked.

Flaws aside, the Trip Pass has been working for a lot of people. Last season it was purchased ~8,000 times, which was almost 2x the number of Season Passes sold. I knew there was something here, I just hadn't quite mastered it yet. I needed to replace it, not kill it, all while hopefully fixing these failings I had identified.


After all those SQL queries, a lot of brainstorming, and some (more) tea on one of the last days of WWDC, an idea was hatched.

What if I still sold being able to ski multiple days with Slopes, with a savings for buying multiple days all at once, but removed the one week time-based limitation on when you had to use all those days by? This would break the mold of emulating ski resorts in a pretty big way, but it would make the middle option in my IAP lineup much more useful to those users who didn't find the existing Trip Pass compelling (while still offering a similar value to people who were using the Trip Pass as-is).

So I killed the Trip Pass, and the 5 Pass Bundle Pack was born.

Slopes IAPS for 2018/2019 Season

This hits all my goals:

  • Allows the consumable I want to highlight as the main alternative to my Season Annual Pass (more on that name change next time) to be useful to people who take sporadic trips.
  • Avoids the perceived loss users feel when buying a 7-day pass to cover just 3 days.
  • Simplifies my product offering. You go annual, or you "pay as you go" without regard for worrying about "how long is my next trip?" to figure out if individual day passes or a bulk trip pass is more economical.

And as a bonus:

  • Adds value to my middle consumable as it is now a lot more flexible for users.
  • Encourages users to come back to Slopes next year if they have a pass left. While I'm sure some will forget they have passes left, I hope this will incentivize users to stick with Slopes because they don't want to waste passes (and I'm assuming they'll often carry a balance of passes).
  • I can encourage users to revisit Slopes by reminding them of unused passes at the season start, or offering a free day pass to "get them going again" (which wouldn't be useful to them if they had been one to buy a Trip Pass in the past).

To make the new pass work through I had to price the new bundle higher ($7.99) vs the old Trip Pass ($4.99). The Trip Pass was easy to make cheap since it was so time-boxed (same trick the ski resorts use), but since these now never expire I needed to account for that. I'm pricing my bundle at a 20% savings vs buying Day Passes individually ($1.99 each).

Based on other SQL queries I ran, even with a higher selling price, this will still increase the value (number of days unlocked) per $ spent for the average customer that previouly relied on Trip Pass.

This change to my lineup leaves me with two main risks:

  • I'm going to piss a few people off, I'm sure. No one likes change, and I'm sure for the people that were maximizing the Trip Pass to full use (skiing 7 days straight) this will come off as a money grab. They'll wish it was the same 7 days for $4.99 as before. But without a time box that doesn't make sense as 7 days for $4.99 is a 65% savings vs buying the days individually. You can't sell at that kind of sale without some catch, which I'm now removing.
  • I have to be careful that I don't cannibalize my Annual Pass ($19.99) users too much. Now that the middle IAP provides days that last forever until used I have to be careful that this isn't too much more appealing than the Annual Pass for existing Annual Pass users. So part of my pricing equation was to price relative to the annual pass – make sure majority of existing annual users will still get the best value out of going with the subscription. I think I'm at a sweet spot based on the SQL queries that I ran; I'm expecting I'll lose some Annual Pass users to the new offering, but I'll make that revenue up in old free users who now have a much more compelling way to pay for and support Slopes.

But I think the risks are calculated, and will work in my favor. 🤞