Add-on · no fee per guest
A floating “Book a table” button, one form with no sign-up — and the request appears in the Cenaly.com Tables section next to bookings taken by phone. For venues that would rather not pay for every seated guest.
Registration is free and needs no card · table booking is a paid add-on you switch on in the catalogue · settings reach your site in 5 minutes
They open the form with the widget’s own button in the corner of your site, with a button or link of yours, or from the “Book” item in your multi-button fan.
Name, phone, date, time, party size and a note — all on one screen. Today’s date and 19:00 are pre-filled, and no sign-up is needed.
The widget promises no confirmed table: it says the venue will confirm the booking, and offers to book another one.
Guests don’t pick a table or a room — you allocate those. The request is already in your Tables section, and the answer comes from you.
A free Cenaly.com account and your site domain in the "My website" section.
One line before </body> — in your theme, in a Tilda or Wix HTML block, in Shopify's theme.liquid. It serves every widget.
Each widget is a toggle and a settings form. Changes reach your site without touching code; CDN cache is five minutes.
The tag
<script src="https://cdn.cenaly.com/site/v1.js" data-domain="your-site.com" async></script> One tag for all widgets. `data-domain` is your site; everything else lives in the admin.
One screen, no steps and no sign-up: name, phone, date, time, party size, note. Today’s date and 19:00 are filled in already. Best for sites where guests abandon long forms.
A website request lands in the Tables section by the same route as a phone booking or a QR-menu one — no second table and no separate list appears. Best for venues whose bookings are scattered across email and messengers.
Open the panel with the widget’s button, with a `window.CenalyBooking.open()` call from your own button or link (a date and time can be pre-filled), or from the “Book” item in the multi-button fan. Best when your site already has a “book” button of its own.
A send error appears right under the form and what the guest typed stays where it was — nothing has to be entered again. Best for sites with mobile traffic and shaky connections.
Colour, corner and caption come from tag attributes, the venue name in the panel header comes from your public profile, and the panel itself lives in a Shadow DOM — your CSS can’t break it and it can’t break your layout. Best for sites with a considered design.
If bookings are switched off for the location, the widget quietly stays down: a button with nothing behind it is worse than no button. Best for chains where some locations don’t take bookings.
On Tilda or WordPress the button appears with the same shared tag as the other widgets — no template edits needed.
Your designed “Book” button opens our panel with a single line of JavaScript — its styling stays exactly as it is.
The guest picks “Book” in your multi-button fan and gets the same form — one button stays in the corner of the site.
From a profile or a story you send people to the site, where booking opens in one tap and needs no back-and-forth in DMs.
A guest sends a request while the manager is busy on the floor; it waits in the Tables section rather than among missed calls.
You keep requests as a list per date and allocate tables yourself — a floor plan isn’t required to run the widget.
Colour, position and labels adapt to your site. The widget lives in a Shadow DOM — your styles don't break it, and it doesn't break yours.
On desktop
On mobile
On your side: The panel header shows the venue name from your public profile. The form does not check table availability: it is a request, and the decision stays yours.
On desktop
On mobile
On your side: The reservation lands in Tables through the same signal as a reservation from your storefront, and in the shared Leads stream. There is no separate widget inbox to log into.
Exact menu names and plan requirements, taken from each platform’s own help center.
Sites built with our website builder ship with the widgets already wired — nothing to paste.
Step-by-step guides per platform — in the help center →$9/mo
| Without the widget | With the widget | |
|---|---|---|
| How guests book | ✕ The guest has to call, and at peak hours nobody picks up straight away | ✓ They book from the site themselves: one form, no call and no sign-up |
| Price | ✕ Booking services usually charge for every guest you seat | ✓ A fixed add-on price that the number of bookings does not move |
| Where bookings live | ✕ Website bookings arrive by email and live in a table of their own | ✓ The request lands in the Tables section next to phone and QR-menu ones |
| After-hours requests | ✕ At night there is nobody to take the request, and it is recorded nowhere | ✓ The form takes requests outside opening hours; you handle them later |
| Confirmation | ✕ The guest has no idea whether they are expected | ✓ The screen says it plainly: the venue confirms the booking |
A table booking widget is a button and a short form on a venue’s website through which a guest sends a request for a table: the date, the time and the party size. The request lands in the Tables section next to bookings taken by phone and from the QR menu, so no second list and no double work appear.
You need it where the phone is the bottleneck: the evening rush, one manager covering both the floor and the phone, guests who would rather tap a button than talk. And where bookings currently go to services that charge for every guest you seat.
Here it is an add-on with a fixed price and no fee per guest: however many bookings come in, the bill stays the same. What you pay for is the ability to take requests on YOUR OWN site — including a site built by our site builder; bookings by phone, from the QR menu and from your Cenaly.com storefront stay free.
Website booking is pointless where guests are seated first-come-first-served and nobody holds a table an hour ahead anyway: the form would create a promise the floor can't keep. And it is not appointment booking — there the guest picks a specific specialist and service at an exact time; here they pick a date, an hour and a party size, and the host decides who sits where.
For the button and the form on your own website, from which requests go into the Tables section — including on a site built by our site builder. There is no fee per guest: the number of bookings doesn’t change the price, and paying yearly comes to 10 months instead of 12.
Into the Tables section of your dashboard — next to bookings taken by phone and from the QR menu. No separate table and no second list appears.
No. Bookings work without a table layout, as a list of requests per date. There is no table or room choice in the form at all: the guest gives a party size and you allocate the tables.
Once the venue confirms the booking. The widget says plainly “request sent, the venue will confirm”: it can see the request went through, but it won’t promise a table on your behalf.
Yes: a `window.CenalyBooking.open()` call opens the panel from any button or link of yours and can pre-fill the date and time. The same form opens from the “Book” item in the multi-button fan.
Yes, the form accepts one outside opening hours as long as bookings are enabled for the location: the request waits in the Tables section and the decision is yours. If the conversation needs a voice, put the callback widget next to it — it has a morning queue.
With the shared “My website” tag plus the Booking toggle. WordPress — footer.php or a plugin, Tilda — HTML code in head, Shopify — theme.liquid, Webflow — Custom code; Wix and custom-built sites are supported too.
The booking bundle is about 26 KB gzipped, loads with the async attribute and opens the form after the page has rendered. It pulls no extra files: floor plans, occupancy and photos never travel to the guest's browser — this is a short form and everything else is computed on our side. Button and form live in a Shadow DOM, so your styles can't break them.
A table booking is a request for seating that the floor allocates, and it does not calculate availability. An appointment picks a specialist and a specific free slot from a live schedule; that is the neighbouring free widget.
One loader — about 26 KB gzipped, with the async attribute: it reads which widgets you switched on and pulls only those, as separate files. A widget you left off is never downloaded, and the weight of each one you did switch on is stated on its own page.
No. Widgets render inside a Shadow DOM: your site's CSS doesn't affect them and theirs doesn't leak out.
It reads your page's `<html lang>` or a `data-lang` attribute on the tag. Built-in labels are translated into 45 languages — the guest chat covers the same list; your own texts you write in the admin in the languages you need.
In the cloud your account lives in: cenaly.com — AWS, cenaly.ru — Yandex Cloud in Russia. Requests, conversations and bookings stay within the brand's contour.
More — installation per platform, settings and troubleshooting — in the help center. Installation guide →
A storefront over your site or “add to cart” buttons next to your own products — commission-free
Free
Honest badges — “14 orders today”, “7 bookings this week” — from real data
Free
One floating button: WhatsApp, Telegram, call, chat — up to 12 channels
Free
Paste the shared “My website” tag and switch the widget on: the guest fills in one form, and the request arrives in your Tables section.
Start for freeNo fee per guest · yearly = 10 months instead of 12 · the confirmation is yours to give