Journals / Case study

How Expedia learned which price alerts are worth sending

A price alert looks like pure service, yet every one spends a little of the traveler's attention. In 2023 Expedia described how it stopped sending flight alerts by fixed rules and let a simple model decide, every day, who should hear from it. Here is how it worked, what the numbers do and do not show, and how we would build it now.

12 OCT 20268 min readNotifications · Personalization · Travel Based on: Expedia, 2023
Expedia app screens. Two flight price-drop push notifications on a lock screen, a list of price alerts, and a flight search with a price-history chart and a Get price alerts toggle
Image: Expedia

On Expedia, a traveler watching a route can switch on price alerts and get a push notification when the fare moves. It sounds like a feature you simply turn on. In October 2023, two machine learning scientists at Expedia Group, Dammy Arinde and Henok Yemam, explained why it is not: the team had replaced the fixed rules behind those alerts with a model that decides, every day and for every subscription, whether an alert is worth sending. The algorithm is ordinary. The question it answers is the part worth studying.

The problem: every alert has a cost

Price alerts serve price-sensitive travelers who want to book at a fare they consider fair. Expedia first sent them by business rules, and rules, the authors write, "are not adaptable to changing circumstances or user preferences". Send too few alerts and the feature feels dead. Send too many and people tune out, or switch off notifications for the whole app.

The team's framing is the useful part: "there is a cost associated with every price alert". An alert nobody opens is not neutral. It spends a little of the traveler's attention and a little of the brand's permission to reach them. So the goal became sending alerts "more likely to be interacted with" while "avoiding those that may cause user fatigue and disinterest".

How they built it

A different question. The old logic asked whether a price had changed. The new one asks whether this traveler will open this alert. A model Expedia calls Message Relevancy scores each subscription once every 24 hours, and when the predicted chance of an open is high, the alert goes out.

A simple model, chosen on purpose. The team picked a random forest classifier "due to its simplicity and ease of parallelization". Its inputs come in three groups: how the traveler has responded to past notifications, the subscription itself (how many searches they follow and for how many days), and how far the flight price has moved since they subscribed. The label is plain: opened or not. Opens beat clicks as the target because "only a small number of travelers clicked on the notification", and opening an alert already shows the new price.

Diagram: three decision trees each vote Open or Not Open on whether to send a notification, and a majority vote decides Send
Expedia's illustration of the idea: several trees vote and the majority decides. The post calls it a general diagram, not the production model. Image: Expedia

A second version. The first model only handled subscriptions of at least 10 days; shorter ones fell back to the old rule. The second version also counted indirect opens, when a traveler opens the alert later from inside the app. It was tuned with Automated Model Tuning, an in-house wrapper around the open-source tools Hyperopt and MLflow. With that, the fallback rule could go, and alerts could start "from the second day of their subscription period, regardless of the subscription duration".

Guardrails against its own bias. A model that learns from past opens has a blind spot. Travelers who never opened an alert would never be sent one, so the model could never learn that they had changed their mind. The team named the problem, "the bias toward past interaction behavior", and added safeguard rules: a subscription that has gone a certain number of days without an alert gets one, and a total price change above a threshold always triggers one. The aim is that "approximately 90% of subscribers receive at least one notification" while they are subscribed.

What it delivered

Expedia reports 98 percent recall in production and an F1 score 20 percent higher than the previous production model. It also reports "a substantial increase in the opt-in rate", a larger share of subscribers receiving alerts, and a "notable boost" in the open rate.

Read those numbers with care. The post gives no precision, no base open rate and no A/B test, and recall alone can flatter a system: sending every alert would score 100 percent. What the 98 percent does say is that the model rarely holds back an alert from someone who would have opened it, which is the mistake the team cared about most. The 90 percent coverage rule guards against the opposite mistake. Together they describe a send policy with two explicit limits, which is more than most notification programs can say.

What has changed since

Prediction became a product. In February 2025 Expedia launched Flight Deals, saying its technology "now analyzes more than 2 million flights a day" and surfaces fares "at least 20% cheaper than the typical estimated price", next to Price Tracking & Alerts and Price Drop Protection. The footnote keeps the honest caveat: "Price predictions are not a guarantee." In May 2026 it announced Package Price Insights, "signaling when Stay + Flight package prices are typical or lower than usual", due later in 2026.

Watching prices moved into AI assistants. In October 2025 Expedia was among the first travel brands with an app inside ChatGPT. In a YouGov survey that Expedia Group commissioned in March 2026, 42 percent of respondents said they "use or would use AI to monitor prices", while only 8 percent felt comfortable booking through an AI platform. In July 2026 Expedia acquired Layla, "an AI-native trip planning and booking platform".

The alert is still the hook. In October 2026 the Expedia app's store listing still promises: "Track flight prices and get alerts when prices drop, so you can book at the right moment." Expedia has not published an update on the Message Relevancy model itself, so whether it still runs in this form is not public.

Why it matters for your business

Indonesian customers carry phones full of promotions from marketplaces, banks, ride-hailing apps and every brand they ever bought from, much of it on WhatsApp. Attention is the scarce resource, and on WhatsApp Business a marketing message also costs money. Any business that sends "price dropped", "back in stock" or "rooms available" messages faces Expedia's question: hotels writing to past guests, shops announcing restocks, developers sending a new price list.

The lessons carry over directly. Decide per person, not per event. Write down both failure modes, too quiet and too loud, and put a number on each. Watch opt-outs as closely as opens, because an opt-out ends the conversation for good.

Indonesia's personal data rules point the same way. Under Government Regulation No. 33 of 2026, which implements the PDP law and takes effect on 16 January 2027, consent-based processing for offering goods or services must disclose, among other things, "the mechanism for withdrawing consent and for reporting continued solicitations after withdrawal", according to Hogan Lovells Cadwalader. A clear opt-in, a one-tap opt-out and a record of both belong in the first version of any alert program. We are engineers, not lawyers, so treat this as a prompt to ask yours.

How we would build it today

  1. Start from the decision. For every subscriber, every day: should this person get this message today? Log every decision, including the ones that said no.
  2. Predict the effect, not just the open. Keep a small random holdout that gets no alerts, and model uplift: the extra bookings or return visits an alert causes, not the opens that would have happened anyway. Expedia's post reports no holdout, and that is the gap we would close first.
  3. Keep the guardrails as rules. A coverage floor like Expedia's 90 percent, a cap on messages per person per week, quiet hours in the customer's time zone, and a rule that a large price change always goes out.
  4. Use simple models in a daily batch. Gradient-boosted trees or a random forest over past opens per channel, days since subscribing, price change in percent, days until the trip, and today's price against a forecast. Calibrate the scores so a threshold means something.
  5. Pick the channel by cost. Push costs almost nothing, email little, and WhatsApp marketing messages are billed. Send the costly message only when the predicted effect pays for it.
  6. Report four numbers every week. Share of subscribers reached, open rate, opt-out rate, and bookings per thousand alerts against the holdout.

Expedia's model was a random forest, a tool most data teams have used. What made it work was treating each notification as a decision with a cost, and writing guardrails for the model's own blind spots. That framing will outlast every model swap.