M cenaly.ru
🧩 Widgets for Your Website

☎️ Callback

A “call me back” form on your site: the system dials the guest through your own PBX, retries and queues night requests for the morning

Documentation

Callback

The Callback widget puts a handset button on your site. The guest clicks it and leaves their number — and from there the system decides on its own how to reach them: if you have your own telephony configured, the PBX dials the guest and connects them to the business; if not, it records a “call me back” request and notifies you about it.

The widget is free: no separate add-on to buy. You only pay for your own telephony — minutes run through your PBX and your carrier, and we charge nothing for them.

Where to turn it on: Admin panel → Marketing → “My Website” → the “Callback” card. The toggle on the card turns the widget on, the gear icon opens the settings. If callback is your main scenario, click “Move to sidebar” on the card: the widget will get its own menu item.


Installing it on your site#

The widget has no code of its own — the shared tag from the “My Website” section does the job:

<script src="https://cdn.cenaly.ru/site/v1.js" data-domain="YOUR-DOMAIN" async></script>

Insert it once in <head> or right before </body>, and from there the set of active widgets is controlled by toggles in the admin panel. Detailed platform instructions (HTML, Google Tag Manager, WordPress, Tilda/Wix, Shopify, Webflow) are in the My Website article, in the “Installing on popular platforms” section.

If you only need this widget and nothing else, the “Advanced: a separate tag per widget” block has a ready-made standalone line, callback-widget/v1.js. Both approaches work; the shared tag is more convenient — turning on the next widget won't require editing the site.

What the installation check sees, and what it doesn't. The “Check installation” button opens your page and reads its source HTML — what the server actually returned. It distinguishes four outcomes: shared loader found, only separate widget tags found, another location's code found (someone else's data-domain), or no code at all.

⚠️ If the tag is inserted in the browser by Google Tag Manager or another script, the check won't see it — it genuinely isn't in the source HTML. That's not an installation error: open the site and check with your own eyes whether the button appears.


Configuring the widget#

Everything is configured in the gear-icon window and saves itself — there is no separate “Save” button here.

Appearance#

  • button colour;
  • screen corner — bottom right or bottom left;
  • button label: a separate line for each language of your site. The widget picks up the page's language and shows the label in it; if there's no label for that language, the handset icon remains on its own.

When to show it#

The “When to show it” block is shared by the three floating buttons — callback, multibutton, and Live Showcase — so the syntax is the same everywhere.

Condition How it's set
Pages Address masks: “show only on…” and “except…”. * — any fragment: /catalog/*, *checkout*. Up to 20 masks in each list. An empty “only on” list = all pages; the exceptions list overrides the allow list
Delay From 0 to 600 seconds after the page loads
Device All · desktop only · mobile only (the “mobile” threshold is a screen width of 480 px)
Schedule Custom windows — up to 14 windows (“day of week + from… to…”); a window whose start time is later than its end time is treated as crossing midnight, and equal start/end times mean round the clock. Or the location's opening hours — the same schedule with exceptions that you maintain on the location card

Conditions are recalculated not only at page load: the widget tracks in-site navigation, phone rotation, and checks the schedule once a minute — the button appears and disappears without a page reload.

⚠️ Hours are counted in the location's time zone. It's taken from the location card; the field is optional, and if no time zone is set, the windows are counted by the visitor's own clock. The settings panel says so directly with a yellow notice.

⚠️ If “location's opening hours” is selected but the schedule on the location card is empty, the schedule doesn't restrict anything and the button stays visible. This is intentional: a callback button that silently goes dark means requests silently stop coming in. An empty list of custom windows, however, still means “never show” — you see this list in the same form and can fix it.

Form#

“At a convenient time” — let the guest choose not “call me now” but a time that suits them, written in their own words (“today after 18:00”). Such a request never triggers auto-dial — a human handles it.

Dialing#

Setting Values Default
Order “Guest first” — we dial the guest and connect them to the business. “Manager first” — we first ring the manager's extension, and only once they say “hello” do we start dialing the guest Guest first
Manager's extension The internal number for “manager first” order. An empty field — the mode quietly falls back to “guest first”: a promised call matters more than the order
Retries Total attempts 1–5, interval between them 1–120 minutes Off; when enabled — 3 attempts, 5-minute interval
Night queue Outside the schedule window the button doesn't hide: the form stays and promises a call in the morning. You set the morning call-back hour, counted in the location's time zone Off; default hour — 09:00
Missed-call notifications An email to the owner and/or a card in the team chat Email on, team chat card off

⚠️ The night queue only makes sense together with an enabled display schedule: without a schedule, “outside business hours” never happens. The settings panel says so out loud.


What happens after the guest leaves a number#

The guest sees an honest outcome, not the same “request received” every time:

What the guest saw What happened
“Already calling you — keep your phone handy” Your PBX accepted the dial command and is calling the guest; if they answer, they enter the normal inbound scenario — agents, greeting, rules
“Couldn't reach you yet — we'll try again at 14:20” The call didn't go through this time, retries are on: the queue will dial again at the stated time
“Request received — we'll call at 09:00” Outside business hours, the night queue is on: the number is waiting for the morning call-back
“Request received — we'll call you back” There's no live channel (or the guest chose “at a convenient time”) — a “call me back” request was recorded

Where the data goes. The request arrives in the “Requests” section — the shared inbound stream together with popup leads, storefront forms, bookings, and appointments. The same list is also visible as the “Callbacks” tab in the “Customers” section: number, name, time, a handled mark, and a dial button.

Who gets notified. The owner gets an email for every new request. If the queue exhausts all dial attempts and the guest still couldn't be reached, a separate missed-call notification goes out — by email and, if enabled, as a card in the team chat; the request still stays in the list either way, so the lead isn't lost.

A live call is a regular call on your PBX: it lands in the “Calls” section along with the rest, with a recording and breakdown if recording is enabled.


Limits#

  • The live call is placed by YOUR PBX, not by us: you need a connected bridge on a PC or a dedicated telephony machine, online, with outgoing rules configured. No PBX of your own, or it's offline — the widget works as a request form: an email to the owner and a line in the list. The button still stays on the site and no lead is lost.
  • “Already calling” means the PBX accepted the dial command, not that the guest picked up. The widget can't see whether the conversation actually happened — that's why retries and missed-call notifications exist.
  • We don't call at night. Outside the schedule window, without the night queue there's simply no button; with the queue, the form is there, but the call goes out in the morning. A call at 3 a.m. “because the guest left a number” costs more than any lead is worth.
  • “At a convenient time” is always a request. The guest writes the wish in their own words, and a human handles it: auto-dial never runs for such a request.
  • Anti-spam is strict and can't be turned off: its own hourly counter per “location + number” pair, restrictions by the visitor's address, a ban on expensive destinations, and a number-length check against your own outgoing limits. Redialing someone else's number repeatedly isn't a lead anymore, it's harassment.
  • There's no “press 1” confirmation for the manager. In “manager first” mode, the connection starts the moment the handset is picked up.
  • Display rules only control the widget's own button. If callback is placed as an item in multibutton, the guest will open the form from there regardless: an explicit click overrides the display rules.
  • If the site's public profile fails to load (a network drop, the page's own security policy), the button is shown always — display rules don't apply. A button can't be hidden because of a network glitch: nobody would notice that except the requests that stopped coming in.

Troubleshooting#

There's no button on the site at all. Go through the list top to bottom:

  1. Tag not found. Click “Check installation”. “No widget code” — the tag isn't inserted, or it's not inserted on every template page; “code for another location” — the tag has someone else's data-domain (a common mistake with multiple locations). If the tag is inserted by GTM, the check won't see it — look at the site yourself.
  2. Changes haven't landed yet. Widget files are served through a CDN with a 5-minute cache: after flipping the toggle, wait a few minutes and reload the page with the cache cleared.
  3. The widget is off — the toggle on the card in the “My Website” section.
  4. Display rules filtered out the page: check the masks (the exceptions list overrides the allow list), the device (a “mobile only” button won't show on a desktop), and the delay — at 600 seconds the button arrives ten minutes in.
  5. The schedule is closed. You're currently outside the window — there's no button. Turn on the night queue: then the form stays up round the clock and honestly promises a morning call.
  6. The location has no time zone set. Then the schedule windows are counted by the visitor's clock, not the business's — a guest in another time zone will see the button at a different time than you expected. The time zone is set on the location card; the settings panel warns about this with a yellow notice.

There's a button, but no requests. Check in the settings that the widget is enabled for the exact location whose data-domain is in the tag. And check the “Requests” section: the email is a best-effort notification, and the list is the source of truth.

The guest left a number, but there was no call.

  • Your PBX is offline or outgoing calls aren't configured — the guest got “request received”, look for them in the list;
  • the number fell under a direction ban or the hourly retry limit;
  • turn on retries and missed-call notifications — then the system will redial on its own, and you'll learn about the failure by email or a card in the team chat.

The button sits on top of another element. Change the screen corner in the appearance settings. If several of our buttons are crowding the same corner, turn on multibutton — it will gather them into one fan menu.


FAQ#

How much does the widget and the call minutes cost?#

The widget itself is free — no separate add-on to buy. Minutes run through your own telephony and your own carrier — we charge nothing for the call and don't sell minute packages.

What happens if I don't have telephony yet?#

The widget keeps working as a “call me back” form: the guest leaves a number, you get an email and a line in the “Requests” section. There's no auto-dial — you call back yourself.

Will the guest see the button at night?#

By default, no: outside the schedule window there's no button. If you turn on the night queue, the button stays up round the clock, and the form honestly says “it's currently outside business hours — we'll call back from 09:00” and queues the number for the morning.

Can I show the button only on certain pages?#

Yes, with address masks: up to 20 masks in the “show only on” list and up to 20 in the exceptions list. Exceptions override: a page caught in both lists won't get the button.

Who gets called first — me or the guest?#

Whatever you configure. By default the guest is dialed first, and whoever answers enters the normal inbound scenario. In “manager first” mode, the specified extension is rung first, and only once there's a live “hello” does dialing the guest begin — the guest is called by someone already ready to talk.

What counts as a missed call, and how many times will we call back?#

A missed call is exhausted attempts: 1 to 5 total (default 3), with an interval of 1 to 120 minutes (default 5). After the last attempt a notification goes out, and the request stays in the list.

Will the widget slow down the site or break the layout?#

The loader connects asynchronously and doesn't block page rendering, and the widget itself is drawn in an isolated container (Shadow DOM) — your site's styles and the widget's styles don't affect each other.

Where are guest phone numbers stored?#

In your brand's cloud: AWS for cenaly.com, Yandex Cloud for cenaly.ru. The request lives in your admin panel; phone numbers never end up in a public site file.