fbpx

Turning a Broken Flow Into a Better Booking Experience

This case study outlines how I transformed that frustrating dead-end into a recovery path – one that encouraged continued exploration, even when the original offer was gone.

Date: 2024, Skills: user testing, user flow, prototyping

Kissmetrics reports that 79% of customers are less likely to come back to a site if they encounter performance issues.

In travel products, availability is dynamic – itineraries can disappear in seconds. For users, this often leads to frustration, especially when they return to a trip they saved or viewed recently, only to find that it’s no longer accessible.

Travel app wireframes showing outdated content flow. Screen 1 displays the Explore page with popular travel destinations. Screen 2 shows the Saved Items section where the user selects an outdated saved trip. Screen 3 presents an error message page indicating the travel item is no longer supported or accessible due to being outdated.

Disappearing Trips and Blocked Journeys

In the experience provided in the app I have been working on, a noticeable portion of users were encountering errors when trying to access saved or recently viewed trips. These failures were caused by various factors – items expiring, offers changing (such as a hotel room or experience being removed), or itineraries becoming unavailable mid-booking.

To make matters worse, there were multiple technical limitations. Users couldn’t be notified of availability changes before clicking an item. The trip detail page didn’t update dynamically or suggest new dates. And if users were sent back to the search panel, they often encountered the same issue again – no results. This created a frustrating loop, leading to user drop-off and decreased conversion. 

The challenge was to keep users engaged even in the face of backend constraints we couldn’t control.

Mapping the Challenge

My first step was to investigate where and why users were dropping off. I needed clarity on the error triggers and what prevented us from offering a smoother, real-time recovery.

I partnered with technical and product teams to map availability data flows and identify where interventions were feasible.

It quickly became clear that we couldn’t fully prevent these edge cases. But we could reframe the experience that followed.

Rather than treating these moments as failure points, I saw them as opportunities to guide users forward in a more thoughtful way – transforming confusion into discovery.

Wireframe flow of a travel app showing multiple user scenarios: starting from the Explore page, selecting a saved item, checking availability, and viewing error or alternative options if the item is unavailable.

Benchmarking & UX Insights

To inform my approach, I looked at how other travel and e-commerce platforms handled fallback states. I also reviewed existing patterns across different parts of our own product ecosystem.

A common approach was to simply prompt users to repeat their search. However, I found this often led to the same dead end: no availability, and more frustration

This insight pushed me toward designing a more proactive, contextual recovery model. 

Instead of asking users to start over, the plan was to offer them relevant, curated alternatives – supporting their original intent and helping them continue without unnecessary friction.

Designing a Smarter Fallback

The solution was built around a simple but powerful idea: offer relevant alternatives the moment an itinerary is no longer available.

I designed a fallback logic that prioritized what users value most – destination, timing, and quality of experience. This logic formed the foundation for a new type of recovery journey.

I designed for four fallback scenarios:

  • The same itinerary and dates, but with a slightly modified offer (e.g., a different room type).
  • The same itinerary, but available on nearby alternative dates.
  • Similar itineraries in the same region within a three-month window.
  • Similar trips in different regions that matched the user’s original date range.

This structure helped us maintain user intent and reduce abandonment, even when a perfect match couldn’t be offered.

Three mobile screens from a travel app showing an unavailable trip. The first screen shows a trip to Koh Lanta with a message that the selected dates are no longer available, along with alternative dates and prices. The second and third screens display an error message 'The trip got away!' and offer options to edit the search or explore other destinations like 'Tides & Tranquility' in Lisbon, Vietnam, and Cambodia.

Structuring the Experience

I began by changing the tone of our messaging. Instead of showing a generic error, users now saw friendly, informative copy. This simple language shift reframed the situation from a dead end to a helpful recommendation. It set the stage for discovery, not disappointment.

To support this message, I designed a dynamic alternatives module that adapted based on available data.

I also refined the interaction flow. Users could jump straight into a new booking flow without being pushed back to the search panel. This kept the experiencealigned with varying user needs.

Inclusivity was a key part of the design process. All fallback components were built to meet AA standards for contrast and readability.

System Thinking: A Flexible Model

A major strength of the new solution was its flexibility. The fallback logic and components were designed to scale across different product types and technical error scenarios. This created a reusable foundation that could be applied beyond this single issue, helping the product build broader resilience across the booking experience.

Designing for the Unexpected

Designing for failure states can be just as impactful as designing for the happy path. By focusing on recovery – not just error – we were able to turn user frustration into continued engagement.

This case demonstrated that even when technical constraints limit the ideal solution, thoughtful UX design can bridge the gap and turn broken moments into opportunities.