How to take bookings on your own website
There are four ways to take table bookings from your own website — a form, a phone number, a link to a booking page, or an embedded widget — and they're not equally good. Here's what each one costs you in lost covers and admin time, and how to add one to the site you have.
Your own website is the one booking channel nobody can switch off, reprice, or wind down. It's also, in most independent restaurants, the worst-performing one — because the "book a table" button leads to a contact form, an email address, or a phone number, and a good share of the people who click it quietly give up.
There are four ways to do this. They are not equally good.
The four ways to take bookings from your own website. A phone number: no cost, but only works when someone can answer, and every call interrupts service. A contact form or email: cheap, but it's a request rather than a booking, and someone has to reply. A link to a hosted booking page: real availability and instant confirmation, though the guest leaves your site. An embedded widget: real availability and instant confirmation without the guest ever leaving your page — the best conversion, and the most setup.
1. A phone number
Not obsolete. For a small venue with a landline someone actually answers, the phone converts brilliantly — you get to upsell, ask about occasions, and manage the book in your head.
The problem is availability, in both senses. It only works when someone can pick up, which is rarely during service, and it can't take a booking at 11pm — which is exactly when a lot of people sit down and plan the week. Keep the number prominent, but don't let it be the only option.
2. A contact form or an email address
The most common setup, and the weakest. What you have isn't a booking — it's a request, and it carries three hidden costs:
- Someone has to reply. Until they do, the guest doesn't know if they have a table, and a
meaningful share of them will book somewhere that told them straight away.
- It doesn't check availability. So you get requests for times you're closed, parties you can't
seat, and dates you're already full.
- It's invisible to your own planning. A booking that lives in an inbox isn't on the floor plan,
isn't in the covers count, and doesn't send anyone a reminder.
If this is where you are, this is the single highest-value thing on your list to change.
3. A link to a hosted booking page
A "Book a table" button that opens a proper booking page on a different domain. The guest picks a date, sees real availability, books, and gets an instant confirmation.
This is a big jump from a form and it takes about five minutes to set up: you're just changing where a button points. The only real cost is that the guest leaves your website, which loses you a little of the atmosphere you've spent money building, and a small number of people bounce at the moment the domain changes.
For a lot of independents this is genuinely enough. Don't let anyone talk you out of it on the way to something more complicated you never finish.
4. An embedded widget
The booking flow appears inside your own page — your header, your photos, your fonts around it. The guest never leaves. This converts best, because there's no domain change and no sense of being handed off, and it's the setup worth aiming for if your website is doing real work for you.
It's also the one with actual setup involved, which is the next section.
Adding a widget to the site you already have
Almost every booking widget is a snippet of HTML you paste into your page. Where you paste it depends on what your site is built with. You're looking for the block that lets you insert raw HTML or an embed — the names differ, the idea doesn't:
- WordPress — a Custom HTML block in the editor, or the equivalent widget area in your theme.
- Squarespace — a Code block on the page where you want it.
- Wix — the Embed HTML element.
- Webflow — an Embed element inside the layout.
- Shopify — a custom section, or the page's HTML editor.
- A hand-built site — paste it wherever the button lives.
Two things that catch people out. First, some website builders restrict embeds to their paid tiers, so check before you plan around it. Second, put the widget on a dedicated /book page and point your navigation button at it, rather than embedding it three times across the site — one page means one thing to fix when something changes, and it's the page you can send people to from Instagram, Google and your email footer.
The five things any booking widget must do
Whatever you end up using, check these before you commit:
- Work properly on a phone. Most restaurant bookings are made on one. If the time slots are
fiddly with a thumb, nothing else matters.
- Show real availability, tied to your actual tables and covers — not a form that accepts
anything and leaves you to sort it out.
- Confirm instantly, in writing. An email in the guest's inbox before they've put their phone
down.
- Not slow your page down. A widget that adds seconds to your load time costs you the visitors
who never waited to see it.
- Not shove your content around. If the page jumps as the widget loads, people mis-tap and
leave.
What "commission-free" does and doesn't mean
Direct booking is usually sold on cost, and the cost argument is real — but be precise about it, because the models differ.
A booking made through a marketplace may carry a per-cover or per-guest fee. A booking made on your own site, through your own system, usually doesn't — you pay a flat subscription regardless of how busy you are. That's the actual difference: not "free" versus "expensive", but a fixed cost versus one that grows every time you have a good month.
What it doesn't mean is that card payments are free. If you take deposits or sell tickets, your card processor charges its own fee on each payment, and that's separate from whatever your booking system charges. Any provider being vague about that distinction is worth a second look.
If you want to know what your current per-cover arrangement adds up to over a year, our booking commission calculator works it out from your own covers and your own rate — it deliberately doesn't guess a rate for you, because most platforms don't publish one.
Where to start if you're on a contact form today
- Put a real booking page live and point your existing "Book a table" button at it. One afternoon.
- Add the same link to your Google Business Profile, Instagram bio and email footer. Ten minutes,
and it's usually where most of the traffic actually is.
- Once that's working and you can see bookings arriving, embed the widget on a /book page so
guests stop leaving your site.
In that order. Each step is useful on its own, which means you get value even if you stop after the first one.
How this works in ResoFlow
Every venue gets a public booking page from day one, on any plan including the free one — real availability, instant confirmation email, and the booking lands straight on your floor plan and covers count. The embeddable widget is the same booking flow in a snippet you paste into your own site, and it's on every plan too, with your own brand colour. To be straight about the one limit: the widget carries a small "Powered by ResoFlow" mark unless you're on our top plan, which removes it.
More detail: add bookings to your website, the step-by-step in embed the booking widget, or integrations for what else it connects to.
If you'd rather not touch the HTML
Fair enough — most people would rather not. Setup is £199 and currently free: we'll configure the plan you choose, get your booking page and widget live, and import your existing bookings and customer list. It's done remotely: you get in touch, we arrange a transition day, and most venues are live within a day of it, subject to availability and how quickly a few decisions get made.
Plans start at £39 a month with no per-cover fees, and there's a free Taster plan if you want to see your own booking page working first. Free setup has the detail, or email [email protected] with a link to your website and we'll tell you what's involved.