Task · three widgets · booking and the badge are free
A gap on Wednesday at 14:30 is not a line in a book — it is money that will not arrive. This bundle shows free slots to people who are already on your site and books them there: a popup names the nearest hours, the form opens with the time already chosen, and an honest badge nearby shows that people really do come to you.
Appointments and the activity badge are free. Popups are a paid extension.
The guest sees a time, not a form: the choice starts with an hour, not a questionnaire.
«Free today: 14:30, 16:00, 18:30 — book». Those hours are not typed by hand: they are computed by the same slot engine as your appointment book, from your opening hours, staff schedules, service buffers and time already taken.
The booking form opens with that day and time already selected — and with the service and specialist too, if the campaign is tied to them. The guest confirms instead of assembling a booking from scratch.
Service → specialist → time → contacts. Redundant steps are skipped: a single service jumps straight to the time, a single eligible specialist is attached automatically. There is an «anyone available» option and an «⚡ Earliest» chip.
Not a «thank you» but a system answer: booking number, a Telegram reminders button, a calendar file and a «manage your booking» link. If the slot was taken meanwhile, the guest gets an honest «that slot is gone» and returns to the grid instead of quietly losing the booking.
A booking from the site is no different from one an administrator typed in.
In the specialist’s schedule and in the shared book — with the service, its duration and buffer, exactly as if it had been entered by hand. If you use deposits, the server computes the amount and shows it to the guest before they submit.
Online appointments →The shift sees the new booking in the team chat and can take it; you do not need a designated «who watches requests today».
Team chat →Schedule, audience, frequency caps and the pause after a guest closes it — in the same place as the rest of your proactive messages. Diagnostics name the exact reason a popup stayed silent.
Campaigns and popups →The «Widget on your site» panel shows the path from impression to submitted booking. That panel belongs to the paid «Appointment autopilot» extension — the widget and the book stay free.
Online appointments →Appointments are mandatory; the popup and the badge amplify them.
The place the guest actually books
A «service → specialist → day and hour → contacts» wizard on your page. Slots respect opening hours, staff schedules and time off, service buffers and time already booked; times are labelled with the venue time zone and are not converted to the guest’s. There is a waiting list for a fully booked day, guest memory, Telegram reminders and a calendar file.
Widget page →Shows the slots to people already on the site
A bar at the bottom with live hours: smart tags insert the nearest slot and the honest number of free ones. The horizon is today, tomorrow or 48 hours; from 1 to 6 pills. With no service, no specialist or no free hours the popup does not show at all — and the frequency cap is not spent.
Widget page →Shows that people really do come
Discreet badges with aggregates our backend computed: «7 new appointments in 7 days», average rating over 90 days. There is physically no free text field in this schema — there is nowhere to type an invented name or city.
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 popup on the services page: «free today at 14:30, 16:00» — and the guest books a specific specialist. The campaign can be tied to the service or the person whose day empties out most often.
Studio, repairs, tutoring, a service centre: services with duration and buffers in the catalogue, slots computed from your schedule and time off. A deposit filters out the «just looking» crowd.
Fittings, consultations, on-site service and repairs are services in the catalogue too. The guest sees the nearest slot without calling the shop.
Masterclasses and tastings are entered as services and booked the same way. Tables, though, are not computed by this bundle — that is the neighbouring task about reservations.
Appointments and the honest badge are free; only popups are paid.
From the same public data of your venue as the booking form: opening hours and time zone, the service catalogue, staff schedules and time already taken. One and the same engine computes them — there is no second version of the truth about free time.
The widget waits for the server instead of calling a booking successful the moment it was sent. If the slot was taken, the guest sees «that slot is gone», the availability board is re-read and they return to the grid.
No. Booking works on your site; a separate page is only for the guest — to manage the booking after it is confirmed.
The guest joins a waiting list with their e-mail and hears from you when time frees up. The widget states plainly that the request holds nothing.
A campaign has a schedule, an audience, frequency caps and a pause after the guest closes it. And, most importantly, with no free slots it does not show at all.
Yes. The campaign picks a specific service and specialist from your real catalogue and roster; leave them empty and it takes the first service and anyone available.
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 →
Live slots, a booking in two taps and honest numbers next to them.
Start freeNo card. Appointments and the badge are free; popups are a catalogue extension.