Online ordering on your own site
The Online ordering widget adds order taking to the site you already have. Nothing has to be migrated or re-laid-out: the widget reads your site's pages, places “Add to cart” buttons on them and runs the cart and checkout on top of your markup.
Where: Marketing → “My Website” → “Online ordering” card → gear icon. The install code is shared by all widgets — see My Website.
Four modes#
| Mode | What the visitor sees | When to choose it |
|---|---|---|
| Storefront | An “Order” button; clicking it opens your storefront with the menu and cart over the page | Business-card site, landing page or blog — no products on the pages |
| Overlay | Our “Add to cart” buttons right inside your markup — on the product page and in the catalogue — with a cart in the corner of the screen | The site already has a product catalogue but no ordering (or an awkward one) |
| Replace buttons | The same, plus the site's native “buy” buttons and cart are hidden | You want every order to go only through us |
| Full takeover | The site looks untouched: the buttons stay native, but pressing one sends the item to our cart, going to the site's cart opens ours, and the counters and totals show our numbers | The storefront is already well designed — you don't want to change how it looks, but the orders and prices must be ours |
Scanning the site#
Every mode except “Storefront” works from a site map: where on your pages the product title, price, image, native buy button and native cart are.
The map is built by the scanner: enter the address and press “Scan site” — usually 1–3 minutes. Inside:
- Platform presets — a ready-made set of selectors exists for eight platforms: WooCommerce, Shopify, Magento, PrestaShop, Bitrix, InSales, Tilda, OpenCart. The scanner also recognises Ecwid, Squarespace and Wix by fingerprint, but there is no preset for them — the map is built by AI parsing;
- AI parsing of the markup — for custom-built sites and unusual themes;
- Verification of every selector found against real pages; the data is cross-checked with the product's microdata. An unverified selector never enters the map — fewer buttons beat a button in the wrong place.
The result shows: the detected platform, the number of pages scanned, a sample recognised product, and separately the product page and the catalogue cards. The map is applied with a button and saved together with the widget settings. The site changed — just rescan.
Placement and appearance#
Configured on mock-ups with a live preview — a typical product page and a catalogue:
- Product page button: under the price, next to the site's native button, floating at the bottom of the screen, or off (the main scenario for “full takeover” — there is no button of ours, the guest presses the native one);
- Catalogue card button: over the card, under the card, or off;
- Cart button: any of the four corners of the screen;
- Colour of the buttons and label (“Add to cart”, “Order”, your own) — the label can be set separately for every language of your site.
Your own prices#
A separate toggle: the widget recalculates your site's price into its own and shows it to the guest — on the product page, in the catalogue and in the cart.
- A base rule for all products: a percentage, a currency surcharge, “not lower / not higher” limits and rounding (to a whole number, a …9 tail, .99 cents, round tens …0, multiples of 10/50/100).
- Per-product overrides by page address, title or SKU: its own price, its own rule, a different name in the cart, or “withdrawn from sale” — then no button is placed.
- Display options: the old price struck through next to the new one, a caption such as “sale price”, your own currency label, extra places with prices (a sticky bar, a “similar products” block). Redrawing prices right inside the site's markup can be switched off: the guest sees the site's price, and yours goes into the cart.
- The dashboard has a “before → after” preview on a sample price from your site.
⚠️ The override is visual: your site's back end knows nothing about the new price. That is why your own prices make sense together with order interception — otherwise a guest who presses a surviving native button will check out at the old price, bypassing you. In “Full takeover” mode your own prices are on by default, and the admin warns if you enable them without interception.
What happens after an order#
The guest puts items into the cart, opens it and checks out — name, phone, delivery or pickup with an address, a comment. The order arrives in the dashboard's “Orders” section alongside orders from the storefront, the POS and aggregators: the same statuses, notifications, printing and hand-off to the kitchen. There is no separate “widget inbox”. Every order line comes with a link to the page of your site it was added from — the operator sees exactly what was ordered.
Everything else about online ordering is configured in the same place, the widget's modal: it is an accordion with the sections “Widget on your site”, “Order intake”, “Delivery and pickup”, “Payment”, “Checkout” and “Receipt fiscalisation” — the same forms as in the corresponding dashboard sections, gathered in one place.
The “Notify when back in stock” button#
A second, separate tag of the same widget — for a sold-out product page on your site. The guest presses the button, leaves an email, confirms it via the link in the message and receives one email when the item is back in stock; the confirmation message has “decline” next to “confirm”. Notifications are sent by the same mechanism as the “notify me” subscription on our storefront — no second one is created.
How to connect it: in the online ordering settings window open the “🔔 Notify when back in stock” card, pick the product and, if any, the variant from your published catalogue — the generator assembles the code. Place a button with the attribute data-cenaly-stock="<product>" on the product page (a ready example is in the same card) and insert the stock/v1.js tag once. The launcher weighs under a kilobyte and does exactly one thing — waits for the click; the subscription form, dictionaries and sending arrive as a separate file only after the guest acts.
What matters:
- The product is linked by hand. We do not match a third-party catalogue and do not read stock levels from a third-party page: “back in stock” means availability in your catalogue with us, the same thing our storefront sees. A product that is not in the location's published catalogue is not accepted by the button.
- The subscription is confirmed by email (double opt-in): until the link is clicked, no back-in-stock messages are sent.
- It is not the unified tag. The “My Website” unified loader does not start the “Notify when back in stock” button — it has its own tag and its own markup on the page, because it stands only where you put it.
Limitations#
- The scanner reads server-side HTML. If the catalogue is drawn entirely by JavaScript, product pages may not be found — then the “Storefront” mode works.
- Items in the cart are taken from your site's pages, not from the dashboard catalogue: the widget reads the title and price from the page itself (and recalculates them by your price rule if needed). You don't have to move the catalogue to us for that — but such orders don't deduct stock in the dashboard either.
- Payment in the widget's cart is on delivery. Online card payment works on our storefront; if you need it, use the “Storefront” mode.
- In “Replace buttons” mode the native buttons are hidden visually; if the site has another path to checkout (for example, a direct link to the site's cart), you need to remove it yourself — or switch to “Full takeover”, which takes such transitions over.
Troubleshooting#
There are no “Add to cart” buttons on the site.
- Tag not found — press “Check installation” in the “My Website” section. “No code” — the tag is not inserted or is missing from some template pages; “code of another location” — the tag carries someone else's
data-domain. If the tag is inserted by Google Tag Manager, the check will not see it — look at the site yourself. - Changes haven't arrived — widget files are served through a CDN with a 5-minute cache: wait and reload the page with the cache cleared.
- The site map is not built or not applied — in every mode except “Storefront” the buttons are placed from the map: scan the site and apply the result.
- The scanner found no product pages — it reads server-side HTML; if the catalogue is drawn entirely by JavaScript, switch to the “Storefront” mode.
- The product page button is off in the placement settings — that is by design in the “full takeover” scenario, where the guest presses the site's native button.
The cart button disappeared. Check the selected screen corner in the placement settings; if the multi-button is on and its fan has an “Order” item, the widget's own button is hidden on purpose.
Buttons landed in the wrong place or vanished after a site update. The markup changed — press “Rescan”: the placement settings are kept.
Prices on the page didn't change. Redrawing prices right inside the site's markup can be disabled by a setting — then the guest sees the site's price, and yours goes into the cart. Also check that the price rule is on and that this product has no per-product override.
A guest checked out on the site, but there's no order in the dashboard. Most likely the order bypassed us — through a surviving native button or a direct link to the site's cart. This is fixed by the “Replace buttons” or “Full takeover” mode.
The order has the wrong price. The price override is visual: your site's back end knows nothing about it. Your own prices should only be enabled together with order interception — otherwise some orders will be checked out at the old price, bypassing you.
Related topics#
- My Website — install code and the other widgets
- Orders — what happens to the order next
- Online store — if you need a full storefront
FAQ#
Do I have to move my catalogue to you? No. The widget works with the products right on your site's pages — it reads titles and prices from there. A catalogue in the dashboard is needed if you want inventory, per-item analytics and our storefront: you can move it by importing from the site address or from a file — see AI catalogue import and Online store.
What if the site changes? Press “Rescan” — the map is rebuilt and your placement settings are kept.
Will the widget break my layout? Buttons are inserted into the places found in your own markup and their appearance is configurable; the cart and checkout open on top of the page and do not touch your layout.