A guest who reaches your booking engine has already done the hard part for you: they found you, chose you, and clicked "Book". When they leave at that point, it is almost never because they changed their mind about the hotel. It is because something on the page made booking feel harder, slower or riskier than booking elsewhere.

You can find out which by booking your own hotel, on a phone, as a stranger would. Do it now; it takes ten minutes and usually settles the question.

The usual reasons, in the order they cost you

1. The price grows at the end. Taxes, city tax or a "service fee" appear only on the last step. Show the total, or at least say clearly what will be added, on the first screen with a price.

2. The dates the guest chose are not carried over. They picked dates on your homepage and the engine opens on today. Every re-entry is a chance to leave.

3. It is slow or broken on a phone. Most hotel searches happen on phones. Tiny date pickers, fields that zoom the page, buttons below the keyboard — each one loses people.

4. Too many steps and fields. Ask for what the booking needs: name, email, phone if you will really call, and payment if you take it. Address, title, date of birth and "how did you hear about us" can wait for check-in.

5. No reason to book direct. If your website shows the same price as the OTA and nothing else, the guest books where they already have an account. Give a concrete reason: breakfast included, a better cancellation term, a room choice — something the guest can see.

6. It does not look like your hotel. An engine on a different domain with different colours makes a careful guest wonder if it is real. Keep your logo, your colours, and ideally your own domain.

What to measure

Two numbers, weekly: how many people started a booking and how many finished one. When you change something, see whether the second rises. Ignore everything else until that ratio is where you want it.

When the engine is not the problem

If people start bookings but none are available on the dates they want, the engine is working and your availability is not reaching it. Check that the engine reads live availability from your PMS, not a copy someone updates by hand.