Restaurants & hospitality

Guests turned up and I had no booking. What to check in a restaurant booking system.

By Bruno Melani, founder of Gaplessly · 7 min read

The Bookings list in Gaplessly for an example restaurant: a search box, upcoming reservations with their tables, party sizes and confirmed status, and a banner for a large group enquiry.

The short answer

A booking goes missing for one of five reasons: the platform did not pass it on, availability differed between channels, the day or service was not blocked, the guest could not change it, or the table did not fit the party.

Here is how to check each one, and what a booking system should do so it cannot happen.

The five causes, and how to tell which one it was

Start with the guest, not the software. Search your records by their phone number and email as well as their name, because a booking made under a partner's name is the most common "missing" booking of all. If it is genuinely not there, one of these five is almost always the reason.

  • The platform did not pass it on. The guest booked through a channel that is not connected to your floor plan, so the booking reached you as an email or a notification, or not at all. One operator reported guests arriving to say they had booked online through a "reserve" button on their Google listing that they had never set up and had no record of.
  • Availability differed between channels. Your own site, a partner page and an app each answered "is there a table?" differently, and two of them said yes to the same table.
  • The day or service was not blocked. A closure, a private function or a changed set of hours never reached the places guests book from.
  • The guest could not change it. They needed to move or cancel, could not do it themselves, and booked again somewhere else without cancelling the first.
  • The table did not fit the party. A booking for two sat on a table for eight, or a party of ten was accepted with no table that could take it, and someone moved it by hand.

One answer to "is there a table?"

The fix for causes one and two is a single source of truth. In Gaplessly every public path asks the same rule set what a guest can book online: the availability grid on your booking page, the table options, the booking widget, the public API and the AI assistant tools all read one answer, so they cannot disagree. A booking taken on your booking page lands in the same floor plan as one your team types in, so there is no second system to sync.

Staff are deliberately not held to those rules. Your team can still book a table that is switched off online, so a regular who rings at 5pm can be seated even when the page says full.

Ask any vendor two questions: when a guest books somewhere other than your own page, does the booking land in my floor plan, or in my inbox? And can anyone else put a booking button on my Google listing?

Closed days, private functions and changed hours

Cause three is a blocked day that was not actually blocked everywhere. In Gaplessly you can stop online booking for a whole date or for one service period, from the calendar menu, while your team can still add the bookings you want. A venue can write the reason in its own words, such as "closed for a private function", and guests see it on the booking page instead of an unexplained empty grid. A banner can warn of a busy week or an early close.

The trap is the other direction: you change your hours after guests have already booked. When you save new service periods, weekly hours, special hours or a closure that would strand existing bookings, the save is refused until you have seen them. A sheet walks you through each affected booking, and you move it, cancel it or leave it, before the change goes ahead.

When a time is hidden and you cannot see why

If a guest says "your site would not let me book 7pm" and you can see a free table, you need to know which rule hid it. Gaplessly has a "Why isn't this bookable?" check on the new booking dialog and the hospitality calendar. It runs the same checks the public booking page runs, in the same order, and names the rule that removed the time: a same-day cutoff, a largest online party, a table reset buffer, an online stop or a switched-off service.

Letting the guest fix it themselves

Cause four is the guest who could not change a booking easily and booked again instead. Every Gaplessly confirmation email carries a private link to that one booking. From it a guest can move the time to another open slot, cancel, add it to a calendar or send you a message, with no account and no phone call, up to the cutoff in your cancellation policy. A change updates the booking you already have, so there is never a duplicate to reconcile.

One limit worth knowing: the link keeps the party size the same. A guest whose party grows from four to six sends a message from the same page and your team changes it. That is deliberate, because a bigger party needs a bigger table.

You can also have every confirmed booking emailed an "are you still coming?" a set number of hours before. The guest answers with one press, and a chip on the booking shows whether they have. Unanswered bookings are the ones to ring. This is email only.

Tables that fit the party

Cause five is a mismatch between party and table. Each table in your floor plan has a seat range, and the booking page only offers a time when a table that fits the party is free. On Growth and Pro, which include table combining, two or more tables can be joined for a larger party. A party above the size you auto-confirm is held as a request, with its tables held, and your team accepts or declines it from a Requests tab, so a large booking is never silently confirmed against a table that cannot take it.

The database itself also refuses to give the same table to two overlapping reservations. The buffer and cleanup time you set between bookings is enforced by the app, not by the database, so two guests booking in the very same instant could in theory land one booking inside another's buffer. It is rare, and your calendar shows it when it happens.

A five-minute check for your own system

  • Book a table yourself from your public page, then find it in your floor plan. Time how long it takes and whether it needed any action from you.
  • Block tomorrow for a private function, then load the booking page on your phone. Does it say why?
  • Change your Saturday hours with a booking already in the diary. Does the system warn you about that booking?
  • Open the manage link from a test confirmation. Can you move the time without ringing?
  • Ask for a party larger than your biggest table. What does the guest see?

A working restaurant booking page, with the floor plan behind it.

Common questions

Why would a guest turn up when I have no booking for them?

Usually the booking exists under another name, was made through a channel that is not connected to your floor plan, or was never confirmed. Search by phone and email first, then check the five causes: a missed hand-off, differing availability, an unblocked day, a guest who could not change it, or a table that did not fit.

Can a booking system prevent double booking?

It can refuse to give one table to two overlapping reservations, and Gaplessly does that at the database. The buffer and cleanup time between bookings is enforced by the app rather than the database, so two guests booking in the same instant could in theory land one inside the other's buffer.

Can guests change their party size from the confirmation email?

Not in Gaplessly. The manage link lets a guest move the time, cancel or send a message, and keeps the party size the same. A change in party size goes to your team as a message, because a bigger party may need a different table.

How do I find out why a time is not bookable online?

Gaplessly has a "Why isn't this bookable?" check on the new booking dialog and the hospitality calendar. It runs the same rules as the public booking page and names the one that hid the time, such as a same-day cutoff, an online stop or a largest online party.

What happens to bookings when I change my opening hours?

In Gaplessly, saving an hours change that would strand existing bookings is refused until you have seen them. A sheet lists each affected booking and lets you move it, cancel it or leave it before the change goes ahead.

Do not take our word for it. Open the demo.

The real product, running with example businesses. No account, no card, and nothing to uninstall afterwards.