AI and websites

The booking page works in the preview. Then two customers pick the same slot

You pick a time, the confirmation appears and the preview looks finished. Then two visitors take the same Thursday morning slot, and the double booking surfaces exactly when the diary is full.

The preview is not the diary

A booking form is one of the faster things an AI tool produces. Describe the services, the opening hours and how long an appointment takes, and you get a page with a date picker, a list of free times and a confirmation message that reacts correctly when you click it. For a physiotherapy practice, a dog groomer or a plumber who still answers the phone, this is real progress: the screen that used to absorb a developer for a week now takes an afternoon, and the surrounding copy is written in the same sitting.

What the preview cannot show is the diary behind the slots. The times on the page came from a sentence you typed, not from anyone’s actual week, so the page is advertising availability that nobody has agreed to. A visitor cannot tell the difference. They pick Thursday at ten, receive a confirmation and assume the appointment exists.

The site therefore launches with a convincing demonstration of booking rather than booking. The gap appears at the first real appointment, which is exactly the week when the calendar is busiest.

What stands between a slot picker and an appointment that happens

Availability has to come from somewhere real. A slot list derived from opening hours ignores everything that actually shapes a week: a site visit on Thursday afternoon, an hour blocked for paperwork, two jobs that need travel time between them. When the booking lands on a day that was never free, someone telephones the customer to move it, and the first moved appointment is usually the last time that person trusts the page.

Time zones never announce themselves. The visitor’s device, the server and the person who will do the work may all sit in different ones, and a booking made late at night for “nine o’clock” can quietly become three in the morning. Nothing in the flow looks broken. The confirmation has to state the date, the hour and the time zone in words, because a slot the customer misreads is a slot you lose twice: once in the empty chair, and again in the drive back.

An appointment nobody is reminded about happens less often. Somebody has to decide when the reminder goes out, through which channel and from which account, and the same person has to decide what a customer does when Thursday no longer works. If the only way to cancel is a phone number that goes unanswered, the diary fills with people who meant to change and did not, and the no-show rate becomes an argument about customers instead of a missing step in the flow.

The booking has to reach the person who acts. A confirmation that lands in an inbox nobody opens between nine and five is not a booking; it is a note. The same applies to deposits: a free slot is cheap to take and cheap to abandon, so the business has to decide what it asks for, when, and who notices when a payment does not arrive.

Three ways to put booking on a site

The first route is a link to an external scheduler. The site holds a button, the visitor leaves for the provider’s page, chooses a time and returns. It is the fastest thing that can honestly be called real, because availability, time zones, reminders and the diary are somebody else’s maintained job. The limits are practical: the visitor leaves your site halfway through, the branding and the customer data belong to someone else, and the monthly fee, the export path and the notice period deserve reading before you commit. Handing it over is trivial; taking it back later is not always.

The second route is a booking plugin inside your CMS. The form sits on your own page, matches your theme and keeps the data in your system, so a new service or a changed price is a form field rather than a ticket. You pay in maintenance: the plugin has to suit your version, updates have to be applied, and the day it stops being maintained you own the booking flow anyway, whether or not anyone planned to.

The third route is a custom build connected to a real calendar. You control every rule, so buffers between appointments, several staff with different weeks, deposits and unusual opening patterns become possible. You also inherit everything the plugin did quietly: preventing two people from taking one slot, retrying a confirmation that arrives twice, reconciling a change made on a phone while the page was open, and the time-zone arithmetic that keeps them honest.

All three routes raise the same question: who maintains this in a year? That answer decides the choice more than the initial build does. A route you can hand over with a one-page runbook is worth more than an elegant route that lives in one person’s head.

What breaks after the first real booking

Two visitors take the same slot. A preview is clicked one person at a time; real traffic is not. Without locking, Thursday at ten is sold twice, and the business discovers it when both people are standing at the door.

The confirmation reaches nobody who acts. An address typed one character wrong, an integration still in test mode, a shared mailbox that nobody opens on Monday morning. The customer holds a confirmation, the business holds nothing, and the first either party hears is a complaint.

The reminder never arrives. The automation step is switched off, the sending account is unverified, or the message lands in a junk folder. The customer turns up late or not at all, and the business blames people instead of checking whether the message was ever sent.

The week looks full for the wrong reason. A cancellation that was never processed, or a slot blocked by a test booking, keeps availability hidden while the real week sits empty. Customers see a booked-out calendar and go elsewhere; nobody inside the business sees it at all.

Nobody can see where the bookings stop. Without a record of how far visitors get — page opened, slot chosen, confirmation sent — the business argues about the design instead of the drop-off. The most valuable number on a new booking page is how many people reached the final step and never finished it.

What AI is genuinely good at here

Use it for everything that is text, structure or rehearsal. Writing the confirmation and reminder copy that answers the questions people actually ask — what to bring, where to park, how late is too late — mapping the whole flow from pick to confirm to remind to reschedule to cancel, and generating the awkward test cases nobody writes by hand: two visitors at the same second, a booking made from another time zone, a cancellation twenty minutes before. It is also useful for the runbook: what to check, in what order, when bookings look strange.

Do not let it choose the business rules. Slot length, buffer between appointments, cancellation window, deposit, opening hours, who gets notified when a booking arrives and what happens to someone who does not turn up — every one has a cost attached and a person who must stand behind it. The machine is fast at producing; the decisions stay with whoever owns the outcome.

Then book it for real, twice. Two people, two devices, the same slot. A cancellation from a phone. A reschedule that frees the old time. A reminder arriving in an inbox rather than a junk folder, with the diary updated behind it. Run it before launch and again after the next change, because the booking flow is exactly the kind of thing that quietly breaks during one.

Booking belongs on the launch checklist

A website that can take bookings is two deliverables, and only one of them is a page. The page can be generated quickly and regenerated whenever it needs to be. The second deliverable is the promise behind it: availability that comes from the real diary, a confirmation that reaches the person who acts, a reminder that arrives, and someone who knows what to do when a booking behaves strangely. Businesses that treat the second one as part of the build launch quietly; businesses that leave it to somebody else find out during their first busy week.


Related service: Website and web application development