Checkout used to be a dialog over the booking page, and the basket behind it lived only as long as the tab. Close it, refresh it, come back an hour later, and the customer started again. Checkout is now a page, and the basket is a real thing that waits.
- Refresh, and it is still there. The basket is saved and read back by its own link, so a customer can go and find their card, or their diary, without losing the lot.
- One basket, whichever door they came in by. All four ways into checkout now share the same basket instead of each keeping a private copy.
- Priced once, on our side. The total is worked out on the server rather than assembled in the browser, so what is shown is what is charged.
- Checked against today, not against last Tuesday. Before anyone pays we re-check the basket against your current prices, your hire windows and what you still offer. If something moved, the page says exactly what changed.
- A straight answer when a slot goes. A customer whose time was taken while they were deciding is told their time went, not that something went wrong.
- The rail reads like the basket it came from. The summary beside the payment form is the same list they built, in the same order, with the same prices.
Nobody abandons a booking because they refreshed the page.
