Slopes Diaries #33: Hi There, Do You Have a Moment to Talk about the One True App
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.
Back when I was working on implementing my sync engine over the summer of 2017 the main problem I was trying to solve was helping protect customer data. I hated getting emails from users who didn't realize they needed to use iTunes / iCloud backups to move Slopes data to a new phone, incorrectly assuming that Slopes would backup things for them like many other fitness apps. Other fitness apps had made sync table stakes.
But I knew giving free users a reason to make a Slopes account would be useful from a business standpoint, too. It would allow me to improve to how and when I was able to interact with my customers. See, before sync I had no way to reach out to free users outside of the app itself, and that's problematic.
It's a situation a lot of app developers will naturally find themselves in. When you're an "app developer" it is easy to focus on the app and not the think of the app as part of a whole product. I'm certainly guilty of this from time to time. We put a lot of thought into what we can do within our apps to improve our customers' experiences (and hopefully our business' revenue), but it can seem unnatural to focus on how we can break out of that screen. After all, the app is the product, so why look elsewhere?
(Which explains app developer mistake #1: always finishing the app then working on marketing it 1 week before launch. The app will just sell itself, right?)
Relying on in-app messaging during Slopes's brief screen time was even more problematic because of the fact that Slopes isn't the kind of app that a user will open daily or even weekly throughout the year. I'm very seasonal. Targeted and timely in-app messaging could help but it is very tricky to get right with such time constraints. I've got a lot I'm trying to talk to customers about at any given time: trying to help them discover features & educate them, trying to nudge them along to moments of joy that'll help them get Slopes. Oh, and I'm also supposed to be up-selling.
The thing is, though, not all product messaging needs to be synchronous along side the user's on-screen experience. As a product owner I have to be aware of not just the messaging that's right for any given user (based on where they are with using your app + what messaging needs to take priority over others) but also how receptive the customer will be to hearing any message right then and there.
My messaging is fighting against them just trying to get something done quickly because the outside world is demanding their attention. They've just finished a day skiing and they just want to save their day and get back to taking off their ski boots. So sadly the right message at the wrong time gets ignored. My perfect messaging instead can get in the way, leaving users quick to dismiss whatever message I'm trying to give them.
Sometimes messaging works better if it is a bit asynchronous. Give them a bit of time to go about their day, get some immediate use out of your app. Queue up the messaging in a way they can async go back to it, when they have time to process things.
So I was excited: with a much better chunk of users give me their email I'd finally be able to try out another SaaS trick: lifecycle emails. Sending out an email at key points in the customer journey to guide them to the next step, ultimatly aiming to keep them coming back to Slopes year after year, and hopefully making some purchases along the way.
Lifecycle emails are tricky, though. I've seen way too many companies abuse it just to keep people "engaged" (which usually results in emails from that company quickly finding themselves automatically flagged as spam). I've seen others seemingly implement it to check the box on their roadmap, but the marketing isn't particularly thoughtful as to how it is helping customers along.
But I knew that doing nothing was a wrong answer, too, because lifecycle emails have been shown in the SaaS world to work, and sometimes have huge payoffs.
So one of this season's goal to finally start experimenting with this kind of marketing. I've gotta start working to learn what works and what doesn't for Slopes in this arena of marketing outside of the app itself. I'm trying this 2 years later than expected, but hey, such is the indie life. As usual I probably left money on the table in favor of shiny new features I wanted to work on. 😅
Originally I was going to do all of this in-house, but I was pointed to Vero by another app founder, and decided that I could offload a bunch of problems that have already been solved in this space. For example I knew I'd be wanting to try new flows / emails as I learned, and the idea of making some dynamic system to let me (or someone non-technical) edit those workflows w/o code wasn't enticing. I just wanted to focus on the aspects that were specific to my business, not implementing branch logic, job delaying, and a bunch of other crud.
One thing I underestimated was the amount of work it would be to generate all the events I needed to power all my messaging. The ski niche once again complicated my life. Slopes can't just say "do this on their second day recorded" (which first of all, I have to be able to group multiple recordings from one day into a single event where needed so I don't trigger the day 2 messaging because they recorded once after breakfast and once after lunch), it has to be "the second day of this season". Do "such and such" if they haven't bought a pass this season but they have recorded 4 times this season.
But a week later it is all done, and all my workflows are online. I've got some workflows in place now that I'm very curious to follow / tweak.
Now that Apple gives us a server-to-server notification when a customer disables auto-renew, I have an email going out 10 days before that subscription without auto-renew on expires to remind the user about it. They bought a Slopes subscription a year ago and might have turned it off at the end of the season just to be safe. Totally fair. Without this email I'd have to hope that they just happened to open the app within the two weeks before it would expire so they'd see the in-app messaging I added. Without extra outreach effort like those two, they'll likely resubscribe anyway this season, but maybe a month after the original subscription expired. Which means I'm back to that 30% cut from Apple for a "new" subscription vs the 15% cut for a renewal. This one email might save me 15% of my revenue per customer in situations like this.
I'm also using these emails to help offload some of the messaging / reminding I'd have to do in-app. For example when a user buys an Annual Pass this year, they get 2 free Day Passes to share with friends (partly inspired by Vail's Epic Pass and the 6 buddy passes you get when you buy it). I mention this on the buy-a-pass screen, but I'm venturing this bonus is secondary thought at the time of purchase. And directly after the purchase I want to prioritize getting them to use the features they just paid for and fall in love with all the cool new stuff they can do, not spam them with a reminder to send those bonus passes. Now I get the chance to remind them in their purchase confirmation email, a little bit later, that they should go give the 2 free Day Passes to a friend.
Slopes has a total of 10 lifecycle workflows like these right now (which can contain any number of email sequences / branch logic, etc). We'll see how they go throughout the season.
It is so easy to rely on Apple to do everything for me, send my customers purchase confirmations and remind them of an upcoming renewal, but these lifecycle emails help me build a relationship with my customers outside of the App Store.
Because at the end of the day I need to be interacting with customers at these key points to take the opportunity make them my customers, not just Apple's.