Travelers rarely abandon a booking because they changed their mind about the trip. They abandon it because one of seven fixable website problems handed them a reason to doubt. Below is a real session recording from a 14-room guesthouse in Oregon, lightly trimmed, in the order it happened.
00:00 Opens the results page on an iPhone, 4G
00:06 First room price appears. Layout jumps twice
00:13 Picks a double room, two nights, taps Book
00:17 Account wall. Starts typing an email and a password
00:29 Verification email needed. Leaves the tab, comes back
00:36 Total on screen is $38 above the price on the room card
00:41 Tries to shift the stay by a day. Keyboard covers the calendar
00:47 Three mis-taps on the 14th, lands on the 21st
00:52 Payment page opens on a domain she has never seen. Tab closed
The owner’s conclusion was that she found something cheaper. The network log said something else: 6.1 seconds before the first price, and a payment total that did not match the card she had clicked.
I have spent eleven years building and repairing booking flows for hotels, tour companies, and small agencies, and I stopped accepting “they were just browsing” a long time ago. What follows is the same recording, second by second, with the seven things that went wrong and what my peers and I do about each. It is written for owners, so the code stays in the background.
0:00 to 0:06: the page that never finishes loading
The results page is too heavy for a phone on a mobile connection. The Oregon site opened with a 4 MB carousel of twelve hero photos, and only then showed the room list. On 4G that meant 6.1 seconds before a single price. The owner had been reading her mobile bounce rate as window shopping.
Google’s Core Web Vitals set the bar at a Largest Contentful Paint of 2.5 seconds or less, an Interaction to Next Paint of 200 milliseconds or less, and a Cumulative Layout Shift of 0.1 or less, measured at the 75th percentile of real visits. The second jump in the recording, where the layout moved under her thumb, is the third of those failing. Deloitte and the agency 55 studied 37 brand sites and more than 30 million sessions for Google in 2020 and found that a 0.1 second improvement in mobile load time lifted travel conversion by 10.1%. A tenth of a second.
Our fix was dull. Images through a CDN, lazy loading everything below the first room card, a server-rendered room list, and the map hidden behind a tap. LCP dropped from 6.1 to 2.2 seconds on throttled 4G, and the owner could not see the difference with her own eyes, which is how it should be.
Here is where the patch-or-rebuild question first shows up. A template with a few conflicting plugins gets patched cheaply, and you should do that this month. If the results page is assembled from three vendors’ scripts and every optimization breaks something else, you are paying for patches that each last about four weeks. At that point it is usually cheaper to hire ReactJS developers and rebuild the front of the booking flow as one piece than to keep buying fixes for a structure that fights them.
0:17 to 0:36: the account wall
Nobody wants a relationship with a hotel they have not slept in yet. The recording shows 19 seconds lost to account creation and an email round trip, and on a phone that is generous. A tour operator in Lisbon I worked with in 2023 was worse: visitors had to verify an email before they could even see the seat map for a 90 euro day trip. They left the site, opened an inbox on patchy roaming data, and a fair share never returned.
Baymard Institute’s running average puts cart abandonment at 70.22% across 50 studies, and among people who abandoned during checkout, 18% said the site wanted them to create an account. That figure is for ecommerce in general. Travel checkouts are longer, and I have personally watched a walking tour ask for passport numbers.
We moved account creation to the confirmation page and cut it to one checkbox, “save these details for next time.” More people opted in than had ever completed the forced sign-up. The season turned at the same time, so I cannot hand you a clean lift figure. What I can say is that complaints about the sign-up step went to zero.
Returning guests are the one group that benefits from an account, so give them a way in that costs nothing. A magic link sent to the email they already typed does the job, with no password to forget on a beach in Portugal. Most owners I talk to assume a login is how you build loyalty. In my experience, a good confirmation email and a fast second booking build more of it.
0:36: the total that grew
A surprise fee at the last step reads as a lie, even when it is legal. This is the biggest leak I see, and it is the $38 in the recording. The room card said $149. The payment page said $149 plus tax, a $12 facility fee, and a $9 booking fee that the engine vendor adds by default. Normal in hospitality. Poison once the guest has committed in her head.
Baymard’s checkout survey has 40% of abandoners citing extra costs, the top reason on its list. Fullstory surveyed more than 1,000 US consumers in May 2026 and found that 61% name hidden or unexpected fees as their top booking frustration, with 31% saying a price change at the last stage is why they fail to finish. Travelport’s June 2026 survey, run by Dynata, adds that 46% had abandoned a booking partway through because of complexity.
My rule: the number on the room card is the number on the payment page, tax included. A fee that truly cannot be folded in goes on the card in plain words, never in a tooltip. This is the cheapest fix on the list and usually the one that pays back first.
In Oregon, we moved the facility fee onto the room card in week three. Nothing else shipped that week. The drop-off at the payment page shrank within days, and it moved more than the speed work did a fortnight later. There was no A/B test and spring bookings were already climbing, so treat that as an observation from one site, not proof.
0:41 to 0:47: the calendar under the keyboard
The date picker is the most-touched component on your site and often the worst built. In the recording, the keyboard opened on every tap and covered the month grid. A picker I replaced in 2024 had 28-pixel tap targets, so a thumb aimed at the 14th landed on the 21st. A seat selector I inherited for a boat tour depended on hover, and phones do not hover.
Each of these turns a 15-second task into a two-minute one, and nobody files a bug report. They close the tab. Analytics shows a drop at the date step, and the owner decides people were not serious. Baymard puts 17% of checkout abandonment on errors and crashes, and I suspect this is where much of the travel share hides, though that part is my read.
Use native date inputs where they work, or a single well-tested picker library, with tap targets of at least 44 pixels and a visible selected state. Then test on a real mid-range Android phone. I keep a $180 one on my desk, and it has caught more revenue-killing bugs than any device lab I have paid for.
0:44 to 0:48: the room that was already gone
Selling a room you no longer have is the one mistake that produces refunds instead of lost sales. The recording does not show this one because she never got that far, but it sits right behind the calendar. In 2022, a three-property group I supported synced availability from its channel manager every 15 minutes. On a holiday weekend, two guests booked the same room nine minutes apart. One turned up to find it occupied. A chargeback and a one-star review followed, and the review named the website.
The quieter version is “sold out,” appearing after card details are typed. Few travelers try twice. The cost is not only the lost sale. That guest now tells three friends the site is broken, and in a small market those three friends are your next quarter.
Owners ask whether a nightly sync is enough. For a property with a handful of rooms and one booking channel, maybe. The moment you sell through two or more channels, it is not, and I would push for webhooks or at least a check every minute.
Three changes fix most of it. Check live availability when the guest lands on the payment page, not only at search. Start a soft hold of around ten minutes once payment begins, with a visible timer. And show “last one left” only when it is literally true, because once a traveler catches one fake scarcity message, every other claim on the page loses weight.
0:49 to 0:52: the payment page that looks like a stranger
Trust at the payment step is made of small details and lost the same way. A hostel I audited in 2024 sent guests through a gateway redirect to a domain they had never heard of, under another company’s logo, with no mention of the hostel anywhere. Fewer than half of the people who reached that page went on to confirm. The hostel was fine. The page looked like phishing, and in the recording it is the last thing she saw.
Baymard puts 19% of checkout abandonment on not trusting the site with card details, and another 9% on too few payment methods. In travel I would guess the trust share runs higher, because the amounts are bigger and the stay is weeks away. I cannot source that, so take it as a hunch.
What I put on every payment screen now: the cancellation policy in one sentence directly above the pay button, the merchant name that will appear on the card statement, Apple Pay and Google Pay (a wallet skips the typing that kills mobile checkouts), and no redirect to a page that wears someone else’s branding.
If your gateway insists on a hosted page, ask the vendor for its embedded or hosted-fields option before you accept the redirect. Most major gateways offer one, and it is typically a day or two of work to switch. The guest should never leave a page that carries your name for one that does not.
0:52 and after: the tab she closed
Travelers compare, so build for the comparison instead of fighting it. The same Fullstory survey found that 24% of travelers leave to compare options and never come back. Most sites write that person off. I treat her as 80% of the way to paying, which is also a guess, but a cheap one to test.
A kayak tour operator I work with added a single button on the seat selection step in 2025: hold these seats for 24 hours, no charge. It emails a link that restores the date, the seat count, and the pickup point. I expected it to attract people who were never going to book. Over the first summer, roughly a third of the holds turned into paid bookings.
A save-and-return link costs an afternoon of development. A real price or seat hold is a different thing, an inventory decision. It is wrong for a boutique hotel in high season and close to free money for a tour operator with soft capacity. Pick based on your capacity, not on what a competitor does.
One more detail from the Kayak site: the hold email goes out within a minute, with the price repeated in the subject line. Late emails convert badly, because by then the traveler has opened four other tabs and found a reason to forget you.
What to fix first
The seven items are sorted by effort more than by importance, so here they are that way. If you only have one afternoon, start in the left column. If you have a developer and a month, the middle column pays for itself fastest after that.
|
Fix this weekend |
Fix this month |
Rebuild
|
|
Put the full total, fees included, on the room card |
Move account creation after payment and offer guest checkout |
Live availability with timed holds and a real pause-and-return path |
|
Add the cancellation policy and card statement name above the pay button |
Replace the date picker and seat selector, test on a cheap Android |
A single front end for the flow, if three or more vendors share it |
|
Turn on abandoned-booking reminder emails if your engine has them |
Compress images, lazy load, server-render the room list |
|
The rebuild column is the one owners avoid, and I understand why. It is also the only column where the answer depends on how your site is built rather than on what is wrong with it. Before you pick it, watch twenty recordings like the one above and count how many end at the same second.
What the recording looks like now
Same visitor type, same phone, same Oregon guesthouse, after nine weeks of the work above.
00:00 Opens the results page on an iPhone, 4G
00:02 First room price visible, layout holds still
00:09 Picks a double room, two nights. Total matches the card
00:16 Calendar opens above the keyboard, one tap per date
00:24 Pays with Apple Pay, cancellation terms in view
00:31 Confirmation on screen, details saved with one checkbox







