For years now, we’ve all had it beat into our heads that we need to build user journeys.

…as a matter of fact, we’re told that we’re irresponsible if we don’t.

According to Silicon Valley analyst Andrew Chen’s blog, the average app loses a full 77% of its users in the first 3 days after install...and after 90 days, only 5% of those original users are left.

This startling truth has driven us to find any method we can to help keep our users in our ecosystem and push them further down the funnel, and our tools have evolved with us to offer us new and different ways to filter, segment and apply rules.

On the surface these journeys make sense.

There’s a logical process that our users need to follow to accomplish the goals we want them to achieve in our apps:

For eCommerce and Food delivery apps that flow might look like this:

Install app > view product > add to cart > checkout

For Gaming apps, it might look different:

Install app > play a free game > add funds > play a paid game

Easy, right?

…not so much.

User Journeys aren’t “free”

Ok, the onboarding journey seems pretty straightforward, and you can whip something up in 5 or 10 minutes.

…but what happens after our user makes their first purchase?

We’ve seen, time and time again, that most app’s users who make a purchase churn before they make a second one, but purchase frequency is the key to increasing revenue (having 2x the impact of the average order value):

Looks like we need to build a reactivation journey!

…Oh, and we should make an abandoned cart journey while we’re at it too.

…and we should probably make a version of each of these journeys for each of our different user segments (based on our user’s individual demographics, their past actions on our app, etc.)

…and now this is getting messy.

Just look at how Slack decides if they should send someone a push notification:


This begs the question: Do more rules and a bigger flowchart really mean a better customer experience?

Anyway, before long, we’ve put hours into building these intricate journeys until they’re absolutely bursting with decision trees and ‘if/then/else’s.

*Oh, and don’t forget to keep A/B testing and optimizing all of the different aspects of each of these flows! Every 0.1% improvement counts!

“Optimizing your User Journeys is just refining them for the largest minority.” -Schaun Wheeler, Co-Founder, Aampe                

User Journeys aren’t accurate

Ok, we have an idea of the journey we want our users to take…and it probably looks something like this:

Wouldn't it be great if all user journeys looked like this one?

Open the app > Search > Apply Filters > View Cart > Click Recommendation > Add to Cart > Start Checkout > Complete order

…but, in reality, our user’s actual journey often looks more like this:

The actual data is much messier than we'd actually like to admit...

*by the way, this is real user data from a real app. We didn’t cherry pick. You can see more of our data here.

To get a more accurate picture, we tracked the actions of almost 42,000 users as they traversed a popular clothing retail app over the course of a week.

(Note: We heavily filtered this data, removing things like the most infrequent actions and users who didn’t actually check out)

…and what did we find?

In all, we observed over 50,000 unique paths users took between “App opened” and “Purchase Complete.”

Only 6.8% of users took the same path as someone else, and only 1.2% of users who made multiple purchases in the same week (just short of 10,000 users) followed the same path as they did on their previous purchase.

What does all of this data mean?

It means, if you wanted to make an accurate, successful user journey that was truly personalized to each user, you’d need to write over 50,000 unique journeys.

…That’s a lot of decision trees.

User Journeys can actively push our customers to uninstall

Ok, but it doesn’t really matter what the customer wants, does it?

I mean, we don’t want our customers moving products out of their carts and into their wishlists, so why on earth would we encourage that behavior?

We might not like it, but the answer is because it’s what our user wants to do, and, by being unrelenting in our quest to push them farther into the funnel, we might just shove them right out the door.

Are user journeys just rolling the dice with your users? 🎲🎲

Let’s take an example of a popular gaming app we work with –

Before we started engaging with them, they had a user journey that would actively push their users farther down the gaming funnel like this:

  1. Instal the app >> 2. Play a free game >> 3. Play another free game >> 4. Deposit money >> 5. Play a cash game >> 6. Play another cash game

…but what happens if a user runs out of money before step 6? (“Play another cash game”)

At this point, our user journey is sending our user “Come back and play a cash game!” messages at regular intervals, but the user doesn’t have the cash to play.

If this is the case, we could be alienating our user by actually making them feel bad for having our app, because our app is consistently reminding them that they don’t have enough money to play.

…and this is exactly how your app ends up in the trash bin.

So often we’re told that push notification frequency is what causes people to uninstall apps, but this isn’t actually the case.

What actually makes our users uninstall is when our messages are tone deaf — when our messages aren’t aligned with our user’s current state — and this is something we can’t easily account for with a static user journey.

What states are each of your users in?

At Aampe, we’ve identified 4 major states* a user can be in:

4 of the 5 user states

*Note: Onboarding is also a state, but we won’t cover that here.

The 4 major states are (1) Inactive and emerging, (2) Recently active and resting, (3) Active and in-market, and (4) Inactive and resting.

1. Inactive and emerging

Inactive and emerging users are users who haven’t interacted with your app in a long time, but are showing signals that they will engage very soon.

(E.g. A user who is coming back to your travel app because it’s almost time for their yearly vacation.)

2. Recently active and resting

These are users who have recently interacted with your app, but are not expected to interact again for a period of time.

(E.g. A user who has just purchased their yearly pair of eyeglasses.)

3. Active and in market

These customers are currently interacting with your app and are expecting to continue interacting.

(E.g. A user who is currently working through streaming episodes of their favorite show.

4. Inactive and resting

Inactive and resting users are users who haven’t made a purchase or interacted with your app in a period of time, and they’re not expected to for another longer period of time.

(E.g. A user who is between major purchases, like a user who bought a new house or car just over a year ago and doesn’t plan to buy again for at least another year.)

Traditional push notifications/user journeys (e.g. discounts, strong CTAs, product recommendations) work well for users who are in the ‘Active and in-market’ and ‘Inactive and emerging’ states, but these are exactly the same message that drive users in the other 2 resting stages away.

To send messages that keep your users engaged and moving down your “user journey”, you need to meet them where they are and speak to them with respect to their specific state.

But what if we’re looking at it all wrong?

Ok, the true point of a User Journey is to get our user to perform the action at the bottom of our funnel…No argument there.

Where it gets messy and starts to fall apart is when we assume that there’s only one way – or that there’s a single ‘best way’ – for our user to accomplish that goal. That’s when we start building these elaborate user journeys based on assumptions and the limited testing we’re able to perform.

…but maybe, instead of focusing on the hypothetical journey we want our customer to follow, we should take a second to reflect on what motivated our user to install our app in the first place.

See, people don’t install apps for fun, yet, for some reason…

Out of the 3.59 million apps to choose from, our user downloaded your app.

(That’s a bit of a miracle in and of itself, isn’t it?)

The question is ‘why did they install your app?’

…and the answer is simple: They wanted something from it.

So, if ‘wanting something your app has’ is a suitable enough motivation to drive your user to go through all the effort of searching through the app store and actually installing your app, it should also be all the motivation they need to complete a purchase.

…and so it shouldn’t be a surprise that we start to see drop-off when we switch the messaging from ‘Here is something you want,’ to ‘here is the journey we think you should follow to continue interacting with our app, and you will do it on our timetable.’

Here’s putting it another way:

  • Why did the user install our app? Because they wanted something.
  • Why will the user add their payment information? Because they want something.
  • Why did our user add something to their cart? Because they wanted it.
  • What will get them to open our app again? Because they want something.

Notice a pattern?

Nobody adds their payment information to an app for fun, and they also don’t do it because they’re told to as part of an onboarding sequence. People add their payment information because it helps them get what they want.

So keep showing people what they want, and they’ll take care of the onboarding process themselves.

Is it really that easy?

[It’d be nice to have some kind of stats here.]

Yep. It is.

…and here’s just one example:

Fy! is a UK-based home and living marketplace with more rugs than IKEA, more furniture than MADE, and more art than John Lewis. They’ve shipped over 1.75m products from over 3,500 emerging brands and artists to over 800,000 shoppers in the UK.

…and, in just 3 months after switching to a messaging-first approach with Aampe, they’ve already realized a: 

  • 30% increase in orders placed for customers within their first 30 days since install
  • 15% increase in orders placed after their customers’ first 30 days

For a combined 7% Compound Monthly Growth Rate.

Up, up and away!

…and this doesn’t even account for all the time the Fy! team saved by not creating multiple rigid segments and elaborate user journeys.

They just wrote compelling messages featuring their various products and let Aampe do the rest.


But how can we show our users all of the products they want without creating a ton of segments?

Don’t worry, that’s where Aampe comes in.

With traditional messaging platforms, you have to make content that’s broad enough to appeal to the thousands or hundreds of thousands of users who will be simultaneously receiving it. 

That’s why most push notifications are so generic. They have to be.

At Aampe, we take an entirely different approach: You start by writing messages

Lots of messages.

Then we take these messages and conduct a sequence of highly-parallelized A/B tests across your entire userbase to learn, how, when, and how frequently to distribute each of these messages based on the propensity of each user to complete your desired goal (add to cart, checkout, etc.). [You can find more technical details on how our system works here.]

We call it Message-Led Personalization and it’s pretty rad.

The ultimate cost of user journeys

So, as we’ve shown, user journeys aren’t free, they’re not accurate, and they can actively drive your customers away. 

…but there’s still one more cost that you incur when you build traditional user journeys — Opportunity Cost.

See, when you send a message in a traditional customer journey, you don’t learn anything.

In contrast, every highly-instrumented message sent by Aampe is tested against clusters of users for timing, copy, and content effectiveness, and Aampe continuously updates its model based on your users’ individual responses to learn your audience better and better with every single message.

In other words, sending messages with traditional user journey software robs you of tens of thousands of opportunities to learn and optimize your messaging every single day:

So, don’t invest your time into ‘setting up a baseline,’ start getting results with Aampe.

Get set up in a couple hours. See results in a couple weeks.

Message get@aampe.com to get started.