I was recently listening to Patrick O'Shaughnessy interview Tony Xu, the founder of DoorDash, on his podcast Invest Like the Best. About 26 minutes into the episode Patrick asked the question:
“When you did get to the consumer side and started building that UI, what did you learn then about generating demand?”
Tony’s response made me stop what I was doing and then kept me thinking the rest of the day:
“I think there were a couple of different inflection points. The first was just the realization that consumers came for really the content that we were showing them, the amazing local Mediterranean hummus shop, the amazing cake store, your favorite fast food place. Whatever it was, that was probably the first recognition that the content was what people were coming to look for, more so than any other consideration.”
Tony is making an insightful observation about most B2C mobile apps. Apps are working to earn their users’ and customers’ attention in an attention-scarce world. “Content” is just a techno-startup term for stories. The best way to get and hold people’s attention is through stories. In DoorDash’s case, these are the stories that frame the food we eat: memories of amazing meals, imagining far-off places and their incredible local dishes, the beauty of delicious ingredients prepared skillfully. The best content triggers and interacts with far richer and more complex stories that happen inside a person’s head.
Unfortunately, the food delivery apps that I've interacted with across the U.S. and Asia are under-delivering stories. Specifically, they’re failing to use their push notifications to tell stories. In this post I’ll use push notification data to show how that’s the case for DoorDash and other major food delivery apps. Aampe is building a product to turn push notifications into powerful stories, for food delivery and all the other apps that are really content (story) and attention apps.
The problem with Food Delivery Notifications (starting with data*)
Between January 1 and April 1, 2021 I was residing in San Francisco and I received 43 push notifications from Uber Eats, 71 notifications from Postmates, 11 notifications from Grubhub, 10 notifications from DoorDash, and 111 notifications from Foodpanda (because I'd just come from Singapore). Here is a sample of three notifications from each of the U.S. apps. If you’re interested in seeing all 246 notifications, ping me on twitter (@pmeins) or send me a note at firstname.lastname@example.org and I’ll send you a file.
There isn't much story going on here. Postmates stands out occasionally because its notifications sometimes have a bit of ‘personality’ to them:
Depending on your perspective, those notifications might make you chuckle or raise your eyebrows. But in any case they’re the exception. Most of the notifications I receive from food delivery apps are bland, generic, repetitive, not useful, and therefore annoying. When Tony Xu said DoorDash users were coming for the content DoorDash was showing them, I don’t think these push notifications were what he was talking about. Search Twitter for any of these apps with the text “push notifications” and you’ll find plenty of people with similar takes:
At this point you might be thinking something along the lines of “Yea, push notifications are absolutely awful. Just turn them off!” There are undoubtedly many people who respond this way. But that personal response doesn’t account for how push notifications fit into a product marketing strategy. Push notifications do work as a form of communication. I shared some twitter examples above complaining about push notifications. Here are some that illustrate how they are capable of communicating effectively:
Many (most?) push notifications aren’t very good. But they still work at some level. The rest of this post is about how push notifications could be so much better.
Making push-notifications for Food Delivery better
I order food delivery frequently, but the notifications I receive are still disconnected from my food ordering behavior. In January and February, I used Uber Eats to order from the restaurants on the left. During the same period, I received notifications from Uber Eats about food items on the right.
Even a decent recommender system like those used by most eCommerce and streaming media apps would be able to identify that I’m not the target user for Cheetos or Spicy McNuggets, but as these food delivery companies aren’t implementing such a content recommender on top of their outbound messaging, I’m getting messages about these items that are irrelevant to me.
Why can’t these push notifications interact with me instead of having a one-way conversation that consists of spamming me with the same message they’re using to speak to every other app customer? I’d be happy to be reminded of the food I’ve eaten, and I’d like to receive recommendations based on the actual dishes I’ve ordered. I hate generic recommendations. But making choices is hard on busy days, and I’d appreciate recommendations that are actually personalized.
Notifications about food instead of about prices
The fact that delivery app push notifications overwhelmingly focus on fast food and price discounts suggests that at one level, that aspect of food delivery is important. They probably work with a significant number of people a good portion of the time. I’m pretty sure that there are more orders from McDonald's in San Francisco than from Cha-Ya Vegetarian Japanese Restaurant. But recommendations that are based on an average or a mode don’t work with everyone, and they don’t work all of the time. If you add up all the users ordering from long-tail restaurants, you’ll have a fairly major minority of your overall customer population. This is an example where the lack of personalization leaves a whole lot of “value” on the table.
Tony’s observation makes it clear that the founder of one of the largest food delivery companies knows that food is more than just a “fast” activity constrained only by cost. And yet, notifications almost exclusively recommend fast food and appeal to interest with pricing discounts. They remind a user over and over that she can save $5. They never tell her about “the amazing local Mediterranean hummus shop” nearby.
But they could! Notifications could be food-centric. If I’m in Santa Fe, New Mexico, and there’s a great pizza place, they could tell me about some of the dishes that are popular there, like the notifications I’ve written for illustration purposes below on the left:
Don’t just send me discounts. Put food in my notifications: ingredients, recipes, dishes, and descriptions!
The practical challenges with writing more personal push notifications and how to overcome them
Challenge 1: Rigid Tools
Writing better push notifications for food delivery isn’t hard — with tools like Chat GPT, we can write thousands of push notifications (or SMS messages, WhatsApp messages, etc.) in just a few seconds — the hard part is matching those messages up with user behavior, and that’s where our marketing technology is failing us.
Most “modern” CRM systems require you to build rigid journeys or fixed trigger-based interactions, and while this checks the box for messaging users at scale, having to place all of these rigid boxes, paths, and decision trees is not great for true individual personalization. How could it be? Our users’ lives are a tangled web of activity full of decisions and distractions, changing plans, and the emotions that come with them. How could we ever possibly capture all of that complexity for hundreds of thousands or even millions of different people in a diagram like this:
To be fair, some tools are launching new features that claim to personalize the timing of your messages or let you test up to eight different copy variations, but you likely have a catalog of dozens or even hundreds of restaurants each with hundreds of possible dishes that could be sent to thousands or tens of thousands of users. Using eight different variants doesn’t let you capture the true complexity of your offerings or your customers’ individual wants and preferences. That wouldn’t even be possible with a thousand different variants.
Challenge 2: Insufficient data and capabilities
To make better food delivery push notifications and messages, you need access to (at least) two different kinds of data:
1. A full inventory of the options you have available (restaurants, menu items, etc.)
Most food delivery apps have this available, and it’s likely even already categorized, but they’re not using it effectively. It just lives in the app for when a user wants to place an order, but it could be used proactively to remind users of dishes they’ve loved or to send them new, interesting dishes that will catch their interest as they become available.
2. An understanding of each individual user’s motivations
If someone clicks on a general notification, we know that they ordered food, but we really don’t know why they ordered that food and this is the second key to personalization. Some people order food in because it’s convenient. Some people order food because they appreciate the value. Others feel overwhelmed by family or want a treat as a distraction from work, while others just want to try new things. And these motivations are all in a constant state of flux for each user — sometimes they care more about convenience and other times they want to try something new — these motivations are not rigid.
Great food delivery notifications don’t just understand what food choices your customers are interested in, but why those choices are appealing at that time.
To write more appealing and effective push notifications, we need to overcome both of those challenges. Here’s how we do it:
Recommender optimized for notifications
First of all, we needed a recommender built and optimized for outgoing messaging (push notifications, SMS, WhatsApp, and even In-app messages), so we built one. Our recommender can ingest your full catalog of items, including restaurants, dishes, and any other offerings your app has available, and drop them into your messages using basic liquid tags. It can accept and work with millions of items.
It’s a conversion-based recommender (meaning it knows the difference between “popular” or “most viewed” items and items that are more likely to lead to orders. Those two things are often not the same), and it also works on consumption sequences (meaning, once you order, we have a pretty good idea of what you’ll order next.) This keeps our recommender effective, lightweight, and easy to implement, and we can work with all kinds of offerings and products.
Message inventory and labeling system
Most CRM teams organize their notifications in a spreadsheet, but we needed a much better organizational structure to achieve personalization, so we built that too. Our composer tool provides a way to build a library of messages that are labeled, tagged, and organized across all of your various messaging channels, from Push, to SMS, to WhatsApp and In-App.
While this single message may look like a standard push notification, each individual block of text is a variable with multiple variables:
By seeing which version(s) of each message users interact with, we can build a better understanding of their individual motivations (e.g., are they motivated by convenience? Affordability? Taste?)
One-to-one user journey builder
We’ve talked about why the specificity of recommendations matters for personalization (both the dish and the motivation for ordering), but timing also plays a significant role (In fact, we’ve found that timing is actually one of the most significant factors determining if someone clicks a message or not.).
But “proper timing” doesn’t just mean sending a message at 6:00 p.m. instead of 2:00 p.m. It’s understanding that our users have general cycles to their lives, but that those cycles also change and flex. They will be receptive to ordering food multiple times some weeks, while other weeks, they’ll only want to order once or perhaps not at all. We need to be flexible to support them in the times while they’re looking for options, but also back down our messaging frequency when they’re not in an ‘ordering’ mood.
You can see that in the diagram below:
When user activity (grey humps) slows, so does our messaging cadence (blue dots). When user activity picks up, so does our messaging. (For a more in-depth review of AI-driven user journeys, click here.).
We accomplish our timing and content personalization with a hybrid contextual bandit algorithm and reinforcement learning. If you want more information on what it is and how it works, we have a simplified video here and a more detailed technical breakdown here. All you really need to know is that you don’t need to spend time building those rigid, ineffective journeys anymore. Now you can focus your time on more meaningful work like getting to know your customers and building more relevant content for each of them.
And we wrap all of these features into a single user interface
Your content and user behavior feeds into the same system where you write and store your messages and we can easily tie in with your existing user engagement/MarTech stack. This allows our AI to get a full picture of your each of your user's individual wants and preferences, all of the content and offerings your app provides, and what messaging options it has available to send to your users. It's a closed system which helps enhance our performance and your usability.
Food is often about experiences, memory, and community. Notifications should be too.
When I imagine and start to crave lasagna, I care about more than just filling my mouth and stomach. I might be remembering an incredible trip to Italy with dear friends, or fantasizing about such a trip. Or perhaps I’m remembering time with family and friends around a warm and hearty meal. I may be imagining vine-ripened tomatoes tumbling out of a basket onto the kitchen table. Notifications should engage with me on these levels. If they’re constantly just telling me I can save $5 on delivery, they’re missing the point. Notifications can (and should!) be written in a way that tells a story and that taps into the immense range of 'value' that food provides.
Push notifications can be so much better, more meaningful and more effective than they usually are, for delivery apps and for so many other categories of consumer mobile apps. If you’re interested in learning more about how we’re making that possible at Aampe and about the value you can generate with personalized notifications, we'd be happy to show you.
*I've logged over 5,000 notifications from over 134 mobile apps.