Task · three widgets · two of them free
The site exists, but reservations still arrive by phone and in the evening nobody can pick up. This bundle fixes that without moving the site: a guest books a table right on your page, the one who could not get through leaves a number, and those who prefer messengers write from a single button. Everything lands in your Cenaly.com back office, not in somebody’s inbox.
Callback and the messenger button are free. Table booking is a paid extension.
The guest never leaves your page and registers nothing.
Label, colour and corner are yours to set, so the button looks like part of the site rather than an add-on. It can also be opened from your own «Book a table» button in the header.
Name, phone, date, time, party size (1 to 50) and a comment. No steps, no jumping to another site: the panel opens over your page and carries your venue name in its header.
«Request sent — the venue will confirm your reservation.» The widget never draws a confirmed table: you confirm it, and the guest knows that from the start.
They tap the handset and hear from the server what will happen: «calling you now», «we will try again at 14:20», «we will call at 09:00», «we will call you back». The time is a number, in the venue’s time zone. Prefer a messenger? It opens from the same button.
The request does not settle in an inbox — it lands in the section where the shift works with it.
With time, party size, phone and comment — the same path a reservation from our storefront takes. From there it is an ordinary reservation: confirm, seat, serve.
Reservations and tables →The whole shift sees it in the team chat; «👤 Take it» shows colleagues who already picked it up without locking anyone out.
Team chat →With a source passport: which page the person came from, which ad, which kind of device. Groups by source build themselves.
Requests →Impressions, opens and submitted forms are a separate data source next to orders, reservations and calls.
Dashboard →In this order: first what the guest came for, then the fallback doors.
The main door: a booking form right on your page
A floating button and a single-screen form. It only shows up when reservations are enabled for the venue. It also opens programmatically — from your header button or from the messenger button — and can be pre-filled with a date and time (say, from your «private events» page). The server does not wait for a confirmation: this is a request, and the decision stays with the venue.
Widget page →For people who would rather talk than type
The guest leaves a number and the server, not the form, names the outcome: with a live outgoing channel the PBX dials right away, without one the request waits for you. There are retries, an overnight queue for the morning, page masks (up to 20), a display delay from 0 to 600 seconds, and a schedule tied to your opening hours.
Widget page →One button instead of a pile of icons
A fan of channels: WhatsApp, Telegram, Viber, VK, Instagram, Facebook, TikTok, YouTube, phone, e-mail, a custom link — up to 12. The «Book a table» item opens the very same booking form. It hides the buttons of neighbouring widgets itself, so the corner stays clean.
Widget page →A Cenaly.com account and your website domain in the «My website» section. The site stays yours — we do not move or copy it.
One line before </body>: into your WordPress theme, the HTML block on Tilda or Wix, theme.liquid on Shopify. The tag is shared by all widgets — you will not touch the code again.
Every widget is a toggle with its own settings. Changes reach the site without a developer; the CDN cache is five minutes.
The tag itself
<script src="https://cdn.cenaly.com/site/v1.js" data-domain="your-site.com" async></script> One tag for every widget. `data-domain` is your site, everything else lives in the admin panel.
A booking button on the home and menu pages turns evening seating into requests instead of phone calls. The messenger button collects WhatsApp and Telegram into one corner — on a phone that is one button instead of three.
Groups of up to 50 book a table themselves, and the comment («birthday, we need a sofa») arrives with the request. The callback picks up whoever wants to discuss the deposit out loud.
The tag goes on the hotel site: a guest books dinner without leaving the room-booking page, and the request lands in the same back office where the restaurant already lives.
If what you sell is a specialist’s slot rather than a table, the job is a different one — it is about empty slots in the schedule, and it has its own bundle.
Two of the three widgets are free forever; only table booking is paid.
No. One line goes into the HTML block on Tilda, the theme template on WordPress or theme.liquid on Shopify — that covers all three widgets at once.
In the «Tables» section of your back office — the same path a reservation from our storefront takes — and as a card in the «Needs a decision» queue of the team chat, so the whole shift sees it.
No: the widget says «Request sent — the venue will confirm your reservation». We deliberately do not show a confirmation that never happened.
No. It is a request form: it does not compute occupancy and does not choose a table. Free slots are computed by the neighbouring bundle — the one about service appointments.
Not necessarily. Without it the guest leaves a number and sees «we will call you back». With an outgoing channel connected the PBX dials immediately and the guest sees «calling you now».
One. The messenger button hides its neighbours and collects their actions into its own fan; if you would rather keep separate buttons, one tag attribute turns that off.
No. The widgets live on your site: one tag before `</body>`, and everything else is toggles in the admin panel. Your layout, hosting and domain stay as they are.
The loader is one small `async` script and never blocks rendering. Only the widgets you enabled are downloaded, and the heavy parts wait for the visitor: the back-in-stock form weighs 13.7 KB and loads after the click, while the page carries an 889-byte launcher until then.
No. Widgets render inside Shadow DOM: your site styles do not reach them, their styles do not leak out.
In the cloud your account lives in: cenaly.com — AWS, cenaly.ru — Yandex Cloud in Russia. Requests, conversations, reservations and appointments never leave the brand perimeter.
Platform-by-platform installation, settings and troubleshooting are in the docs. Setup guide in the docs →
One tag, three widgets, requests in the back office your shift already uses.
Start freeNo card. Callback and the messenger button are free; booking is a catalogue extension.