# cenaly.com — full documentation
> cenaly.com is a business automation platform (SaaS) for small businesses: restaurants, cafes and bars, shops and online stores, beauty salons and other appointment-based services, and hotels. It covers QR-code menus and online storefronts in 45 languages, online ordering (dine-in, delivery, pickup, WhatsApp, Telegram), POS and kitchen display (KDS), floor plan with table reservations, appointment book, hotel PMS, own-delivery courier screen, business phone system (PBX) with call log, customer directory, reviews and newsletters, staff roles and shifts, inventory with recipes and AI invoice recognition, finance dashboards, website widgets (chat, callback, booking, ordering, cookie banner), AI photo generation and a Guest API and an MCP server for AI agents. This file contains every documentation article from https://cenaly.com/docs in Markdown. Articles without an English translation are included in Russian.
---
# Getting started with Cenaly
Cenaly combines sales, customer service, staff, stock, finances and communication.
Your business type selects the initial workflow and terminology: restaurant,
store, salon, hotel, pickup point, service business, school, website or widgets.
## 1. Create your account and check the location
Open the administration panel from the website you registered on. Follow
[Account and sign-in](/en/docs/account), then check the location's name,
business type, country, currency, time zone and working hours.
A location can be a shop, branch, hotel, school or website. For a mixed business,
choose the main operating model and add the required modules. Availability also
depends on country, service, subscription and employee permissions.
## 2. Follow the checklist for your business
[First day: choose your business type](/en/docs/first-day) is the starting point.
| Business | First working scenario |
|---|---|
| Restaurant, cafe, bar, fast food or canteen | Menu, order, preparation and payment |
| Retail or online store | Product, stock, sale, delivery or collection |
| Salon or appointment services | Service, specialist, resource, time slot and visit |
| Hotel | Room, rate, reservation, check-in and guest folio |
| Pickup point | Carrier, parcel, storage cell and handover |
| Professional services | Enquiry, customer, proposal, invoice and payment |
| School | Course, group, student, attendance and family account; dedicated modules are being introduced |
| Company website, blog, widgets or chat | Page, enquiry form or conversation with a visitor |
## 3. Prepare your data
Import an existing catalog or start with a few representative items. Products
need prices and stock, services need durations and resource requirements, hotel
rooms need capacity and rates, and school courses need groups and pricing rules.
Use [Catalog import](/en/docs/catalog-import) or [Switch to us](/en/docs/migrate)
for existing data. Review the import preview and translations before publishing.
Add employees and permissions through [Staff](/en/docs/staff).
## 4. Connect the customer entry point
Share your storefront link or QR code, publish a site, or add widgets to an
existing site. A restaurant may use table QR codes; a hotel uses room QR codes;
a salon shares a booking link. They serve different workflows.
See [QR codes](/en/docs/device-codes), [My website](/en/docs/site-widgets)
and [Custom domain](/en/docs/custom-domain).
## 5. Complete a test transaction
Check the whole workflow, including the employee's view and the customer's
confirmation. Verify prices, availability, the location's time zone, payment
status and the resulting record. Test cancellation or refund where relevant.
Online payment requires a supported provider connected to your location.
Creating an order or invoice does not mean it has been paid.
See [Payments](/en/docs/payments) and the relevant business checklist.
## Add modules as work grows
[App store](/en/docs/app-store) lists additional sections.
[Finance](/en/docs/finance), [Documents](/en/docs/documents),
[Telephony](/en/docs/telephony) and [Knowledge base](/en/docs/knowledge-base)
support several business types. Configure the ones needed for your workflow.
Schools, group classes, advanced hotel workflows and communication automation
are expanding. The [First day guide](/en/docs/first-day) distinguishes current
workflows from additions being introduced. Check [Subscription](/en/docs/subscription)
for the current plan and [Support](/en/docs/support) for help.
---
# QR Menu — Complete Guide
## What is a QR menu?
A QR menu is a digital version of your venue's menu, available to guests via a QR code. The guest scans the code with their phone camera and instantly sees the full menu with photos, descriptions, prices, and translations into their language.
### Advantages over a paper menu
| | Paper menu | Cenaly QR menu |
|---|---|---|
| Price updates | Reprint (1–3 days, from €50) | Instant, free |
| Languages | 1–2, manual translation | 45 languages, auto-translation |
| Photos | Expensive printing | Unlimited, free |
| Hygiene | Physical contact | Contactless |
| Allergens | Small print | Interactive filtering |
| Analytics | Not possible | Popularity, views |
| Annual cost | €200–500+ | From €0 |
---
## Menu structure
```
Location (your venue)
├── Category: Breakfasts
│ ├── Item: Fried eggs with bacon
│ ├── Item: Pancakes with berries
│ └── Item: Granola with yogurt
├── Category: Salads
│ ├── Item: Caesar
│ └── Item: Greek salad
├── Category: Mains
│ └── ...
├── Category: Desserts
│ └── ...
└── Category: Drinks
├── Subcategory: Hot drinks
├── Subcategory: Cold drinks
└── Subcategory: Alcoholic drinks
```
---
## Category management
### Creating a category
1. Go to **Menu** → **+ Add category**
2. Enter the name in the primary language
3. Upload a category photo (recommended 800×600px)
4. Set the display order (drag & drop)
### Editing
- Click the category name to edit
- Translate names manually or use auto-translation
- Changes are saved automatically
### Deleting
- Click the 🗑 icon — the category and all its items will be deleted
- This action is irreversible — confirm deletion in the dialog
---
## Menu item management
### Adding an item
1. Inside a category, click **+ Add item**
2. Fill in the fields:
| Field | Required | Description |
|------|-------------|----------|
| Name | ✅ | Dish/drink name |
| Description | ❌ | Ingredients, preparation method, weight |
| Price | ✅ | Price in the venue's currency |
| Photo | ❌ | Dish photo (recommended) |
| Allergens | ❌ | Allergen labeling |
| Variants | ❌ | Sizes/portions with different prices |
| Add-ons | ❌ | Additional ingredients |
| Tax group | ❌ | Which rate the storefront uses for this item: "Standard", a group from your locations' tax tables, or your own — the "+ New tax group…" item asks for the name, the rate (or an exemption) and the locations and creates the group in the table (rates are set and edited in **Commerce → Taxes**) |
### Dish photos
- **Format:** JPEG, PNG, WebP, HEIC/HEIF (iPhone photos), AVIF, GIF, BMP, TIFF, SVG, ICO; file size up to 10 MB
- **Recommended size:** 800×600px or larger
- **AI enhancement:** the system automatically optimizes the photo (brightness, contrast, cropping)
- **AI generation:** if there's no photo, AI can generate an image based on the dish name
### Variants (sizes/portions)
Let guests choose a size or portion:
- Small portion — 200g — ₽350
- Medium portion — 350g — ₽500
- Large portion — 500g — ₽700
### Add-ons
Additional ingredients or options:
- Extra cheese — +₽80
- Spicy sauce — +₽50
- Gluten-free — +₽100
---
## Multilingual support
### How auto-translation works
1. You enter the name and description in the **primary language**
2. The system automatically translates into all **selected languages** (up to 45)
3. You can **edit** any translation manually
4. Manual edits take priority over auto-translation
### Supported languages
English, Russian, Georgian, German, French, Spanish, Italian, Portuguese, Dutch, Polish, Turkish, Arabic, Chinese, Japanese, Korean, Hindi, Thai, Vietnamese, Indonesian, Malay, Filipino, Ukrainian, Hebrew, Persian, Swahili, Amharic, Nepali.
### How is the guest's language determined?
1. The system checks the guest's browser language
2. If that language is enabled in the menu — it's shown in that language
3. If not — it's shown in the venue's primary language
4. The guest can switch the language manually
---
## Design and branding
### Brand identity
- **Logo** — displayed in the menu header
- **Cover** — banner at the top of the menu
- **Colors** — the system adapts to your brand colors
### Venue information
The menu automatically displays:
- Venue name
- Address
- Opening hours (if provided)
- Contact details
---
## QR code
### Generation
1. Go to the **QR codes** section, **Guests / menu** tab
2. Configure:
- QR code color
- Logo in the center
- Dot style (square/rounded)
3. Download in PNG or SVG format
### Where to place the QR code
- **On tables** — stickers, table tents, inserts under glass
- **At the entrance** — near the host stand
- **On business cards** — for promotional purposes
- **In Instagram/TikTok** — link to your menu
- **On delivery packaging** — for repeat orders
### NFC stands
In addition to QR codes, Cenaly supports NFC — a guest can tap their phone on a stand for instant access to the menu without scanning.
---
## Updating the menu
- All changes (prices, descriptions, photos) **take effect instantly**
- No need to reprint QR codes — they remain the same
- Change history is saved
---
## Content tips
1. **Add photos** — items with photos are viewed 3× more often
2. **Write descriptions** — ingredients, weight, and preparation method help guests choose
3. **Specify allergens** — this is an EU requirement and care for guests
4. **Update prices** — instant updates without reprinting
5. **Use categories** — a logical structure simplifies navigation
---
## Stop list (out-of-stock items)
If a dish or ingredient runs out, you can instantly hide the item from guests:
1. In **Menu**, find the item
2. Toggle **Available** → the item becomes inactive
3. Guests **will not see** this item in the digital menu
4. When the ingredient is back — turn it on again
### Bulk stop list
- Select multiple items → **Actions** → **Hide selected**
- Morning stop list: the manager checks availability → disables unavailable items
- KDS automatically removes hidden items from the kitchen screen
### Notifications
- Staff receive a push notification when an item is added to the stop list
- If someone tries to order a hidden item (cache) — the system will show the message "Dish temporarily unavailable"
---
## Menu schedule (breakfast / lunch / dinner)
Different menus for different times of day:
### Setup
1. **Menu** → **Schedule** → **+ Add schedule**
2. Set the time: breakfast (07:00–11:00), lunch (11:00–16:00), dinner (16:00–23:00)
3. Assign categories/items to each schedule
### How it works
- During the specified time, guests see **only** items from the current schedule
- Outside the schedule — the full menu is shown
- You can create **special menus**: business lunch, brunch, bar menu, kids' menu
### Holiday and seasonal menus
- Create menus for holidays (New Year, February 14, Easter)
- Set active dates
- The menu will automatically turn on/off
---
## Combo sets
A combo set is a menu item that bundles several dishes under one price: "Burger + fries + drink", a business lunch, a kids' set.
The guest sees the combo as **one item** with a single name, description, photo and price, and adds it in one tap. The [kitchen screen (KDS)](/en/docs/kds) **expands the set** into its dishes, so cooks see each element on its own line at the right station; with [inventory](/en/docs/inventory) connected, the ingredients of every dish in the set are written off from their own recipes.
### Combo slots — "build your own lunch"
Besides a fixed-composition set there are **combo slots**: the guest picks one option from each slot. The classic business lunch — "Soup: borscht / cream soup", "Main: cutlet / fish", "Drink: tea / compote".
| What you configure | How it works |
|---|---|
| Slot | a name ("Drink", "Soup") with translations |
| Slot options | menu dishes the guest chooses from |
| Option surcharge | an optional add-on to the combo price (e.g. +2 for fresh juice) |
| Required | whether a choice in this slot is mandatory |
| Default option | pre-selected, so the guest can just add the set |
The final price = combo price + surcharges for the chosen options.
The guest's choice travels into the order line, so the **kitchen sees the actual dishes** and stock is written off for exactly those, not for an "average lunch".
### Combo availability window
If a set is only relevant at certain hours — a lunch set from 12:00 to 15:00 — give it an availability schedule. See [Schedule and Happy Hour](/en/docs/scheduled-menus).
---
## AI menu concierge
Guests don't always know what they want, and scrolling 120 items takes a while. The **AI concierge** takes a request in plain words — "something light, no onions, under 30 GEL" — and answers with **two or three specific dishes** from your menu, with prices and descriptions.
The concierge works **only from your catalogue**: it does not invent dishes and does not suggest anything that is not on the menu. A suggested dish can be added to the cart straight from the answer.
---
## Family cart
When several people share a table, everyone can add dishes from their own phone while the order stays **one**.
How it works: one guest (the "host") shows the QR code of their order, the others scan it and join. Each joiner sees and edits **their own part**, the host sees the whole order with a note of who added what. The hierarchy is strictly two levels, and up to ten people can join one order.
For the venue this beats several separate orders: one kitchen ticket, one bill, one round of serving.
---
## Guest dietary profile
In the menu filters the guest marks their dietary tags (vegetarian, halal, gluten-free…) and the **allergens to exclude**. The choice is saved on the device **for this venue** and survives a page reload and a return visit: a regular with a nut allergy doesn't have to tick it every time.
The profile lives only in the guest's browser and is not tied to their identity. More about the tags themselves — [Allergens](/en/docs/allergens).
---
## Upsell on the storefront and at checkout
Three surfaces where the menu suggests adding more:
- **"Add to your order"** at checkout — a curated row of dishes that you define yourself (the heading and the item list are configurable);
- **"Frequently bought together"** — computed from your own orders, with no manual setup;
- **"Goes well with"** on a dish card — related items.
The same principle works at the till — an upsell prompter for the waiter, see [POS](/en/docs/pos).
---
## Order history and “Repeat order”
A guest sees **their previous orders at this venue** — the “My orders” item in the storefront menu. The history is kept in the guest's browser (the last ten orders per venue), so it works without any sign-up: a regular who takes the same lunch repeats it in two taps. A signed-in guest additionally sees the server-side history of their orders.
The **“Repeat”** button rebuilds the basket — same options, modifiers and picks inside a combo. Before anything is added, the contents are checked against the current menu:
- items that were withdrawn or put on the “86” stop list do not go into the basket — the guest sees a clear warning about which dishes are unavailable right now;
- prices are taken **as they are today**, not from the past order, so a dish that went up will not go through at the old price;
- everything else lands in the basket and the guest goes straight to checkout.
The history builds itself when an order is placed — there is nothing to switch on. A restaurant storefront gets it exactly like a shop storefront, with no separate customer account required.
---
## NFC — contactless menu
NFC (Near Field Communication) is an alternative to a QR code. The guest taps their phone on an NFC stand and instantly sees the menu.
### NFC benefits
- Faster than QR (no need to open the camera)
- Works even with the screen off (on some devices)
- Premium impression
### NFC setup
1. Order NFC stands (recommended: NTAG215, NTAG216)
2. In the admin panel → **QR & NFC** → **Write NFC**
3. Tap the phone on the stand → write the menu link
4. Place the stands on tables
### Compatibility
- iPhone (XS and newer) — works automatically
- Android (with NFC) — works with an unlocked screen
---
## AI features for the menu
### AI dish photo generation
No dish photo? AI will create a realistic image:
1. In the item editor, click **✨ AI Generate photo**
2. AI uses the dish name and description for generation
3. If images have already been generated for similar requests, the **"Ready-made AI images"** dialog opens first: pick one with **"Use this"** or click **"Generate new"**
4. A new generation returns **one** image and puts it into the card right away — there is no grid of variants to choose from
5. To set the style up front, open the **"Generation settings"** panel with the chevron next to the button: background, angle, lighting, mood and an extra description added to the prompt
**Recommendations:**
- Write a detailed description for better results
- Specify plating style: "on a white plate", "rustic", "fine dining"
- Generated photos can be replaced with real ones at any time
### AI photo enhancement
Uploaded photos are automatically improved:
- Brightness and contrast correction
- Background removal (if needed)
- Web optimization (conversion to WebP)
- Cropping to the required aspect ratio
### AI dish descriptions
AI can generate an appealing description:
1. Enter the dish name and main ingredients
2. Click **✨ Generate description**
3. AI creates an appetizing description tailored to your venue's style
4. Edit if necessary
### AI translations
All texts are automatically translated into 45 languages using AI:
- Translation takes context into account (culinary terminology)
- You can edit any translation manually
- New translations apply instantly
---
## What you need to get started
- **A location with a name and an address** — the storefront is signed with them.
- **Categories and items with prices** — the fast way to fill them in is import: from a photo of a paper menu, from an Excel file or from a website ([Migrate to us](/en/docs/migrate)).
- **A QR code** — printed in the [QR codes and devices](/en/docs/device-codes) section: as sheets, posters or one at a time.
- **Storefront languages** — translation is automatic, you only pick the languages.
- **Item photos** — not mandatory, but they are what sells.
---
## Limitations
- **On the free plan there is a limit on the number of items.** It is soft: you can always edit what exists, but creating items beyond the limit is blocked. A batch import does not refuse outright — it loads as many as fit and explains the remainder with a banner.
- **AI features on the item card are billed to the AI balance** — when it runs out you will see a banner rather than silence.
- **A separate menu per channel is something we deliberately do not build.** For an aggregator or a kiosk you can override prices and hide items, but you cannot assemble "a completely different menu".
- **On the Russian brand there is no image resizing** — photos are served as they are, so heavy files are worth shrinking before upload.
- **The menu editor is a very large window.** Our internal clarity review gives it 2 out of 5: there are dozens of toolbar tools, and it is cramped for a newcomer.
---
## Troubleshooting
**The guest sees an old menu.** The storefront is served through a CDN: wait and reload the page with the cache cleared.
**An item is missing from the storefront.** Check in order: hidden at this location, outside its [schedule](/en/docs/scheduled-menus) window, on the 86 list, or the price is not filled in.
**A new item cannot be created.** The plan limit has been reached — editing remains available.
**A translation did not appear.** Languages are chosen in the storefront settings; after adding a language the menu is not translated instantly.
**A photo uploads but looks heavy.** On the Russian brand there is no resizing — shrink the image before uploading.
---
## Related sections
- [Schedule and Happy Hour](/en/docs/scheduled-menus) — time-based availability of dishes and menus, happy hour, seasonal menus.
- [Kitchen (KDS)](/en/docs/kds) — how combo orders appear in the kitchen and split across stations.
- [Inventory](/en/docs/inventory) — writing off ingredients when dishes and combos are sold.
- [Allergens](/en/docs/allergens) — allergen and diet tags behind the guest dietary profile.
- [Orders](/en/docs/orders) — calling a waiter, pre-order slots and paying at the table.
- [POS](/en/docs/pos) — the waiter's upsell prompter and splitting the bill.
---
# Cenaly Use Cases
Real-world scenarios for implementing a digital menu and automation in the restaurant business.
---
## Case 1. A café switches from a paper menu to QR
### Situation
A small café with 40 seats. The paper menu is printed once a month; any price change or adding seasonal items means extra costs and waiting for the print shop.
### Solution with Cenaly
1. Uploaded photos of the paper menu → AI recognized all items automatically
2. Edited descriptions, added dish photos (some — AI-generated)
3. Placed QR codes on tables (stickers, table tents)
4. Set up 2 languages: Georgian + English for tourists
### Result
- Menu updates — **in 30 seconds** instead of 3–5 days
- Printing savings: **~200₾/month**
- Tourists read the menu in their own language → average check up by **15%**
---
## Case 2. A restaurant launches online orders for delivery
### Situation
A Georgian cuisine restaurant wants to accept delivery orders but isn't ready to pay a 25–30% aggregator commission (Glovo, Wolt).
### Solution with Cenaly
1. Created a digital menu with photos and descriptions
2. Enabled "Delivery" mode — the guest enters an address
3. Set up 3 delivery zones: free (up to 3 km), 5₾ (3–7 km), 10₾ (7–12 km)
4. Connected Stripe for online payments
5. Shared the link via Instagram, Google Maps, and business cards
### Result
- **0% commission** (instead of 25–30% to aggregators)
- Own customer base for repeat orders
- Average time from order to confirmation: **45 seconds**
- After 3 months — **35% of orders** come through the owned channel
---
## Case 3. A restaurant chain manages 5 locations
### Situation
A chain of 5 restaurants: 3 in Tbilisi, 1 in Batumi, 1 in Kutaisi. Different menus, different prices, but one brand.
### Solution with Cenaly
1. Created the chain owner's **master account**
2. For each location — a separate menu with local prices
3. Shared items are inherited from a template; unique ones are added locally
4. Roles: owner → administrators (1 per city) → shift managers → staff
5. A unified analytics dashboard across the entire chain
### Result
- Launching a new item **across all 5 locations in 2 minutes**
- Comparing revenue and dish popularity between locations
- ABC analysis helped remove 12 low-margin items → profit up by **8%**
---
## Case 4. A hotel implements room service via QR
### Situation
A boutique hotel with 30 rooms. Room service is taken by phone — guests complain about language barriers, order mistakes, and long wait times.
### Solution with Cenaly
1. A QR code in every room (on the bedside table)
2. Guest scans → sees the menu in their language (up to 45 languages)
3. Selects dishes, enters room number → order instantly goes to the kitchen
4. Set up a night menu (23:00–07:00) with a limited assortment
5. The cost is charged to the room bill
### Result
- Order errors: **from 15% to 1%**
- Average time from order to delivery: **down by 40%**
- Number of room-service orders: **up by 60%** (guests aren't shy about ordering via phone)
- Additional revenue: **+2,500₾/month** for 30 rooms
---
## Case 5. A bar speeds up service during peak hours
### Situation
A popular bar. On Friday–Saturday, the line at the bar counter is 10–15 minutes. Guests leave without waiting.
### Solution with Cenaly
1. QR codes on every table and at the bar counter
2. Guest scans → selects drinks → pays online
3. Bartender sees the order on a screen (KDS) → prepares → guest gets a push: "Your order is ready"
4. For repeat orders: a "Repeat" button in order history
### Result
- Lines **reduced by 70%**
- Table turnover: **+2 orders/evening** per table
- Average check up by **22%** (easier to order another cocktail via phone)
- Bartenders focus on preparation, not taking orders
---
## Case 6. A pizzeria with a multilingual menu for tourists
### Situation
A pizzeria in central Tbilisi. 70% of guests are tourists from different countries. The paper menu is only in Georgian and English; waiters don't speak Arabic, Hindi, Chinese.
### Solution with Cenaly
1. Created the menu in Georgian → AI automatically translated it into 45 languages
2. Added descriptions: ingredients, weight, allergens, calories
3. AI photos for each item (pizza, pasta, salads)
4. The system detects the guest's browser language and shows the menu in that language
### Result
- Guests from **50+ countries** read the menu without help from a waiter
- Order time reduced: **from 8 to 3 minutes**
- Misunderstanding-related errors down by **90%**
- More Google Maps reviews (guests mention convenience)
---
## Case 7. A restaurant implements a loyalty program
### Situation
A restaurant wants to increase guest retention (currently only 20% return).
### Solution with Cenaly
1. Enabled **points**: 5% of the paid check comes back as points, redemption capped at 50% of the check
2. Excluded the "Alcohol" category from earning and set a minimum check amount
3. Added a **stamp card** for coffee: the sixth drink is free
4. Enabled the **regular-guest discount** — after 10 completed orders the till suggests 10% to the cashier
5. Birthday promo codes: 20% discount (automatic campaign)
> There are no tiers ("bronze → silver → gold") and no "bring a friend" referral program in the loyalty engine: earning is the same for every participant. Bringing in guests for a commission is a different tool — the [affiliate program](/en/docs/commerce) for site owners and bloggers.
### Result
- Guest retention: **from 20% to 45%** in 4 months
- Average check of returning guests: **+30%** vs new guests
- The 50% redemption cap kept the program in check: points do not eat into revenue
- Guest LTV (Lifetime Value) increased **2.5x**
---
## Case 8. A café with a floor plan and reservations
### Situation
An 80-seat café with a terrace. Guests call to book — the administrator writes it down in a notebook; double bookings and confusion happen.
### Solution with Cenaly
1. Created a floor plan: main hall (15 tables), terrace (10 tables), VIP (3 tables)
2. Enabled online reservations via the website and QR
3. Auto-confirmation for regular tables, manual confirmation for VIP
4. Email reminder to the guest 2 hours before the visit (the lead time is configurable, 1 to 168 hours)
5. Reservation deposit: a flat amount or an amount per guest, free cancellation until a set hour; if the guest does not show up the deposit is forfeited, and a manager can waive it with one button
> There is no guest no-show counter that would close online booking after N misses — discipline is held by the deposit and the "No-show" status in the reservations log. Reminders also declare an SMS channel, but SMS are currently not delivered — a fix is in progress.
### Result
- Double bookings: **from 5–7 per week to 0**
- No-shows: **down from 25% to 8%** (thanks to reminders)
- Weekday terrace occupancy: **+40%** (guests see availability online)
- Administrator saves **2 hours/day** managing reservations
---
## Case 9. A food court with multiple food outlets
### Situation
A food court in a mall: 8 food outlets (burgers, sushi, pizza, Georgian cuisine, desserts, etc.). Each outlet operates independently; there is no unified ordering system.
### Solution with Cenaly
1. One QR code on each table → the guest sees **all 8 outlets** in one app
2. One cart for all outlets: the guest picks items from different kitchens and submits them in one tap
3. The cart splits into a **separate order for each outlet**, all linked by a shared group number (`GRP-…`); an outlet sees only its own items on its KDS screen
4. The host's commission is stamped into every order and stays invisible to the guest; the settlements between the venues themselves happen outside the platform — in cash or by invoice
5. The guest gets a notification when each order is ready
### Result
- Guests order from **2–3 outlets at once** (previously they went to only one)
- Food court average check: **+45%**
- Lines at cash registers **disappeared** (everything via QR)
- Mall management sees real-time analytics for the entire food court
---
## Case 10. A pastry shop launches cake pre-orders
### Situation
A pastry shop takes cake orders via Instagram and phone. It's hard to track: who ordered, what, for when, and whether there was a prepayment.
### Solution with Cenaly
1. Created a cake catalog with photos, descriptions, and price per kg
2. Pre-order form: date, size, inscription, decor, allergens
3. Full online payment for the pre-order via Stripe (an order has no partial prepayment — a percentage is taken only for a table reservation or a service appointment)
4. Automatic notification to the pastry chef about a new order
5. Guest receives status updates: accepted → in progress → ready → picked up
### Result
- Lost orders: **from 10–15% to 0%**
- Average time to take an order: **from 15 minutes (chatting) to 2 minutes**
- Payment upfront → **zero** cancellation rate
- The pastry chef sees the order schedule a week ahead
---
## Case 11. A university cafeteria speeds up lunch
### Situation
A university cafeteria: 500+ students during one lunch hour. Huge lines; students don't have time to eat between classes.
### Solution with Cenaly
1. Students open the menu via QR/link → pre-order (on the way to lunch)
2. Pre-order 15–30 minutes ahead → kitchen prepares for arrival
3. Every slot has its own capacity: a filled slot shows up as **"Full"**, so the guest picks a neighbouring time and the load spreads itself across the hour
4. Meals on the university's **corporate account**: the student has a personal ledger with a code and a daily limit, and the spending lands on the organization's account
### Result
- Student lunch time: **from 35 minutes to 10 minutes**
- Kitchen throughput: **+60%** (pre-orders distribute the load)
- Food waste: **-25%** (kitchen knows volumes in advance)
- Student satisfaction: **from 3.2 to 4.7 out of 5**
---
## Case 12. A restaurant optimizes food cost through analytics
### Situation
A restaurant doesn't understand why profit is low despite good revenue. There's no control over cost of goods, ingredient write-offs.
### Solution with Cenaly
1. Filled in **recipe cards** for all 80 menu items
2. Set up automatic ingredient write-off upon sale
3. Enabled ABC analysis: A (hits) / B (average) / C (outsiders)
4. Food cost monitoring — a dedicated metric in the "Finance" section (target: 25–30%)
5. Every week they reviewed class C: recipe-card cost against the menu price
> There is no threshold alert like "food cost above 35% on this item": the metric is read in "Finance", while automatic signals come from Inventory — on a low stock level.
### Result
- Food cost: **from 38% to 27%** in 2 months
- Identified 8 items with margin < 15% → recipes revised
- Spoilage write-offs: **-40%** (thanks to inventory control)
- Net profit: **+11%** with the same revenue
---
## Case 13. A takeaway coffee shop without a cashier
### Situation
A small coffee shop (10 m²). One barista does everything — makes drinks, takes orders, handles payments. During rush hour — chaos.
### Solution with Cenaly
1. QR code at the counter and at the entrance → guest orders themselves
2. Online payment → no cash handling
3. Barista sees the order queue on a tablet
4. Queue screen at the counter: the order number moves from the "Preparing" column to "Ready" (order contents are never shown on a public screen — only the number)
5. Repeat order: guest opens history → "Repeat my usual"
### Result
- Barista makes **40% more drinks** (no distractions at the register)
- Order errors: **almost 0** (guest selects themselves)
- Average check: **+18%** (people add dessert to coffee when they see photos)
- The line moves **2x faster**
---
## Case 14. A restaurant uses a stop list and menu scheduling
### Situation
A restaurant with breakfasts, business lunches, and dinners. Waiters forget to warn about sold-out items — guests order and then get disappointed.
### Solution with Cenaly
1. Set up a **menu schedule**: breakfast (08:00–11:00), lunch (11:00–16:00), dinner (16:00–23:00)
2. Stop list: manager removes an item with one click → it is instantly hidden for all guests
3. Auto-stop when inventory reaches zero
4. A daily "what to order" digest for the owner — push and email for every product that fell below its reorder point
### Result
- "Sorry, it's sold out" refusals: **from 8–10 per day to 0**
- Scheduled menu switching: **fully automatic**
- Revenue loss due to stopped items: **-60%** (early notification → timely purchasing)
- Guest satisfaction: **significant increase** (no disappointments)
---
## Case 15. A franchise uses a whitelabel solution
### Situation
A chain of 20 restaurants plans to sell a franchise. They need a unified digital platform with the franchise brand, not Cenaly.
### Solution with Cenaly
1. Brought up the storefront under the franchise brand: **its own domain** (menu.franchise-name.com), logo, colors, font, cover, favicon and QR styling — the guest never sees the platform's name
2. One catalog for the whole network account: a new item is immediately available to any location, while each location picks its categories and items, its own price and its stop list
3. Centralized management: promotions, discounts, new items — pushed to all locations of the network at once
4. Each location sees only its own analytics; the franchisor sees the entire network
5. Automated reporting: revenue, food cost, average check per location
> The network is run from **one account** with several locations and access levels: there is no roll-out of a master menu into separate franchisee accounts. An item's name and description are shared across the network; price and availability are overridden per location. See [Multi-location](/en/docs/multi-location) for details.
### Result
- Launching a new franchise location: **in 1 day** (instead of a week of setup)
- Unified quality standard: **100% of locations** with an up-to-date menu
- The franchisor controls the brand, prices, and quality **remotely**
- Cost of digital infrastructure per location: **5x cheaper** than a standalone solution
---
# Switch to us
The migration wizard moves your menu, products and stock from an old system in minutes: AI reads the export files, and all you have to do is review the result.
Where: **Settings → “Switch to us”** (`admin.cenaly.com`).
First choose where you are coming from:
- **Poster POS** — with hints on which Poster screens to export from;
- **Another system / any file** — Loyverse, Ecwid, iiko, an Excel price list, a PDF or even a photo: the AI understands most formats;
- **A live online store** — Shopify, WooCommerce, Wix, InSales or custom-built: imported by site URL.
---
## Step 1 — menu and products
Upload an export (Excel/CSV, Word, PDF, a photo of a price list) or point at your current site. The AI recognises items, prices and categories and shows an import plan you can review and correct before it is applied.
You can run the import several times with different files: existing items are **matched**, not duplicated.
More about file parsing: [AI catalog import](/en/docs/catalog-import).
---
## Step 2 — stock
The second file is stock: ingredients and goods with quantities and purchase prices.
Before importing you get a review table, and it is **editable row by row**: name, quantity, unit and price per unit can be corrected right in the table, the checkbox in the first column excludes a row from the import, and the action column lets you choose between creating a new product and merging the row into a specific existing stock item (a barcode match is flagged separately). If the unit differs, the quantity is converted and the row says so honestly.
As a result, missing products are created and positive stock is received as a goods receipt document — your [inventory](/en/docs/inventory) keeps a proper trail instead of stock appearing out of nowhere.
---
## Step 3 — a live online store
All we need is the storefront address: we read the public catalogue the way a search engine does — no passwords required.
What can be moved (via checkboxes):
- **products** — photos, prices, variants, characteristics, descriptions;
- **articles and pages** — about us, delivery, returns, blog;
- **design** — colours, fonts, corner radii, home page composition;
- **SEO tags** — titles and descriptions;
- **images** (skipping them makes the import much faster);
- **legal documents from the source site** — if it is your store and you want to keep your own texts.
Next to the checkboxes are two volume limits, and they are **not empty by default**: **“Products limit”** is 200 (50 / 100 / 200 / 500 / 1000 / 5000 / no limit) and **“Pages limit”** is 30 (10 / 30 / 60 / 120 / 500 / no limit). With the defaults, a store with 2000 items will only bring over the first 200 — to move the whole catalogue pick **“no limit”**.
You can see the current stage (“reading the sitemap”, “parsing product cards”, “creating products and pages”) and the final counters. The import runs on our servers — **you can close the tab**. Photos keep processing for a few more minutes after the report.
If the store serves our servers an empty page (some platforms do), switch on **“Read the store with my browser”**: it needs the Cenaly extension and a one-time pairing code valid for 15 minutes.
⚠️ Import only your own store, or one you have the right to move: responsibility for copied texts and images lies with the account owner.
---
## Inspired by another store
A separate mode for the “I want it like theirs” case: we read the public home page and list the traits you may adopt — colours, typography, element shapes, product card style, header, layout, home page composition. You tick what you want and apply it to your storefront.
Only **non-protected traits** are transferred. Texts, photos, logo, brand name and the products of someone else's site are not copied, and any added sections are created empty for you to fill with your own content.
---
## What is not moved yet
Sales history, customers and debts do not migrate automatically — keep the old system in read-only mode for reference. A dedicated scenario is coming for **Loyverse** (its card sits in the source list greyed out, labelled “dedicated scenario coming soon”); **Ecwid** has no card of its own — its files already work through the “Another system” option.
---
## Related topics
- [AI catalog import](/en/docs/catalog-import) — parsing price lists and photos
- [Inventory](/en/docs/inventory) — what to do with stock next
- [Online store](/en/docs/shop) — the storefront after the move
- [Website builder](/en/docs/website-builder) — fine-tuning the design
- [Data export](/en/docs/data-export) — the opposite task: taking your data out
---
## FAQ
**Do you need passwords for my old store?**
No. We read the public storefront. You only need your own credentials to export files from the old POS.
**What happens if I import the same file twice?**
Items are matched with existing ones; no duplicates appear.
**How long does a large store take?**
From a few minutes to an hour or more, depending on the number of products and whether images are included. The process runs in the background.
---
# If the internet goes down or the cloud is unreachable
Connections break: the provider, the router, a thunderstorm, an outage at the operator. The venue does not close because of it — guests are standing at the counter. Below is exactly what keeps working, what does not, and what the shift should do.
Tell two failures apart, because they behave differently:
| What happened | The POS in the venue | A guest from the street |
|---|---|---|
| **The internet is down in the venue** | Works offline: rings up, prints, builds a queue | The storefront opens (it is served from a CDN) and the order reaches the cloud — but in the venue you will only see it after the connection is back |
| **The cloud is unreachable** | Exactly the same: the POS does not tell one from the other — for it this is "the write did not go through" | The storefront may open from cache, but placing an order and paying will not work |
The POS deliberately does not try to guess the cause: any network error means "work locally, write to the queue".
## What keeps working
**The POS (web).** This is not just a cached page but a real write queue on the device:
- **an order is rung up** and goes into the order queue (it lives on the POS for **24 hours**);
- **receipts and the cash shift** get their own operation queue (opening a shift, pay-ins and pay-outs, a receipt, a refund, closing a shift). Every operation carries a client-side idempotency key, so syncing never duplicates anything;
- **a shift opened offline** gets a temporary number and keeps working: the gate "no payment without an open shift" applies offline too, computed from the local cache;
- **the menu, prices, tables and reference data** are read from the browser's local cache — they got there while the connection was alive;
- **reloading the page** does not throw you to the login screen: the POS opens in a "degraded session" from a local snapshot and reconnects itself once the network is back.
**Printing.** The receipt, the kitchen ticket and the label are printed by the bridge installed on the same computer: the POS talks to it over the machine's local address — no internet needed.
**The fiscal receipt.** If the fiscal printer is connected to the same computer, the receipt is issued through the bridge over that same local channel: the fiscal drive accumulates documents and the fiscal data operator catches up once the connection appears. For 54-FZ this is a normal mode, not a violation.
**The login screen.** As long as the browser holds a recent session (the window is **7 days**), the cashier signs in and works; sending the accumulated data will still require real authorization once the connection is back.
## What does not work without a connection
- **The kitchen display (KDS).** Tickets reach it through the cloud; without the internet new orders will not get to the kitchen — they will travel there once the connection is back. Meanwhile the kitchen works from printed tickets, if you have [kitchen printing](/en/docs/kitchen-printing) set up, or from spoken orders.
- **The bank terminal.** Card payment requires authorization at the bank — it will not go through offline. Take cash.
- **Online payment by the guest** (card on the storefront, paying the bill at the table, paying at the kiosk) — it needs access to the payment provider.
- **A second POS and the server's tablet.** Devices do not sync with each other over the local network: each keeps its own queue and syncs it itself. We deliberately do not build a shared local contour ("LAN mode") — the product owner's decision is to cover the autonomy of one POS with printing.
- **The X report.** The interim snapshot is computed on the server from sales — offline the POS will honestly refuse. You can close the shift; the Z report will be produced when the connection is back.
- **Admin sections that compute on the server** — Orders, Finance, Statistics, Inventory, Staff. They read the cloud, and offline they show at best the last thing they managed to read.
- **The expo screen, the queue display, the kiosk** — cloud surfaces as well.
## What staff should do
1. **Keep ringing up.** As soon as the connection drops, an amber "offline" banner and an **"N not sent"** chip appear in the POS. This is a normal mode: the order is taken, the receipt is printed, the money is collected.
2. **Print the guest's receipt as usual.** Printing is local — the paper comes out.
3. **Stay on the same device and the same browser.** The queue lives on this computer: you cannot move to a second tablet and "sync it from there".
4. **Do not clear the browser cache, do not sign out, do not open the POS in private mode** — that erases unsent orders and receipts.
5. **You may reload the page.** The queue survives a reload and a browser restart.
6. **Do not ring up the same order twice** "just in case": the system protects against duplicates on sync, but two different orders will honestly be counted as two.
7. **Do not accept cards** — the terminal cannot authorize offline. Take cash, or issue an invoice if the guest prefers to pay later.
8. **A red "N not delivered" banner** means some records did not go through even after the connection returned (they expired or the server refused). That is a reason to call the manager, not to hide the banner.
## What happens when the connection returns
Syncing starts on its own — on the "network is back" event, when you return to the tab, and on a timer.
- **The "N not sent" chip goes down and disappears.** Orders appear in the Orders section and on the kitchen display, receipts get numbers, stock is written off according to recipe cards.
- **There will be no duplicates.** Every order carries a client-side identifier and every POS operation an idempotency key; the server recognizes a repeat and does not apply it twice.
- **The offline shift is replaced by the real one.** The temporary shift number is rewritten to the real one in every receipt and movement still waiting in the queue.
- **The Z report is produced** for a shift closed offline.
- **Nothing is deleted silently.** Records that could not be delivered (a day expired, or the server returned an unrecoverable error) go into a separate "not delivered" list (kept for **7 days**, up to 100 records) and are shown in a red banner that can be dismissed manually.
Order is preserved: the queue is sent sequentially, and on temporary server errors it retries with a growing pause.
## Limitations
- **Offline covers the POS and printing — and nothing else.** The kitchen display, the bank terminal and syncing between devices over the local network do not work without the internet; a full LAN contour is deliberately not being built.
- **The queue is tied to the device and the browser.** It lives in that specific browser's storage: another computer, another browser or private mode will not see it.
- **The queue lives 24 hours** for orders and POS operations. More than a day without a connection and records move to the "not delivered" list instead of quietly disappearing.
- **An offline session lives 7 days.** After that the POS asks for a normal login, and that is impossible without a network.
- **The X report is unavailable offline** — it is computed on the server.
- **Guest-facing surfaces (storefront, kiosk) keep a queue for one hour only** — they are meant for a short mobile-network gap on the guest's side, not for working without the internet.
- **The Android POS.** Taking an order and issuing a local fiscal receipt work offline, but writing to the receipt registry and the cash shift offline do not yet (planned). The fiscal drive is the source of truth offline there.
- **An end-to-end "pull the cable" run on a live fiscal printer has not been done yet.** The POS offline mode is covered by code and automated tests (including an "in-session offline" e2e test), while a check on real hardware by the owner is on the plan — we say this plainly instead of presenting it as done.
## Troubleshooting
**The POS asks me to sign in although it used to work.** The session is older than seven days, or the browser was cleared. You cannot sign in without a network — restore the connection.
**The "N not sent" chip does not go down.** Check that the connection really is back (open any website) and keep the POS tab active: syncing runs on the network event, on returning to the tab and on a timer. If the chip stays at the same number, look at the red banner — some records may have moved to "not delivered".
**A red "N not delivered" banner appeared.** The records were not accepted by the server: the 24-hour limit expired or the answer was unrecoverable (for example, access was revoked). Orders and receipts from that list have to be entered manually — reconcile with the shift's paper receipts.
**An order was rung up offline but the kitchen does not have it.** That is expected: the ticket will travel to the kitchen display once the connection is back. While there is no network, printed tickets feed the kitchen.
**The receipt does not print offline.** Then it is not about the internet: check that the bridge on this computer is running and the printer is connected — [Cenaly Hardware Bridge](/en/docs/hardware-bridge). The bridge and the POS talk inside the same machine.
**Duplicate orders appeared after the connection returned.** Syncing cannot create duplicates — check whether the same order was rung up twice by hand, and cancel the extra one in the Orders section.
## FAQ
### Does the POS work without the internet?
Yes: it rings up orders, prints receipts and fiscalizes them through the bridge on the same computer. Everything that has to reach the cloud accumulates in a queue on the device and is sent automatically.
### Will data be lost?
No. The queue survives a page reload and a browser restart, and whatever could not be delivered lands in a visible "not delivered" list instead of vanishing. The only way to lose it is by hand — by clearing the browser's data.
### Can 54-FZ receipts be issued offline?
Yes, if the fiscal printer is connected to the same computer as the bridge: the fiscal drive accumulates documents and passes them to the fiscal data operator once the connection appears. This is a mode the law provides for.
### Why does the kitchen display not work?
Tickets travel through the cloud. There is no local network between the POS and the kitchen display — a deliberate decision: we cover the autonomy of the POS with printing, not of the whole floor. While there is no network, printed tickets hold the kitchen.
### Can a guest open the menu while we have no internet?
Yes — the storefront is served from a CDN and does not depend on your internet. An order placed by a guest will reach the cloud, but in the venue you will see it only after the connection is back.
### What about card payments?
Take cash: the bank terminal needs authorization at the bank.
### How long can the POS hold out without a connection?
Twenty-four hours for the queue of orders and POS operations, seven days for the session. In practice that means you will work through the shift calmly.
## Related articles
- [POS](/en/docs/pos) — orders, payments, service modes and the "Working offline" section
- [Cash shift and Z report](/en/docs/cash-shift) — opening, movements, X and Z reports
- [Cenaly Hardware Bridge](/en/docs/hardware-bridge) — the bridge on the POS computer, printers and fiscal printers
- [Kitchen printing](/en/docs/kitchen-printing) — tickets by station when the kitchen display is unavailable
- [Kitchen display (KDS)](/en/docs/kds) — how tickets reach the kitchen
- [First day: cafe, restaurant, canteen](/en/docs/getting-started-food) — what to switch on right away
---
# Mobile Apps for the Venue Team
**Cenaly** provides a set of native Android apps for all restaurant team members — from the owner and manager to the waiter, chef, and courier. The apps work using the same accounts and the same backend as the admin web panel: no separate setup is required.
> 💡 Guests do not need to install anything — the menu opens via a QR code in the phone's browser. Mobile apps are designed **only for the venue staff**.
---
## Available Applications
The Android applications are each tailored to their specific role. On the device, they are labeled with their respective names — **Cenaly Admin**, **Cenaly Service**, **Cenaly KDS**, **Cenaly Courier**, **Cenaly POS**, **Cenaly CRM**; the signature is unified across all platform domains. Admin, Service, KDS, Courier and POS are in the download table on this site, CRM is on the [all apps](/apps) page.
### 1. Cenaly Admin — Menu and Venue Management
The **Cenaly Admin** app is a mobile companion for the owner or manager. It provides full parity with the web dashboard in terms of menu management:
- **Menu**: adding and editing categories and dishes, reordering menu items, multilingual names and descriptions (supports the same languages as the web dashboard), uploading photos from the camera or gallery, AI generation and enhancement of dish images.
- **Schedule and availability**: marking an item as "86" (temporarily out of stock), day-of-week schedules, happy-hour rules.
- **Options and modifiers**: editing option groups and add-ons for a dish.
- **Recipes and combos**: linking components for inventory deduction.
- **Tags**: managing custom tags and tag categories.
- **Customer QR codes**: generating, editing, and sharing QR codes for tables and delivery.
- **Locations**: editing venue settings — name, address, contacts, operating hours, service charge type, online ordering and delivery settings, menu page appearance.
- **Account and subscription**: balance, pricing plan, top-up via web form.
### 2. Cenaly Service — Waiter and Dining Area Monitor
The **Cenaly Service** app combines two operational modes in one:
**"Waiter" Mode** — taking orders tableside:
- Selecting a table and creating an order from the venue's menu.
- Adding options, modifiers, and comments to items.
- Adding items to an open table.
- Tracking dish status (received → preparing → ready → served).
- Payment and tips registration via the payment screen.
- "My orders" / "All orders" filter.
**"Monitor" Mode** — dining area overview for a manager or host:
- Real-time feed of all active orders.
- WebSocket updates and new order notifications.
- Viewing dish statuses and actions on each order.
- "Browsing now" indicator — guests viewing the menu online.
The mode is selected upon first launch and can be changed in the app settings.
### 3. Cenaly KDS — Kitchen Display System
The **Cenaly KDS** (Kitchen Display System) app is installed on a kitchen tablet and mirrors the "Kitchen (KDS)" web screen:
- Real-time FIFO ticket queue.
- Color-escalated timers (elapsed time since order receipt).
- One-tap item status update: queued → preparing → ready.
- Batch actions: "Start all" / "Bump" ticket.
- Recalling tickets from the archive (Recall).
- Filter by stations (grill station, bar, cold station, etc.).
- Expanding combo meals into individual items.
- Sound notification for new tickets (can be muted).
- Fullscreen mode, forced landscape orientation, screen stays awake — optimal for wall mounting.
### 4. Cenaly Courier — In-House Courier App
The **Cenaly Courier** app guides the courier through every delivery:
- Delivery list by status: new, accepted, on the way, completed.
- Step-by-step workflow: accepted → heading to restaurant → picked up order → on the way to customer → delivered.
- Proof of Delivery with photo: photo at the door, recipient, PIN code.
- Collecting cash on delivery (COD) directly upon handover.
- Navigation: route display via built-in map with route calculation.
- Live GPS tracking: courier coordinates are visible to the dispatcher in the admin web panel.
- "On duty" / "Offline" toggle.
### 5. Cenaly POS — Android POS Terminal
The **Cenaly POS** app turns an Android device into a point-of-sale workstation:
- PIN login on a shared terminal and shift management.
- Offline database on the device: orders and receipts are processed even when offline and synchronized once the connection is restored; network status is displayed on screen.
- Integration and operation with MSPOS peripherals — built-in printer and other POS terminal hardware.
- Payment in cash, by card on a terminal (through Cenaly Hardware Bridge), by gift card and “On credit”; shift X and Z reports, returns by receipt.
- The “Courier” menu item: accept a package the courier brings back and handle a delivery that did not reach the customer.
> ℹ️ There will be no **Cenaly Rider** app for contractor couriers: the Cenaly independent courier network is closed and does not register new couriers. Deliveries are handled by the venue's own couriers in **Cenaly Courier** or by a third-party delivery service (the Couriers section of the admin panel).
### 6. Cenaly CRM — Sales and Customers
The **Cenaly CRM** app is designed for sales teams and provides full parity with the web version at crm.cenaly.com:
- Customer database (contacts, statuses, interaction history).
- Kanban-style sales pipeline — drag-and-drop deals across stages.
- Customer map with geolocation and nearby search.
- Flyers: creation, linking to customers, export to PDF.
- Business cards and leaflets — PDF export.
- Account codes — creation and management.
---
## Download and Installation
Staff apps are downloaded directly from this website as an Android installation file (`.apk`) — installation from Google Play is not required.
| App | Intended For | Download |
|-----|--------------|----------|
| **Administrator** — menu, locations, subscription | Owner, manager | [Download for Android](/apps/cenaly-admin.apk) |
| **Waiter & dining area** — order taking and monitor | Waiter, hostess | [Download for Android](/apps/cenaly-service.apk) |
| **Kitchen (KDS)** — kitchen display | Cook, kitchen | [Download for Android](/apps/cenaly-kds.apk) |
| **Courier** — delivery and tracking | Courier | [Download for Android](/apps/cenaly-courier.apk) |
| **Till (POS)** — sales, shift and receipts on a tablet | Cashier | [Download for Android](/apps/cenaly-pos.apk) |
| **Cenaly Phone** — work phone for the Cenaly PBX | Employee with an extension | [Download for Android](/apps/cenaly-phone.apk) |
| **Cenaly Camera** — a phone as the location’s camera: recording, archive, clips of risky POS operations | Owner, manager | [Download for Android](/apps/cenaly-camera.apk) |
| **Customer display** — order items and the total at the till | Till, customer | [Download for Android](/apps/cenaly-customer-display.apk) |
Each app has its own page — what it does, Android and iOS requirements and honest limits: [all apps](/apps).
**How to install:**
1. Open the "Download for Android" link directly on the Android device — the `.apk` download will begin.
2. Open the downloaded file. During the first installation, Android will ask you to **allow installation from this source** — confirm it (a one-time setting for the browser).
3. Tap "Install" and wait for completion — the app will appear on the home screen.
4. Launch the app and log in: email/password or QR code (see below).
> 💡 **iPhone and iPad** versions are released through the App Store: **Cenaly Phone** has been submitted for Apple review (help — [Cenaly Phone for iPhone](/docs/cenaly-phone-ios)); Admin, Service, KDS, Courier and CRM for iOS are in development. The status of each version is on the [apps page](/apps). Until then use the `admin.cenaly.com` web panel in your browser on iPhone and iPad.
> ℹ️ **Cenaly CRM**, **Cenaly Support** and **Cenaly Studio** are internal tools of the platform team (sales, support, development); a venue does not need them — their installation files are on the [all apps](/apps) page for the team and partners.
---
## Logging In to Applications
All applications use the **same credentials** as the admin web panel. No separate registration or separate password is required.
### Login Methods
| Method | Description |
|--------|-------------|
| Email and password | Standard login — the same credentials as on admin.cenaly.com |
| Sign in with Google | Only in the **Cenaly Admin** app |
| QR login (quick) | An administrator generates a one-time QR code in the panel → the employee scans it in the app |
> 💡 If the app does not let you in with the correct password, tap the **gear icon on the login screen** and explicitly select your service: by default, the device guesses the environment itself (based on the SIM card country and previous login), and while traveling or using an account on another domain, it might guess incorrectly.
**QR login** is the recommended method for staff (waiters, cooks, couriers): there is no need to enter an email and password on a shared device. Device login codes are generated in the web panel under **QR codes** → the **Devices** tab (which also provides step-by-step instructions for connecting a tablet or phone). The same tab shows which devices are currently connected and when each was last active.
> 💡 To use all apps except Cenaly Admin and Cenaly CRM, the employee must be added to the venue with the corresponding role — see the [Staff](/en/docs/staff) section.
---
## Who Needs Which App
| Role | App |
|------|-----------|
| Owner, manager | **Cenaly Admin** — menu and venue management |
| Waiter | **Cenaly Service** ("Waiter" mode) |
| Hostess, dining area manager | **Cenaly Service** ("Monitor" mode) |
| Chef, kitchen | **Cenaly KDS** — kitchen display |
| Cashier | **Cenaly POS** — POS on Android |
| In-house courier | **Cenaly Courier** — delivery screen |
| Sales manager | **Cenaly CRM** — clients and deals |
---
## Related sections
- [Kitchen (KDS)](/en/docs/kds) — kitchen web display and principles of working with the dish queue
- [POS](/en/docs/pos) — order taking via web panel (tablet/computer)
- [Orders](/en/docs/orders) — order lifecycle and order monitor
- [In-house delivery](/en/docs/delivery) — setting up the delivery zone and working with couriers
- [Staff and shifts](/en/docs/staff) — adding employees, roles, and QR login
- [Getting Started](/en/docs/getting-started) — first steps with the Cenaly platform
---
## Frequently Asked Questions
### Do I need to create a separate account for mobile apps?
No. Use the same email and password as for logging into admin.cenaly.com. Waiters and other staff log in via QR login — the administrator issues them a code in the "QR codes" section, under the "Devices" tab.
### Do the apps work without an internet connection?
Part of the data (menu, open orders) is cached on the device. When the connection is lost, the apps continue to display cached data; changes are submitted once the connection is restored. We recommend testing full offline mode under the specific conditions of your venue.
### How do I connect a kitchen tablet?
Install the Cenaly KDS app on an Android tablet, log in via email/password or QR code ("Cook" role), and select the desired location. The app will automatically connect to the real-time order queue. For a stationary setup, it is recommended to enable "Keep screen on" — this is done in the device settings; the app keeps the screen active automatically.
### Where can I download the apps?
Directly from this website — see the [Download and installation](#download-and-installation) section above. Links to the installation files (`.apk`) are also available on the main page in the "Apps for your team" block. Installation from Google Play is not required: open the link on your Android device, allow installation from this source, and tap "Install".
### Are there iPhone and iPad versions?
The line-up is coming to both platforms with the same account and the same data. Cenaly Phone for iPhone has been submitted to the App Store and is in Apple review; Cenaly Admin, Service, KDS, Courier and CRM for iPhone and iPad (iOS 16 or newer) are in development. App Store links will appear on the [apps page](/apps). Until then the full functionality of the admin.cenaly.com web dashboard is available in the browser on iPhone and iPad.
---
# First day: choose your business type
The platform grew out of restaurant QR menus, but it has long worked for a retail store, a beauty salon, a hotel, an online store, a parcel pickup point and a service business. The **business type** is chosen at registration (and can be changed later in the location settings): it sets the words in the interface (“dish” or “product”, “table” or “specialist”), the POS mode (tables or counter) and the set of sections switched on from the start.
The platform has 17 business-type profiles. Several profiles share a checklist, while schools, clinic appointments and website-only businesses have additional workflows below. Start with the process you need to run each day.
## What is common to everyone
1. **Registration** — e-mail and password or sign-in with Google → [Account and sign-in](/en/docs/account).
2. **Location** — created automatically with a default name; rename it as the first step of the readiness checklist on the dashboard.
3. **Business type** — chosen in the wizard; double-check it in the location settings if unsure → [Settings](/en/docs/settings).
4. **Languages** — the panel language and the guest/customer languages; content translations are made automatically.
5. **Subscription** — everything works in trial mode at the start; the plan is chosen later → [Subscription](/en/docs/subscription).
6. **Help** — the AI assistant in the panel knows which page you are on and answers “where is setting X” → [How to get help](/en/docs/support).
Everything else is in the checklist for your format.
## Pick your checklist
| Business type | Formats | Checklist |
|---|---|---|
| 🍽️ Food service | coffee shop, cafe, restaurant with a dining room, bar, fast food, canteen | [First day: cafe, restaurant, canteen](/en/docs/getting-started-food) |
| 🏪 Retail store | grocery, clothing, flowers, a bakery at the counter, any brick-and-mortar store | [First day: retail store](/en/docs/getting-started-retail) |
| 💇 Salon | beauty salon, barbershop, nail studio, massage, cosmetology | [First day: salon, barbershop, studio](/en/docs/getting-started-beauty) |
| 🏨 Hotel | hotel, guesthouse, apartments, hostel | [First day: hotel, guesthouse](/en/docs/getting-started-hotel) |
| 🛒 Online store | online sales without a counter, dropshipping, marketplaces | [First day: online store](/en/docs/getting-started-ecommerce) |
| 📦 Pickup point | parcel pickup point, locker desk, handing out carriers' orders | [First day: pickup point](/en/docs/getting-started-pickup-point) |
| 🧰 Services and B2B | studios, tutors, service centres, agencies, law and accounting firms | [First day: services and B2B](/en/docs/getting-started-services) |
| Clinic appointments | reception, doctors, rooms and equipment | [Appointments](/en/docs/appointments); choose appointment services and the Clinic preset |
| Schools and courses | language, music, children's, sports and online schools | The school workflow below; new modules are being rolled out |
| Company website or blog | pages, articles and incoming enquiries | [Pages and articles](/en/docs/cms), [Website builder](/en/docs/website-builder) |
| Widgets or chat on an existing website | customer conversations, booking, orders and forms | [My website](/en/docs/site-widgets) |
A mixed business can combine modules: a hotel with food service, a salon selling cosmetics, or a store with a pickup point. Check the [app store](/en/docs/app-store) for availability by business type, country and service. Some sections have restrictions; a toggle does not override them.
## Schools and courses
Choose **Education** when students enrol in a group for a term and a family pays
for lessons. A school combines students and payers, courses, groups, timetables,
attendance and a family account. An individual trial lesson can use the
[appointment book](/en/docs/appointments); regular group attendance belongs in
the school register.
**Availability:** the dedicated School section is being introduced. Student,
group, timetable, attendance and reporting screens have been implemented;
availability depends on the version deployed to your account. Finance and
settings are still being completed. Do not treat a missing screen as an error
in your business-type selection.
Prepare the information needed for launch:
1. Courses: title, age range, level, duration and in-person, online or hybrid format.
2. Teachers, rooms, groups and the weekly timetable.
3. Students and family payers, including required parental consents.
4. Pricing: single lessons, packages, monthly fees, instalments and absence rules.
5. Opening family balances and the process for recording payments.
The upcoming school workflow includes the student/parent **Study** area, online
invoice payment, public timetables and trial lessons, online lessons, materials,
homework, notifications and teacher pay. These additions are being integrated
and checked before general availability.
## Clinic appointments
Choose **Appointment services** with the **Clinic** preset. Configure doctors,
their services and schedules, then rooms and equipment. The appointment engine
checks the resources required by a service together. Reception can use patient
visit history; doctors' access is limited by their role.
This is administrative booking and customer service. Medical records,
diagnoses and treatment protocols are outside this workflow.
## A website without a physical venue
For a company website or blog, start with pages, contact details, a domain and
the enquiry path. An existing website can connect [widgets](/en/docs/site-widgets)
with one installation tag: chat, forms, callback, booking, ordering, help and
consent tools. There is no need to configure tables or a kitchen.
## Upcoming capabilities
Development is expanding schools and group classes, hotel payments and guest
self-service, appointment CRM, customer communication automation and accounting.
New functions are introduced in stages. A payment contract, external-service
account, device setup or local requirement may still need your action after
the software is ready. Use the current article for operating instructions and
check availability before making a new function part of daily work.
## If the business type was chosen wrong
The business type is changed in the location settings. It renames section labels and the location (if the name is still the default) and changes the POS mode, but it **does not delete data**: the menu, products, customers and orders stay. Sections switched on manually stay on too.
## Related sections
- [Getting started](/en/docs/getting-started) — registration, the first menu and a QR code in a few minutes
- [Switch to us](/en/docs/migrate) — if your data already lives in another system
- [Use cases](/en/docs/use-cases) — what it looks like at working businesses
- [How to get help](/en/docs/support) — if you get stuck on any step
---
# First day: cafe, restaurant, canteen
A coffee shop, a restaurant with a dining room and a canteen at a factory or an office building all run on the same product — what differs is the **service mode** and which sections are switched on. The venue type is chosen at sign-up and immediately tunes the system to the format:
| Format | POS mode | Tables and reservations | What is on from the start |
|---|---|---|---|
| **Restaurant** | Tables: an order is opened on a table, the bill is closed later | Yes | POS, kitchen display, tables, staff, inventory, finance |
| **Cafe / coffee shop** | Tables (you can also work "pay right away") | Yes | The same plus nutrition facts on the item card |
| **Canteen** | Counter: the order is rung up and paid immediately | No — service is over the counter | POS, kitchen display, staff, inventory, finance, kiosk, queue display, nutrition facts and portion weight |
| **Fast food** | Counter | No | The same as a canteen, plus delivery and takeaway |
The format is a set of defaults, not a cage: any section can be switched on and off in the **App Store**, and the service mode is changed in the POS settings.
## What you need to get started
You do not need to buy any special equipment to start taking orders.
- **The guest's phone.** The menu opens from a QR code in a browser — the guest does not install anything, and the storefront works in 45 languages.
- **Any computer or tablet for the POS.** The POS is a page in the admin panel; it installs "as an app" (PWA) and keeps working when the connection drops. A dedicated POS appliance is not required.
- **A tablet or a monitor for the kitchen display** — if orders go to the kitchen. ⚠️ The kitchen screen is built for a tablet or a monitor: it is not adapted to a phone.
- **A receipt printer — through the bridge.** Printing receipts, kitchen tickets and labels goes through **Cenaly Hardware Bridge**, a Windows or Linux service you install on the same computer that runs the POS. The printer connects **over the network** — Ethernet or Wi-Fi, port 9100: the bridge discovers such printers on the local network itself, while USB and Bluetooth are still in development. Without the bridge the POS works — just without paper.
- **A fiscal printer** is needed where the law of the country requires it, and it connects through the same bridge. Live fiscal receipts today are Russia (54-FZ) and tax invoices for the UK, Australia, New Zealand and the UAE; for other countries see [Fiscalization](/en/docs/fiscal).
You do need the internet, but losing the connection does not stop the POS — see [If the internet goes down](/en/docs/offline).
## The common frame of the first day
Four steps are the same for all three formats; after that the checklists diverge.
1. **Sign-up and venue type.** After registration the system offers a step-by-step wizard or an AI copilot in a chat — both roads lead to the dashboard with a readiness checklist. The location is created automatically with a default name: renaming it and filling in the address is the first item on the checklist.
2. **The menu.** The fast path is import: **photograph the paper menu**, upload an Excel file, or give a link to a site where the menu already exists. Leaving Poster, iiko or r_keeper? Export Excel from there and import it (there is no direct connector to those systems). Details — [Migrate to us](/en/docs/migrate) and [Catalog import](/en/docs/catalog-import).
3. **Check the storefront with your own eyes.** Open the menu on a phone from the QR code: prices, photos, categories, languages. What the guest sees is the source of truth for the POS, the kitchen and the kiosk.
4. **QR codes.** Printing QR codes for tables, the counter or the entrance — the [QR codes and devices](/en/docs/device-codes) section: as sheets, posters or one at a time.
⚠️ If you chose the **light mode** at sign-up, the "POS", "kitchen display", "tables", "inventory", "staff", "finance" and "couriers" sections are switched off — deliberately, so that 44 sidebar items do not scare you in the first hour. They are switched on one by one in the App Store; the final step of the wizard says so explicitly.
## Checklist: coffee shop and cafe
The goal of day one is to take payments and not lose a single order.
1. **A menu with variants and add-ons.** Cup size, type of milk, syrup — these are [modifiers and variants](/en/docs/qr-menu) of an item, not separate menu lines.
2. **The POS** — [POS](/en/docs/pos). Check the service mode: "tables" if guests sit down, and "pay right away" if they take away. Both modes work on the same POS.
3. **A cash shift.** Open the shift with a float — [Cash shift and Z report](/en/docs/cash-shift). Until a shift is open, payment is blocked.
4. **The bridge and a receipt printer** — [Cenaly Hardware Bridge](/en/docs/hardware-bridge). Verify printing with one test receipt.
5. **QR codes on tables and at the counter** — the guest orders on their own and you do not lose people from the queue.
6. **A menu schedule**: breakfast until 12:00, happy hour on coffee — [Scheduling and happy hour](/en/docs/scheduled-menus). One source of truth for the storefront, the POS and the kiosk.
7. **The 86 list** — the croissants ran out, the cashier takes the item off in one click and it disappears from the storefront.
8. **Tips** — [Tips](/en/docs/tips); presets are filled in from the location's country.
## Checklist: restaurant with a dining room
The goal of day one is that the server, the kitchen and the POS all see the same order.
1. **The floor plan**: rooms, tables, zones — [Floor plan](/en/docs/tables). Without a plan the POS still works, but "table 7" will live only in the server's head.
2. **QR codes on tables** — the code knows its table, so the guest's order arrives already attached to it.
3. **The POS in "tables" mode** — [POS](/en/docs/pos): the order is open on a table, add-ons go into it, the bill is closed at the end.
4. **A kitchen display by station** — [KDS](/en/docs/kds): grill, cold station, bar. An item goes to its station according to the dish setting.
5. **Kitchen printing** (if there will be no screens in the kitchen) — [Kitchen printing](/en/docs/kitchen-printing): tickets by station through the bridge.
6. **Staff and roles** — [Staff](/en/docs/staff). A server needs a login, a cashier needs a PIN: deleting items, discounts and refunds require a manager's confirmation.
7. **The floor panel** — [Floor panel](/en/docs/hall-panel): the plan with open orders, waiter calls, the waitlist.
8. **Table reservations** — [Reservations](/en/docs/reservations), if guests book ahead.
## Checklist: canteen
A canteen is about the speed of the serving line, staff meals and a production plan, not about "a menu with photos". The format already comes with counter mode on the POS, a kiosk and a queue display; reservations are off.
1. **The POS in "counter" mode** — [POS](/en/docs/pos): an item is rung up and paid for immediately, no table is opened.
2. **A menu of the day on a schedule** — [Scheduling and happy hour](/en/docs/scheduled-menus): the set lunch is visible from 12:00 to 15:00 and disappears afterwards on its own. One setting covers the storefront, the POS, the kiosk and the queue display.
3. **Price by weight.** Items priced per kilogram are weighed on the serving line: scales connect through the bridge, the POS opens a weighing dialog and calculates the amount — [Inventory: goods by weight](/en/docs/inventory), [Hardware](/en/docs/hardware-bridge).
4. **"Build your lunch" combos** — combo slots: the guest (or the cashier) picks a soup from one slot and a side from another, and the surcharge is calculated automatically — [QR menu: combos](/en/docs/qr-menu).
5. **An employee account and an employer allowance** — [Corporate accounts](/en/docs/corporate-accounts): the organization, employee accounts, a daily allowance limit, payment at the POS from that account and a spending report for the employer. ⚠️ The section is **off by default** — switch it on in the App Store.
6. **Pre-ordered lunches and a production plan** — [Meal plans](/en/docs/meal-plans): an employee subscribes to lunches by calendar, and you know in advance how many portions to cook. This section is **opt-in** too.
7. **A self-service kiosk and a queue display** — [Kiosk](/en/docs/kiosk): the guest assembles the order themselves and the number goes to the display. It takes the peak off the lunch-hour queue.
8. **Nutrition facts and allergens** — for a canteen nutrition is on by default: calories and portion weight are visible to the guest and printed on the label.
⚠️ Russian regulatory contours — EGAIS, Chestny ZNAK, VetIS (Mercury), 54-FZ — exist only on the Russian brand and appear when the location's country is set to Russia. On other brands they are absent and are not even loaded.
## What can wait
None of this stops you from opening tomorrow.
- **Inventory with recipe cards and cost of goods** — [Inventory](/en/docs/inventory). Set it up once the menu has settled: before that you would be rewriting recipes after every menu change.
- **Financial reports** — [Finance](/en/docs/finance). Sales, purchases, cash shifts and demand analytics are supported on both the international and Russian services. Start using them after recording your first transactions; an empty period and a data-loading error are different situations.
- **Own delivery and couriers** — [Delivery](/en/docs/delivery): switch it on when you actually deliver.
- **Aggregators** (Wolt, Glovo, Yandex Eda, Deliveroo). The integrations are written and verified on mocks, but **there are no live partner connections yet** — you cannot plan day one around them.
- **Online payment on the storefront** — [Payments](/en/docs/payments): the provider registry is large, but live connections number eight; on the Russian brand there is no online payment at the moment. Cash and card at the POS always work.
- **Loyalty, gift cards, newsletters** — once you have regulars.
- **Your own website and domain** — [Venue website](/en/docs/website-builder), [Custom domain](/en/docs/custom-domain).
## Troubleshooting
**I do not see the "POS", "Kitchen" or "Tables" sections.** Either the light preset switched them off at sign-up, or they are not part of your venue type's set (for canteens and fast food, tables are off deliberately). Switch the section you need on in the App Store — [App Store](/en/docs/app-store).
**The import did not bring in the whole menu.** On the free plan there is a limit on the number of items: a batch import does not refuse outright, it loads as many as fit and explains the remainder with a banner. Items that were selected but did not fit stay selected and will arrive after a plan change.
**The POS will not take payment.** No cash shift is open — open one with a float, see [Cash shift](/en/docs/cash-shift).
**The printer does not print.** Check that the bridge on this computer is "connected": without the bridge printing does not work at all. Then — [Cenaly Hardware Bridge](/en/docs/hardware-bridge) and [Kitchen printing](/en/docs/kitchen-printing).
**A guest sees a dish that is not available.** Check the 86 list and the availability schedule — [Scheduling and happy hour](/en/docs/scheduled-menus).
## FAQ
### Do I need to buy hardware to start?
No. The menu opens on the guest's phone, and the POS runs in a browser on any computer or tablet. A printer, scales and a fiscal printer are added later through the bridge.
### How long does launching take?
Sign-up and the first location take minutes. The menu takes as long as the import: the system parses a photo of a paper menu or an Excel file itself, and then you fix prices and photos.
### Can I change the venue type later?
Yes. The type sets defaults — which sections are on and which mode the POS runs in. Both can be changed manually at any time.
### Is a canteen a separate product?
No, it is a venue type. It turns on counter mode on the POS, the kiosk and the queue display, turns off reservations and shows nutrition facts. Employee accounts and meal-plan subscriptions are separate sections switched on with a toggle.
### We have several locations — do we need several accounts?
No. Locations live in one account, each with its own prices, menu and hardware — see [Multi-location](/en/docs/multi-location).
### What if the internet goes down on day one?
The POS will keep ringing up and printing — orders and receipts will reach the cloud once the connection is back. Details: [If the internet goes down](/en/docs/offline).
## Related articles
- [Quick start](/en/docs/getting-started) — sign-up, the first menu and the QR code, step by step
- [Migrate to us](/en/docs/migrate) — importing menu, stock and store from another system
- [POS](/en/docs/pos) — orders, payments, service modes
- [Kitchen display (KDS)](/en/docs/kds) — tickets by station
- [Corporate accounts](/en/docs/corporate-accounts) — staff meals on an account with an allowance
- [Meal plans](/en/docs/meal-plans) — pre-orders and a production plan
- [If the internet goes down](/en/docs/offline) — what works without a connection and what staff should do
---
# First day: retail store
A store at the counter runs on the same platform as a cafe or a salon, but the **"Retail"** business type changes three things: the till works **without tables and without a kitchen display**, the "Menu" section becomes the **"Catalog"** 🛍️, and the item card gains barcodes, stock and a retail price for the price tag.
| Format | How a sale goes at the till | What is on from the start |
|---|---|---|
| **Grocery at the counter** | Scan → weigh → pay | Catalog, till, inventory, labels, finance |
| **Non-food** (clothing, electronics, home goods) | Scan, "size/colour" variants, an open tab "until they try it on" | The same plus collections and product characteristics |
| **Store with an online storefront** | The same plus the orders that arrive from the storefront | The same plus "Commerce" (coupons, shipping, taxes), "Shipments" and "Returns" |
By default a store's till mode is **"Counter"**: the order is assembled (scan, weigh) and paid for right away — there are no tables and no open tabs, the receipt is closed on the spot and the till clears the ticket for the next customer by itself. If the store does need an open tab "until the fitting room", switch the **"POS mode"** segment on the location card to **"Bar"** (a counter with open tabs) or "Floor" — that is the location default, while the mode switch on the cashier's own device is hidden for a store by default (it is enabled in the till appearance settings).
The format is a set of defaults, not a cage: any section can be switched on or off in the [app store](/en/docs/app-store). The "Shipments" and "Returns" sections exist only for a store and an online store — food venues do not have them at all. "Staff", "Devices", "Kitchen display", "Tables" and "Couriers", on the other hand, are off by default for a store: staff is switched on with a toggle once you have employees with their own logins.
---
## What you need to get started
- **Any computer or tablet for the till.** The till is the `/pos` web page in an ordinary browser; it installs "as an app" (PWA) and keeps ringing up sales when the connection drops.
- **A barcode scanner.** Any USB or Bluetooth scanner in "keyboard" (wedge) mode will do: it simply types the code into the active field, and both the till and the item card understand it.
- **A receipt printer — through the bridge.** Receipts, price tags and labels are printed through [Cenaly Hardware Bridge](/en/docs/hardware-bridge) — a Windows or Linux service on the same computer as the till. The bridge finds USB/LAN/Bluetooth devices on its own. A cash drawer is connected to the receipt printer. Without the bridge the till still works — just without paper.
- **Scales** — a must for groceries and unnecessary for everyone else: they connect through the same bridge, the till opens a weighing dialog and computes the amount from the actual weight.
- **A label printer** — if you print labels from a roll rather than on A4 sheets.
- **A fiscal printer** — where the country's law requires it, through the same bridge. What is supported today is in [Fiscalisation](/en/docs/fiscal): Georgia and Bulgaria (Daisy eXpert SX), Poland (POSNET Thermal), Russia (ATOL, Mercury, SHTRIH-M, Pirit) plus the cloud 54-FZ till on cenaly.ru; for the UK, Australia, New Zealand and the UAE — a tax invoice instead of a fiscal receipt.
- **A customer display** — a second screen for the till, optional.
You need the internet, but losing the connection does not stop the till — see [If the internet goes down](/en/docs/offline).
---
## The common frame of the first day
The common steps (sign-up, location, business type, languages, subscription, help) are described in the hub [First day: choose your business type](/en/docs/first-day) — here we only cover what is specific to a store.
1. **Check the location's business type.** "Retail" must be set in the location settings: the till mode, the section labels and the set of fields on the item card all depend on it.
2. **Load the catalog by import, not by hand.** Two paths in "Catalog" → "Import": a plain **CSV in a Shopify-compatible schema** (one row = one variant, a repeat upload is idempotent — you can re-upload stock only) and an **AI import** from Excel, Word, PDF, price-list photos or a website link. The AI shows a plan for confirmation: what will be created, where the duplicates are, which categories to add. In detail — [AI catalog import](/en/docs/catalog-import); moving from another system — [Migrate to us](/en/docs/migrate).
3. **Test the barcodes with a scanner.** Scan a few products at the till and in the inventory card: the code must find the product. An item can have several barcodes, and the import has a toggle "pull the name and brand by barcode" from the global barcode catalog.
4. **Open a cash shift and ring up a test receipt** — [Cash shift and Z-report](/en/docs/cash-shift). Until a shift is open, payment at the till is blocked.
⚠️ If you chose the **light mode** at sign-up, some sections are switched off on top of that — by design, so the sidebar does not overwhelm you in the first hour. Exactly what the light mode hid is listed on the "Currently off" screen in the app store, and it is switched back on there with a toggle.
---
## Checklist: grocery store at the counter
The goal of day one is to ring up receipts by barcode and by weight without doing arithmetic in your head.
1. **A catalog with barcodes** — import as above; the inventory card holds the barcodes (several are allowed), the unit of measure and the purchase price.
2. **Weighed goods.** Set a **PLU** and a weight unit (kg/g/l/ml) on the item card — at the till such an item opens the weighing dialog and computes the amount from the actual weight. Scales connect through the bridge.
3. **Shelf life and storage mode** — fields on the item card; they are also printed on the label together with the date and the barcode.
4. **Price tags and labels** — the "Print labels/price tags" operation in "Inventory": an A4 sheet or a thermal printer through the bridge, a template, a set of fields, a barcode or a QR code. Batch printing — by multi-selecting rows in the stock table.
5. **Repricing** — the "Repricing" operation computes the retail price as "purchase × markup" with rounding; automatic repricing on goods receipt can be switched on.
6. **Goods receipt** — a receipt note by hand, **from a photo or PDF of the supplier invoice** (the AI recognises the lines and prices and matches them against your catalog) or against a purchase order. The reorder point (minimum stock) and the preferred supplier are set on the item card — [Inventory](/en/docs/inventory).
7. **The till** — [POS](/en/docs/pos): scan into the receipt, weighed goods, payment. For a grocery the "Counter" mode is more convenient — pay right away, with no open tab. Risky operations (voiding a line, a discount, a refund, a reprint) are gated by a manager PIN — [Loss control](/en/docs/loss-control).
8. **The fiscal receipt** — if it is mandatory in your country, connect a fiscal printer through the bridge (see the table above). Alcohol, tobacco and marked goods are only handled on the Russian contour: on cenaly.ru there is a marking section and EGAIS, on the other brands these modules do not exist and are not loaded.
**Devices you need:** a PC or tablet, a scanner, a receipt printer and scales through the bridge; a fiscal printer depending on the country.
**What can honestly wait:** recipes and cost of production, stocktaking (the first one is done after a week of trading, not on opening day), the online storefront.
## Checklist: non-food store
The goal of day one is to keep one product in five sizes from becoming five unrelated rows.
1. **Variants instead of duplicated items.** The "Colour", "Size" and "Material" axes: every combination is its own SKU with its own price, barcode and stock. In CSV these are the `Option1..3` and `Variant SKU/Barcode/Price` columns, one row = one variant.
2. **Colour swatches** — if the same product ships as separate cards (by material, say), the storefront shows them as small circles in the category list: a click swaps the photo, the name and the price of the card.
3. **Product characteristics** — the `/features` dictionary: text, a number with a unit of measure, a single choice or multiple choice, an image per option. There is an AI wizard: it looks at your catalog and proposes a set of characteristics with translations. In detail — [Product characteristics](/en/docs/product-features).
4. **Labels** — 29 standard ones out of the box plus your own, with an icon (it can be generated by AI) and translations: [Labels](/en/docs/labels).
5. **Categories and collections** — categories are the catalog structure, collections are storefront groups for marketing: [Product collections](/en/docs/collections). In a store, collections also work at the till as carriers of schedules and promotions: a collection rule applies to an item and changes its availability and price right in the till grid.
6. **Product photos.** Several shots with captions, a "hover photo", AI-generated product shots on a white background and AI card completion with the ✨ button.
7. **The till and refunds** — [POS](/en/docs/pos) and the receipt register: a full or partial refund, an exchange, store credit as a gift card — [Receipts, refunds and exchanges](/en/docs/receipts).
**Devices you need:** a PC or tablet, a scanner, a receipt printer; no scales.
**What can honestly wait:** characteristics across the whole catalog at once (start with one category), your own domain, advertising feeds.
## Checklist: store with an online storefront
The location has a storefront right after sign-up — a page on the brand domain with the catalog, prices and order taking. Day one here is about making sure it does not lie.
1. **Switch on storefront publishing** and check it on a phone: categories, photos, prices, faceted filters, search. The design is edited in the live visual editor in the "Websites" section (`/websites`); for locations of the "Retail" type the **Store Studio** design hub opens there as well.
2. **Fulfilment methods** — "Commerce" (`/commerce`): pickup, a flat rate, free above a threshold, local delivery by radius, zones and carriers. Coupons, tax rules and gift cards live there too: [Commerce](/en/docs/commerce).
3. **The item's tax class** — chosen on the card from the preset of the location's country (64 jurisdictions); the same selector has a "+ New tax group…" item that asks for the details (name, rate or exemption, channels, locations) and creates the group in the location's tax table, so that tax by it is actually calculated. The tax table works on the storefront and at checkout, while the till computes taxes its own way.
4. **Payment** — hosted payment by a provider for your country, or payment at the counter on collection: [Payments](/en/docs/payments).
5. **Shipments** — the `/shipments` queue: the "To ship / In transit / Completed" baskets, bulk label creation (for CDEK, Trackings.GE and Exline), an A4 handover register, and a "returned" mark that puts the goods back into stock.
6. **Customer returns** — [Returns and exchanges (RMA)](/en/docs/returns): request → decision → money (to the original payment method, as store credit, or an exchange).
7. **Your own domain and SEO** — once the storefront is filled: [Custom domain](/en/docs/custom-domain), [SEO and storefront promotion](/en/docs/seo).
**Devices you need:** nothing beyond the till kit — the storefront lives on the customer's phone.
**What can honestly wait:** product feeds and advertising, the customer account, abandoned carts — they make sense once the catalog is complete and the prices are verified.
---
## What can wait
None of this stops you from opening tomorrow.
- **Recipes and cost of goods** — [Inventory](/en/docs/inventory). A counter store needs them only if it produces something (baking, salads, repacking).
- **Financial reports** — [Finance](/en/docs/finance). Sales, purchases, cash shifts and demand analytics are supported on both the international and Russian services. Start using them after recording your first transactions; an empty period and a data-loading error are different situations.
- **A loyalty programme** — [Loyalty](/en/docs/loyalty): points are earned on a till sale only if the receipt carries the customer's phone number.
- **Newsletters and advertising feeds** — Google Merchant Center, Meta, Yandex Products and others: [Google Product Feed](/en/docs/google-feed), [Yandex Products](/en/docs/yandex-goods).
- **A website beyond the storefront** — [Website builder](/en/docs/website-builder); widgets for an existing site — [My website](/en/docs/site-widgets).
- **Staff with roles** — [Staff and shifts](/en/docs/staff): on day one the owner usually runs the till.
---
## Limitations worth knowing up front
- **There is no batch tracking with shelf life (FEFO).** Shelf life is a field on the item card and a line on the label; "first to expire, first out" write-offs and per-batch warnings are planned but do not work.
- **Demand forecasting and expiry control are separate tools.** Demand analytics are supported on both services. Expiry tracking is a separate option; it does not imply quantity-based FEFO batches or automatic ordering through every supplier channel.
- **Receipts and product returns are different workflows.** The receipt register supports both services. The separate RMA section for online-store return requests remains limited to the international service.
- **There is no mobile stocktaking with a phone scanner** — the count sheet is filled in on a computer or on the till tablet.
- **Label printers speaking TSPL and ZPL are implemented from the specification but have not been verified on live hardware** — if that is your printer, test printing before buying rolls.
- **There are no stock reservations:** two customers can order the last item at the same time. The server will not let them pay for what is gone, but it cannot "hold" an item during checkout.
---
## Troubleshooting
**The scanner does not add the item to the receipt.** Check that the scanner works in keyboard (wedge) mode and that the cursor is in the till search field, and that this barcode really is recorded on the inventory card.
**The till will not accept payment.** No cash shift is open — open one with a float, see [Cash shift](/en/docs/cash-shift).
**A weighed item is rung up by the piece.** The card has no PLU and no weight unit — set them in [Inventory](/en/docs/inventory).
**The printer does not print price tags.** Without the bridge printing does not work at all: make sure the bridge on this computer is "connected" — [Cenaly Hardware Bridge](/en/docs/hardware-bridge).
**The import did not load all the products.** The free plan has an item limit: a bulk import does not fail entirely — it loads as much as fits and explains the remainder in a banner.
**The item card has no marking or alcohol fields.** They appear only for a location with the country "Russia" on the `cenaly.ru` brand — on the other brands these modules are not loaded.
---
## FAQ
### Do I have to buy a special till?
No. The till is a browser page on any computer or tablet. A scanner, scales, a printer and a fiscal printer are added through the bridge and bought as you need them.
### Can I run a store and a cafe in one account?
Yes. The business type is a property of the location, not of the account: one location can be "Retail" and another "Cafe", each with its own sections.
### The products are already in Excel — do I re-type them?
No. A plain CSV is loaded in a Shopify-compatible schema, while Excel, PDF, price-list photos and a website link are parsed by the AI import, which shows a plan for confirmation — [AI catalog import](/en/docs/catalog-import).
### Does the customer see the exact stock level?
The storefront shows an availability badge ("only a few left" / "N left"), not the stock table. The server will not let anyone pay for what is gone.
### Is an online storefront mandatory?
No. A store can trade at the counter only: the storefront always exists, but you do not have to publish it.
### We have several stores — do we need several accounts?
No. Locations live in one account, each with its own prices, stock and hardware — see [Managing a chain](/en/docs/multi-location).
---
## Related articles
- [First day: choose your business type](/en/docs/first-day) — the common steps and the other formats
- [Online store: storefront and sales](/en/docs/shop) — catalog, facets, product page, checkout
- [Inventory](/en/docs/inventory) — stock, goods receipt, stocktaking, labels and price tags
- [POS](/en/docs/pos) — counter mode, scanning, weighed goods, payment
- [AI catalog import](/en/docs/catalog-import) — a price list from Excel, PDF, a photo or a website
- [Hardware (bridge)](/en/docs/hardware-bridge) — scanner, scales, printers, fiscal printer
- [Fiscalisation](/en/docs/fiscal) — what is supported by country
- [First day: online store](/en/docs/getting-started-ecommerce) — if your sales are mostly online
---
# First day: salon, barbershop, studio
A beauty salon, a barbershop and a studio (nails, massage, cosmetology, laser) all work on the same screen — the **appointment book**: a grid of "specialists × time" for the selected day. What differs is not the features but the number of columns in that grid and what counts as a "specialist" — a person or a workplace.
The business type is chosen at sign-up and immediately tunes the panel for appointments:
| Format | Business type | POS mode | What is on from the start |
|---|---|---|---|
| **Salon with several specialists** | beauty salon | pay right away (no table is opened) | Appointments, POS, consumables inventory, staff, finance |
| **Barbershop / single specialist** | beauty salon | the same | The same — just one column in the grid |
| **Studio with resources** (room, chair, device) | beauty salon or appointment services | pay right away / counter | For "appointment services": appointments, staff, finance, clients; POS and inventory are off by default |
For the **beauty salon** type, **tables, the kitchen display, couriers and the "Hardware" section are switched off on purpose** — this business does not need them. The wording changes too: "service" instead of "dish", "client" instead of "guest", "chair" instead of "table".
> The **"appointment services"** type (studios, tutors, service centres) uses the **same** appointment book and the same slot engine, only with neutral words — "office" and "branch" instead of "chair" and "zone". There is no separate product behind it, and that is honest: see [First day: services and B2B](/en/docs/getting-started-services).
Open the book: **Admin panel → Appointments** (`admin.cenaly.com/appointments`).
---
## What you need to get started
You do not need to buy equipment to start booking clients.
- **Any computer or tablet for the appointment book.** The book is an ordinary admin-panel page in a browser; the grid refreshes itself without a reload, so an appointment made by a client or a colleague shows up immediately.
- **The client's phone.** Online booking opens in a browser — the client installs nothing. The booking widget speaks 45 languages and picks up the language of the page.
- **A till — optional.** The POS is a `/pos` page in the browser: it installs "as an app" (PWA) and keeps working when the connection drops — [POS](/en/docs/pos), [If the internet goes down](/en/docs/offline). A dedicated POS appliance is not required.
- **A receipt printer — through the bridge.** Printing goes through **Cenaly Hardware Bridge**, a Windows or Linux service on the same computer that runs the POS ([Cenaly Hardware Bridge](/en/docs/hardware-bridge)). ⚠️ For a salon the "Hardware" section is off by default — switch it on in the [App Store](/en/docs/app-store), otherwise there is nowhere to connect the bridge.
- **A fiscal printer** — where the law of the country requires it, through the same bridge. Live fiscal receipts today are Russia (54-FZ) and tax invoices for the UK, Australia, New Zealand and the UAE; for other countries see [Fiscalization](/en/docs/fiscal).
- **Online card payments — only if you need deposits.** A deposit requirement appears for the client only when a live payment provider is connected for the country and currency of your location — [Payments](/en/docs/payments).
---
## The common frame of the first day
Sign-up, the location, the business type, languages and the subscription are the same for every format — they are described in the hub [First day: choose your business type](/en/docs/first-day). The salon-specific part starts here.
⚠️ If you chose the **light mode** at sign-up, some sections are deliberately switched off. The final step of the wizard says so out loud, and any section can be brought back with a toggle in the [App Store](/en/docs/app-store).
---
## Checklist: a salon with several specialists
The goal of day one is for the receptionist to run the day in the book, not in a paper diary.
1. **Services in the catalog.** For a salon the catalog section is called "Services": name, price and **duration** — the duration is filled into the appointment automatically. The service also carries the buffer after the visit (cleaning the workplace), how many clients it takes at once, which specialists may perform it, its own deposit rule and "repeat after N days". Without at least one service item, online booking will not work.
2. **Specialists.** The **"Specialists"** button in the book opens the register. A specialist is an employee from the shared [staff directory](/en/docs/staff) with the specialist job role; **a login is not required** — you can add a "resource employee" that exists only as a column in the schedule. An owner who is assigned the specialist job role also gets a column.
3. **Schedules.** For each specialist: colour in the grid, active flag, list of services, weekly schedule, **daily breaks** (lunch), **holiday and sick leave** (date ranges) and **one-off days** for a specific date — a day off or special hours. A one-off day overrides the weekly schedule.
4. **Booking hours of the location.** The gear icon in the book header → **"Appointment settings"**: online booking hours from and to. This is the outer frame for all specialists at once.
5. **The first appointment by hand.** The "New appointment" button: client, phone, service, specialist, date and time, comment. The book will not let you book "into nowhere" — it checks both the location hours and the specialist's schedule.
6. **Visit statuses.** There are six: new → confirmed → in the chair → completed, plus cancelled and no-show. The "in the chair" and "no-show" marks become available no earlier than 15 minutes before the start.
7. **Online booking.** The client books themselves on your storefront, on your own website (the "Online booking" widget — [My website](/en/docs/site-widgets)) and in the location's Telegram bot. All appointments land in one book; those that came from a website carry a "from the site" badge.
8. **Reminders and confirmation.** Telegram sends the confirmation and reminders 24 and 2 hours ahead with "I'll come" and "Cancel" buttons (the windows are configured in the "Guest journey" block, and quiet hours from 23:00 to 07:00 are respected). If the client left an e-mail, a confirmation letter goes out with a "Manage appointment" link. Details — [Appointment book](/en/docs/appointments).
9. **Front-desk roles.** The receptionist job role is enough for the front desk, the specialist role for masters: an employee sees only their own workspace — [Staff and shifts](/en/docs/staff).
10. **Till and shift.** If you take payment yourself: open the shift with the float — without an open shift payment on the till is blocked ([Cash shift and Z-report](/en/docs/cash-shift)). Tips with presets by country — [Tips](/en/docs/tips).
**What you need in terms of devices:** a computer or tablet for the book; a till, a printer and a card terminal only if you take payment on site.
**What can honestly wait:** consumables inventory, financial reports, memberships, campaigns, your own website.
---
## Checklist: a barbershop or a single specialist
One column in the grid is not a "stripped-down salon" but the fastest launch: you are 20 minutes away from taking bookings.
1. **One service and one specialist make the wizard shorter.** If there is a single service in the catalog, the client goes straight to picking a time; if a single suitable specialist matches, they are assigned automatically. The **"⚡ Earliest: today 17:30"** chip removes the day-by-day search.
2. **Add yourself as a specialist too.** The owner only needs to assign themselves the specialist job role — the column appears, no second account required.
3. **A booking landing link.** The widget tag accepts a preselected service and specialist and can open the panel right away — that turns a link in a social-media bio into a "booking page". A stale identifier does not break the widget: it quietly returns the client to the normal first step. Attributes — [My website](/en/docs/site-widgets).
4. **Notifications that do not let an appointment slip.** The 🔔 in the book header works **only while the page is open**. So the very first thing to set up is Telegram alerts — the button sits right in the book and opens the wizard in a modal without taking you to another section.
5. **A deposit against no-shows.** "Appointment settings" switch on the policy: a fixed amount or a percentage of the service and the number of free-cancellation hours. The slot is held for a limited time: if the deposit is not paid, the appointment cancels itself with the reason "deposit not paid in time" and the time goes back on sale. Rescheduling keeps the deposit.
6. **Visit marks.** "Guest confirmed" is a separate mark (including the "Confirmed by phone" button when you reached them yourself); "in the chair" and "no-show" are statuses. No-shows accumulate on the client card.
7. **Payment and the receipt.** The till in the browser, the shift and tips — as in the previous checklist.
**What you need in terms of devices:** a phone or a tablet is enough.
**What can honestly wait:** roles and staff (you are alone), inventory, finance, memberships.
---
## Checklist: a studio with resources
A studio can require a specialist, a room and a device at the same time.
**People and physical resources have separate directories.**
1. **Add specialists** with their services and working hours. A specialist may have no login if another employee manages the schedule.
2. **Add rooms and equipment** as resources, with their availability and breaks. Do not create a device as a fictitious employee.
3. **Set resource requirements for each service.** Booking checks the specialist and the required room or device together, including buffers. Test a conflicting booking before opening online availability. A service's capacity alone is not a complete group-class workflow with enrolment, attendance and billing.
4. **If the words "specialist" and "chair" do not fit** — choose the **"appointment services"** business type: the book, the slots and the widget are the same, but the labels are neutral ("office", "branch"). For that type the till and inventory are off by default, while the client directory is on right away.
5. **Memberships.** The "🎟️ Memberships" button — service packages of three kinds: a pack of N visits, a prepaid wallet and a subscription with recurring top-ups. Issuing a membership to a client and deducting visits happen there too.
6. **Waiting list.** When a day is fully booked, the client taps "Notify me if a slot opens" (an e-mail is required) and gets a message when a window opens. The request holds nothing, and the client is told so before sending.
7. **A client base from day one.** A client card with history and a **"Repeat the previous appointment"** link — the form opens pre-filled from the last visit — [Clients](/en/docs/customers).
**What you need in terms of devices:** a computer at the front desk; a tablet in the room is optional.
**What can honestly wait:** till and inventory (if payment happens outside the system), finance, campaigns.
---
## What can wait
None of this stops you from taking your first client tomorrow.
- **Consumables inventory** — [Inventory](/en/docs/inventory). Set it up once the price list has settled: before that, write-offs would have to be rewritten after every service change.
- **Financial reports** — [Finance](/en/docs/finance). Sales, purchases, cash shifts and demand analytics are supported on both the international and Russian services. Start using them after recording your first transactions; an empty period and a data-loading error are different situations.
- **Appointment autopilot.** The widget funnel ("how many clients saw the button and how many booked"), the "time to repeat the service" nudges and the "how did it go?" survey are a paid extension on top of the free book. The booking button itself and the book are free forever.
- **Scheduled follow-ups and surveys.** Lifecycle campaigns run on both services. Enable the location's autopilot and each required campaign; available notification channels and consent requirements still apply.
- **Campaigns and mailings** — [Engagement campaigns](/en/docs/campaigns), once you have regular clients.
- **Your own website and domain** — [Website builder](/en/docs/website-builder), [Custom domain](/en/docs/custom-domain). Salons have their own templates in the gallery.
- **Recurring card charges for memberships** — switched on separately; start with visit packs and the wallet.
- **A phone blacklist** — there is none. "Frequent no-shows" are visible on the client card, but a "do not book" list does not exist yet.
---
## Troubleshooting
**There is no "Appointments" section in the panel.** The book is available only to the **"beauty salon"** and **"appointment services"** business types — a hard rule that no toggle bypasses. Check the business type in the location settings; if the type is right, switch the section on in the [App Store](/en/docs/app-store).
**There is no "Book" button on my website.** In order: there is not a single service item in the catalog; booking is switched off for the location; the tag was not found (press "Check installation" in [My website](/en/docs/site-widgets)); the changes have not arrived yet — widget files are served with a 5-minute cache; the button was deliberately suppressed by the multi-button if its fan contains a "Book" item.
**The client sees no free time.** Free slots are calculated by the system from the specialist's schedule, breaks, one-off days and holidays, the service duration with its buffer and the location's "online booking hours". You cannot "open" a busy slot by hand — change one of those settings.
**The client is not asked for a deposit.** The deposit requirement is shown only when a live online payment provider is connected for the country and currency of the location — [Payments](/en/docs/payments).
**Repeat-visit messages are not arriving.** Enable the location's marketing autopilot and the relevant campaign, then check the customer's contact, consent and eligibility. Lifecycle campaigns support both services; messages are scheduled, not sent immediately when a setting changes.
**The time in the grid does not match what the client booked.** The client picks the **venue's** time (the widget labels the time zone), while the book grid is drawn in the time zone of the receptionist's device. If you open the book from another time zone, check the location's time zone in its settings.
---
## FAQ
### Do I need to buy equipment to start booking?
No. The book opens in a browser, the client books from their own phone. A till, a printer and a terminal come later and only if you take payment on site.
### Can I add a specialist without an account and a password?
Yes. A "resource employee" exists only as a column in the grid: name, colour, services, schedule. A login is needed only for people who sign in to the panel themselves.
### How do I close a day or part of a day for a specialist?
Lunch — "Daily breaks", a specific date — "One-off days" (a day off or special hours), a long period — "Holiday and sick leave". The hours of the whole location are changed in "Appointment settings".
### Can two clients book the same time with the same specialist?
No. The time is locked at the moment the appointment is created: the second client gets an honest "the slot has just been taken" and the grid immediately refreshes.
### How does "beauty salon" differ from "appointment services"?
Only in the wording in the interface and in the set of sections switched on: the appointment book, the slots, the widget and the reminders are shared. The salon version says "specialist" and "chair" and switches on the till with inventory; the neutral one says "office" and "branch" and switches on the client directory.
### Does booking work on the Russian brand?
Yes: appointments, online booking, reminders, financial reports and lifecycle campaigns support both services. Payment and notification options depend on the location's providers and settings.
---
## Related articles
- [First day: choose your business type](/en/docs/first-day) — the common frame and the other formats
- [Appointment book](/en/docs/appointments) — the grid, statuses, deposits, memberships, reminders
- [My website](/en/docs/site-widgets) — the online booking widget for your own website
- [Staff and shifts](/en/docs/staff) — specialists, roles, workspaces
- [Clients](/en/docs/customers) — the client card, history, "repeat the previous appointment"
- [POS](/en/docs/pos) — paying for a service and the shift
- [First day: services and B2B](/en/docs/getting-started-services) — when appointments are not enough and you need invoices
---
# First day: hotel, guesthouse
A hotel, a guesthouse, apartments and a hostel all run on the **built-in PMS**: floors instead of dining halls, rooms and beds instead of tables, a **folio** (the guest bill) instead of a one-off receipt. This is not a separate product but a profile of location settings: with the "hotel" business type the panel switches the wording and opens the right sections itself.
| Format | How you sell | What is on from the start |
|---|---|---|
| **Small hotel / guesthouse** | walk-in check-in and date reservations | Rooms, POS, kitchen display, inventory, staff, finance, hardware |
| **Apartments** | date reservations, selling a room type against a quota, OTA calendars | The same |
| **Hotel with a restaurant** | the same plus room service by QR and "charge to room" | The same, plus a menu for guests |
**Where to open it:** the **"Rooms"** section is the same section as "Floor plan" in a restaurant (`admin.cenaly.com/tables`), renamed for hotels. It opens in the floor-plan editor; **the working room board is switched on with the "🛏️ Rooms" button** in the header, and the same button takes you back to the plan. Next to it are "Room types", "Rates", "🔌 PMS" and, for Russian locations, "🛂 Migration registration". There is no separate `/hotel` or `/pms` address in the panel — do not look for one.
> The hotel vertical is a **working core with open tails**: the PMS, rates, folios, the booking engine and calendar exchange with OTAs are in production, while a live two-way channel manager and connectors to external PMS systems are not. That is flagged honestly below.
---
## What you need to get started
- **Any computer or tablet at the front desk.** The room board, the reservation grid and check-in are ordinary admin-panel pages in a browser. No dedicated hotel terminal is needed.
- **The guest's phone.** A QR code in the room opens the menu, service requests and "My bill" in a browser — the guest installs nothing.
- **A receipt printer — optional, through the bridge.** Printing goes through **Cenaly Hardware Bridge**, a Windows or Linux service ([Cenaly Hardware Bridge](/en/docs/hardware-bridge)). ⚠️ Note: **check-out does not issue a fiscal receipt** — it closes the folio with a settlement; a receipt, if required, is rung up separately on the till.
- **Online card payments — not for day one.** At the direct booking step on the website **no prepayment is collected**; payment happens at your end. Card payments become relevant later, for storefront orders — [Payments](/en/docs/payments).
- **Internet.** Required, but losing the connection does not stop the till — [If the internet goes down](/en/docs/offline).
---
## The common frame of the first day
Sign-up, the location, the business type, languages and the subscription are the same for every format — they are described in the hub [First day: choose your business type](/en/docs/first-day). The hotel part starts here.
---
## Checklist: a small hotel and a guesthouse
The goal of day one is to check a guest in inside the system and see their bill.
1. **Floors and rooms.** The plan editor works like a floor plan ([Floor plan](/en/docs/tables)), except halls are called floors and the elements are "Room" and "Bed" (for hostels and shared dorms). You do not have to add them one by one: the **"+ Add rooms"** button creates a range (for example 201–230, up to 500 rooms at a time) with an optional prefix, a live count of "N rooms · M floors" and a list of numbers that already exist and will be skipped. The onboarding wizard offers the same step when you choose the "hotel" type.
2. **Room types.** The "Room types" button: name (Standard, Deluxe…), base nightly rate and capacity. A type is assigned to a room in the properties panel on the plan, and its rate is pre-filled into the check-in form — on a particular stay you can override it.
3. **The location's time zone — check it now.** The accommodation charge is posted automatically **after 03:00 local time for your location**; if the time zone is wrong, the night "moves" to another part of the day. The time zone lives in the location settings.
4. **Tourist tax**, if it applies to you: a percentage of the rate with a minimum per night, or a fixed amount per night. It is posted to the folio as a separate line.
5. **The first check-in.** The form asks for the rate plan and the nightly price (pre-filled from the room type) and the **guest card**: phone, e-mail, ID document, citizenship, date of birth, notes. A departure date is not required at this step — a walk-in stay is open until check-out, and dates belong to the reservation. If the guest has stayed before, the system shows a "returning guest" banner. Checking in opens the **folio**.
6. **What accumulates in the folio.** Every night stayed (the arrival day is not charged twice), the tourist tax, orders placed from the room by QR, and manual operations on the till against the room bill: a charge, a service fee, a discount, a deposit, moving items between bills. The balance is visible on the room card and in the list of open bills on the [till](/en/docs/pos).
7. **Check-out.** It closes the folio with a single settlement and moves the room to "Needs cleaning"; a "Clean room N after departure" task appears on the [shift task board](/en/docs/tasks). ⚠️ A room bill is closed **by the front desk at check-out** — the till has no close button for room bills.
8. **Room statuses** — six of them: vacant, occupied, needs cleaning, cleaning, inspected, out of order. Future arrivals are not reflected in the room status: they live as reservations and are visible on the grid, so a room booked for next week stays sellable today.
9. **The reservation grid.** A view switch on the same page — a 21-day calendar with bars for reservations and current stays per room. You can create a booking without opening it: pick the room on the floor plan — its properties carry the **"Room bookings"** block and a **"📅 Book the room"** button that opens the same date-based form. A room booking is always a pair of dates, **one night minimum**; a room has no hourly booking the way a restaurant table does — neither on the "Floor plan" page nor in the hall panel at the till. Checking in by a booking happens in one window: the **"Check in"** button on the rooms board, in the reservations list and in the hall panel at the till opens the same check-in window. Early check-in and late check-out, once turned on in **"Room types" → "Check-in and check-out"**, are ticked right in the booking form — see [Hotel](/en/docs/hotel).
10. **Roles.** The front desk gets the receptionist job role, the cleaner the housekeeper role (whose workspace has no till): [Staff and shifts](/en/docs/staff).
**What you need in terms of devices:** one computer at the desk.
**What can honestly wait:** rate plans and the price calendar, sales channels, reports, migration registration (if your guests are local only).
**Both services support the PMS, nightly accommodation charges and inbound iCal calendars.** Set the hotel's time zone and check calendar synchronization. Payment providers, live OTA connections and recently introduced screens have separate availability conditions.
---
## Checklist: apartments and selling through channels
The goal of day one is to make sure the same dates are not sold twice.
1. **Rate plans.** A manager next to the room-type directory: board (room only, breakfast, half board, all inclusive), derived rates ("breakfast = base +15%"), pricing by number of guests with child age buckets and an extra bed, day-of-week surcharges, sale restrictions (minimum and maximum nights, booking window, no arrival or departure on certain days), a cancellation policy (flexible, non-refundable, first-night penalty, percentage or fixed), sales channels (all / direct only / OTA only) and a corporate access code.
2. **The price and stop-sale calendar.** A price and a sale block for specific dates, bulk editing "rate × period", a preview of the final price. ⚠️ **The calendar overrides a negotiated price entered at the front desk** — that is intended; and for a rate plan with its own price, seasons do not apply at all (seasons are the fallback for those who do not use plans).
3. **Seasonality — the simple level.** If plans are not needed yet: periods with a separate price for a room type or for all rooms at once.
4. **Selling a room type rather than a specific unit.** Such reservations stay unassigned and hold a quota (how many rooms of that type are sold for a date), and the physical room is picked with the assign button — manually or automatically. The block of unassigned reservations sits right above the grid.
5. **The booking engine on your website.** The guest picks dates and a rate, sees the calculation with restriction checks (minimum nights, booking window, stop-sale; a single reservation is capped at 30 nights) and receives a **confirmation code**. The server answers synchronously: it either confirms the reservation and locks a free room, or refuses honestly with a reason. There is no waiting for staff confirmation, and no prepayment is collected.
6. **OTA calendars — today's working path.** **iCal import**: paste an export link from Booking.com, Airbnb or another service into the room settings — external reservations start blocking those dates for you, refreshed roughly every 15 minutes, and conflicting overlaps are collected into a "sort out manually" list. **iCal export**: every room has its own feed, and the link is added as a calendar on the channel's side.
7. ⚠️ **The two-way channel manager** (rates and availability pushed to channels, reservations coming back) is written and runs **on the provider's test environment**: a live connection needs a partner account, which we do not have yet. For real date blocking in channels use iCal import and export.
8. **Letters to the guest.** Once a day the hotel writes to those **arriving tomorrow** and those who **departed yesterday**; the language is the reservation's, otherwise the location's, otherwise English. Nothing to configure, and no duplicates. If the location has a Telegram bot connected, the guest also gets arrival reminders.
9. **Manual reservations.** A reservation has a source (front desk, phone, direct from the guest, website, OTA), cancellation with a reason and a "no-show" mark; on an overlap or a too-early arrival the panel warns you. Turning a reservation into a stay is a single action on the arrival date.
**What you need in terms of devices:** a computer; a phone to see the booking flow through a guest's eyes.
**What can honestly wait:** the two-way channel manager (see above), corporate rate codes, reports.
---
## Checklist: a hotel with a restaurant and room service
The goal of day one is for a room order to land on the guest's bill by itself.
1. **A QR code per room.** The room card has a **"Create QR and attach"** button; in bulk it is **"Create QR for all rooms without a code (N)"** across the location. Print them one by one or as A4 sheets — [Table QR codes and device codes](/en/docs/device-codes).
2. **A menu for the rooms.** Categories, items, photos, languages — [QR menu](/en/docs/qr-menu). The guest scans the code in the room and orders just like at a table.
3. **"Charge to room".** In an occupied room this payment method is available to the guest: the amount is added to the folio and paid at check-out together with the stay; before confirming, the guest sees a consent text with the exact amount and the room number. ⚠️ The rule is narrow and deliberate: **only orders from the in-room QR code land on the folio** — anything rung up on the till, in the kiosk or arriving from an aggregator will not.
4. **An order from a vacant room is blocked** by the server with the reason "room is not checked in", and the guest sees a warning before sending.
5. **Guest service requests.** Towels, cleaning, "do not disturb", a wake-up call with a chosen time, a technical problem, other. In a hotel this button takes the place of the staff call and is shown only when "staff call" is enabled in the location settings; a request cannot be placed from a vacant room. On the staff side there is a **"Guest requests"** block on the room card: a counter, a list with the type and the wake-up time, the "In progress" and "Done" actions, updates in real time.
6. **"My bill" for the guest.** An item in the guest menu: charges, payments and the balance of their folio. Before check-in it shows an empty state, after settlement a "Paid" mark.
7. **Kitchen and restaurant till.** A kitchen display by stations — [KDS](/en/docs/kds); the till and the shift — [POS](/en/docs/pos) and [Cash shift](/en/docs/cash-shift). For a hotel these sections are on from the start.
8. **Reports.** A reports tab on the room board for a period: occupancy, average daily rate (ADR), revenue per available room (RevPAR), total revenue and revenue from food and drinks separately, the number of orders and a day-by-day table broken down by currency.
**What you need in terms of devices:** a computer at the desk, a tablet or a monitor for the kitchen display, a printer through the bridge if you print tickets.
**What can honestly wait:** the self-service kiosk, delivery and takeaway, aggregators.
---
## What can wait
- **External PMS mode** (the "🔌 PMS" button). The switching contour exists, but the adapter list currently contains **only the demonstration "Mock (demo)"** one — it is there to verify the path itself. Live connectors are in development; switching a working hotel over is premature.
- **The two-way channel manager** — awaits the provider's partner account and runs on the test environment. Use iCal.
- **Migration registration (Russia).** The "🛂" button on the room board: a record is created automatically at check-in, deadlines and statuses are visible, notification forms are printed and a CSV is exported. It is important to understand: this is **a register and printable forms, not electronic filing** — filing stays with you. It is enabled by the location country "Russia".
- **Food service at the hotel** — [Room service and guest folios](/en/docs/hotel). Meal-plan subscriptions belong to food-service business types; they are not a default hotel feature.
- **Financial reports** — [Finance](/en/docs/finance). Sales, purchases, cash shifts and demand analytics are supported on both the international and Russian services. Start using them after recording your first transactions; an empty period and a data-loading error are different situations.
- **Your own website and domain** — [Website builder](/en/docs/website-builder) (hotels have their own templates in the gallery), [Custom domain](/en/docs/custom-domain).
- **Your own PBX and calls** — [Telephony](/en/docs/telephony).
- **Restaurant inventory and food cost** — [Inventory](/en/docs/inventory), once the menu has settled.
---
## Troubleshooting
**I cannot find a "PMS" or "Hotel" section.** There is no such address. Everything lives in the **"Rooms"** section (`admin.cenaly.com/tables`): the floor plan opens right away, the working board is behind the "🛏️ Rooms" button, external PMS behind the "🔌 PMS" button. If the section is called "Floor plan", the location does not have the "hotel" business type selected.
**A night was not charged.** Check the hotel's time zone, stay dates, room rate and guest folio. The nightly process runs after 03:00 local hotel time on both services. A delayed or failed charge needs investigation; changing the brand is not a remedy.
**A guest cannot order from the room.** Most likely the room is not checked in: the server cancels such orders with the reason "room is not checked in". Check that the stay is open and that the QR code is attached to that exact room.
**An order did not land on the room bill.** Only orders made from the **in-room QR code** go to the folio. Anything rung up on the till, in the kiosk or arriving from an aggregator does not — that is a deliberate rule.
**The room bill will not close on the till.** That is intended: a room bill is closed by the front desk at check-out, and the till has no close button for it.
**Dates are not blocked on Booking.com or Airbnb.** Verify both calendar links and the latest synchronization. iCal import and export work on both services and exchange occupied dates, not rates. Live channel-manager connections require separate activation; the test environment does not distribute your inventory to real channels.
**A guest received the same email twice.** Check the reservation and delivery history. Failed delivery is retried; a failure after the email service accepted the message can produce a duplicate.
---
## FAQ
### Do I need to buy hotel equipment?
No. The front desk works in a browser, the guest uses their own phone with a QR code. A printer and a fiscal printer come later through the bridge and only if you need them.
### Do I have to add rooms one by one?
No. The "+ Add rooms" button creates a range of up to 500 rooms at a time with a prefix and a live count; existing numbers are skipped rather than duplicated.
### Is a departure date required at check-in?
No. A walk-in stay is open until check-out; arrival and departure dates belong to a reservation, and an early departure automatically shortens the reservation to the actual stay.
### Is a fiscal receipt issued at check-out?
No. Check-out closes the folio with a settlement and moves the room to cleaning; fiscalization is not built into that path — a receipt, if required, is rung up on the till.
### Can I sell a "room type" without choosing a specific room?
Yes. Such a reservation stays unassigned and holds a quota for that type on the date, and the room is picked at check-in — manually or automatically.
### What parts of the hotel contour do not work on the Russian brand?
The PMS, room reservations, guest cards, nightly charges, iCal exchange and financial dashboards support both services. Check payment-provider and external-channel availability separately.
---
## Related articles
- [First day: choose your business type](/en/docs/first-day) — the common frame and the other formats
- [Hotel: rooms, PMS and guest service](/en/docs/hotel) — the full guide to the vertical
- [Floor plan](/en/docs/tables) — the editor for floors and rooms, QR attachment
- [Table reservations](/en/docs/reservations) — the same booking mechanism applied to tables
- [QR menu](/en/docs/qr-menu) — the menu for room service
- [POS](/en/docs/pos) — the room bill on the till and extra orders
- [Staff and shifts](/en/docs/staff) — front desk, housekeeping, cleaning tasks
---
# First day: online store
An online store on the platform is a location's storefront that behaves like a shop rather than a menu: a catalog with variants, faceted filters, a product page, a cart, checkout with coupons and taxes, delivery and payment collection. The **"Online store"** business type is chosen at sign-up or changed later in the location settings.
| Format | Where day one starts | What to look at first |
|---|---|---|
| **A catalog from a file or another store** | Import the catalog → check the storefront → domain | Card completeness, duplicates, category trees |
| **Online only / dropshipping** | Storefront → payment → carrier | Shipping and payment methods, order rules |
| **Selling through feeds and marketplaces** | A complete catalog → feeds into ad accounts | Photo, price, barcode (GTIN), product URL |
**What is on from the start:** the catalog, "Websites" (the storefront and its design), inventory, couriers, customers, staff, finance, "Commerce", "Shipments" and "Returns". The till for an online store is **off by default** — if you switch it on, it looks its own way rather than "like a restaurant's"; tables, the kitchen display and "Devices" are off too. The "Shipments" and "Returns" sections exist only for a store and an online store — food venues do not have them at all.
---
## What you need to get started
An online store needs no hardware on day one — it needs a computer and a catalog.
- **Any computer** to work in the panel. The storefront lives on the customer's phone; they do not install an app.
- **A file with your products** — Excel, CSV, a PDF price list, price-list photos or a link to a site that already has your catalog.
- **Product photos.** If you have none, the card can be completed by AI: a product shot on a white background is generated from the name, and the description and tags come from the ✨ button in the card editor.
- **Payment credentials** — access to your country's payment provider account if you want to accept online payments on day one. Otherwise start with "pay on collection".
- **A printer** — only once shipments appear: carrier labels and the handover register print on an ordinary printer. A receipt printer and a fiscal printer are needed if the store also has an offline counter — then see [First day: retail store](/en/docs/getting-started-retail).
---
## The common frame of the first day
The common steps (sign-up, location, business type, languages, subscription, help) are described in the hub [First day: choose your business type](/en/docs/first-day). What follows is specific to selling online.
1. **Check the location's business type.** "Online store" switches the storefront into shop mode: a catalog and product pages like `/product/name` instead of a conversational menu, and product markup for search engines instead of a restaurant menu.
2. **Load the catalog by import** (see the checklists below) — there is no need to type cards in by hand.
3. **Look at the storefront as a customer.** Open it on a phone: categories, photos, prices, filters, search, the product page, the cart. What the customer sees is the source of truth for orders and shipments.
4. **Set up "Commerce"** (`/commerce`): shipping methods, tax rules, coupons. An empty tax table is pre-filled from the preset of the location's country — but it only takes effect after you press "Save".
5. **Walk the whole customer path yourself** — from the product page to payment and the order email. That is the only check that catches a forgotten shipping method or tax.
⚠️ If you chose the **light mode** at sign-up, some sections are switched off. Exactly which ones is listed on the "Currently off" screen in the [app store](/en/docs/app-store).
---
## Checklist: a catalog from a file or another store
The goal of day one is to move your range without typing and without breeding duplicates.
1. **Choose the import path.** A plain **CSV in a Shopify-compatible schema** (one row = one variant; the variant id is deterministic, so a repeat upload does not create duplicates, and an unmapped column does not wipe a field); an **AI import** from Excel, Word, PDF or price-list photos; or a **site crawl** — "the whole catalog by sitemap" (up to 20,000 items, with an ETA and a "Stop the crawl" button) or a single listing page. There is a toggle for transferring photos.
2. **Review the plan before committing.** The AI import shows the items with checkboxes: you can edit the name, price and category inline, duplicates against the current catalog and inside the import itself are flagged, and category trees are created from paths like "Clothing > Men > Shirts".
3. **Moving from an existing store** — the [Migrate to us](/en/docs/migrate) wizard: an InSales or Shopify export, plus a separate "Stock" track (the dictionary and a goods receipt with purchase prices). There are no direct connectors into other admin panels — we work from exports.
4. **Variants and characteristics.** The "Colour / Size / Material" axes give every combination its own SKU with its own price, barcode and stock; the attributes for faceted filters come from the characteristics dictionary with its AI wizard: [Product characteristics](/en/docs/product-features).
5. **Categories and collections** — categories are the structure, [collections](/en/docs/collections) are storefront groups for marketing.
6. **Catalog export** into the same CSV — in case you want to keep the price list in an external file.
**Devices you need:** a computer only.
**What can honestly wait:** characteristics across the whole catalog (start with the one category you will filter by), editorial blocks on the cards, your own domain.
## Checklist: online only and dropshipping
The goal of day one is for an order to be payable and handed over to a carrier.
1. **Storefront design** — the "Websites" section (`/websites`): a live visual editor for the design (logo, cover, colours, font), the location's WEB settings, the site's articles and pages.
2. **Shipping methods** — "Commerce" → "Shipping": pickup, a flat rate, free above a threshold, local delivery by radius from the warehouse, zone-based rates, carrier adapters (their rate is computed by the carrier itself). The first block of that tab holds the map zones of your own courier delivery: if the buyer's address falls inside a zone, the zone sets the price, not the methods from the list.
3. **Carriers and their credentials** — the "Carriers" dialog in the shipments queue or in the location's WEB settings: cards for the carriers of the location's country (CDEK, Russian Post, Yandex Delivery, 5Post, ApiShip, Trackings.GE, Exline, Kazpost, Nova Poshta), sender fields, private credentials and a "Test connection" button — the answer is honestly marked as live or as a sandbox.
4. **Payment** — [Payments](/en/docs/payments): hosted payment by a provider for your country (Stripe, PayPal, Square, Airwallex, PayTabs, iyzico, BOG and TBC in Georgia) or payment on collection. ⚠️ Eight of the 76 providers in the registry are live — check that yours is there before you announce the store.
5. **Order rules** — minimum, step and maximum quantity per item, personalisation fields (engraving, an inscription), a blocklist and a cap on unpaid orders, a "storefront closed" mode with your own text: [Online store](/en/docs/shop).
6. **Customer notifications** — the order email and the tracking email go out automatically; a tracking number can be entered by hand if the delivery does not go through our engine.
7. **Stock accounting is optional.** Dropshipping does not need it: items without stock accounting are sold without an availability check. If you do need it — [Inventory](/en/docs/inventory).
**Devices you need:** a computer; a printer once labels appear.
**What can honestly wait:** the customer account and the wishlist, gift cards, the affiliate programme.
## Checklist: selling through feeds and marketplaces
The goal of day one is to understand what exactly will travel into the ad account — and to keep empty cards out of it.
1. **Card completeness comes first.** The feed carries the name, description, photo, price, availability, brand, barcode (GTIN) and category. A product without a photo and a price will be rejected by the platform — the completeness indicator in the editor shows what is missing.
2. **Connect the feed with a card in the app store.** The platform generates a public feed itself and refreshes it whenever a card is edited; you paste the link into the ad account once: [Google Merchant Center](/en/docs/google-feed), [Yandex Products](/en/docs/yandex-goods), [Meta](/en/docs/meta-feed), [Criteo](/en/docs/criteo-feed), [Pinterest](/en/docs/pinterest-feed), [Microsoft](/en/docs/microsoft-feed), [TikTok](/en/docs/tiktok-feed).
3. **Mind the country limits on the cards.** The Google card is hidden if no location in the account is on a Google market (the extension is unavailable in Russia, Cuba, Iran, North Korea and Syria); the Yandex Products card is shown only to accounts with locations in Russia.
4. **Remember that a feed is not a marketplace.** There are no orders inside Google, Yandex or Meta: the customer follows the link to your storefront and orders there. So the storefront, payment and delivery must be ready **before** you launch a feed.
5. **SEO and a domain** — so that a click from the feed lands on a decent address: [Custom domain](/en/docs/custom-domain), [SEO and storefront promotion](/en/docs/seo).
6. **Marketplaces as an order channel.** The app store holds a catalog of the world's product marketplaces — it answers the question "who will accept a seller in my country and under which exchange model". There is currently no live connection that brings a marketplace order into your panel, so plan your sales around your own storefront.
**Devices you need:** a computer only.
**What can honestly wait:** everything except one feed. Start with the platform where you already buy advertising.
---
## What can wait
- **Your own domain** — [Custom domain](/en/docs/custom-domain): the storefront works on the brand domain straight away.
- **The customer account, the wishlist, "notify me when back in stock"** — switch them on later; the value appears with repeat purchases.
- **Gift cards and coupons** — [Commerce](/en/docs/commerce): needed for your first sale, not your first order.
- **The affiliate programme and referral links** — in the same section.
- **Popups and abandoned carts** — [My website](/en/docs/site-widgets). Lifecycle campaigns and abandoned-cart recovery support both services. Enable the relevant campaign and check customer consent and contact details; this does not imply parity for advertising or content autopilots.
- **RMA returns** — [Returns and exchanges](/en/docs/returns): not needed on day one, but the setup takes minutes.
- **Reviews, reputation and newsletters** — once the first orders are fulfilled.
---
## Limitations worth knowing up front
The online store vertical works, but it has honest loose ends — plan around them.
- **There are no stock reservations.** Two customers can order the last item at the same time: the server will not let them pay for what is gone (and will show which lines fell short), but it cannot "hold" an item during checkout.
- **On `cenaly.ru` there is effectively no online payment.** YooKassa is implemented but not connected; the customer pays on collection or through the acquiring bank's link.
- **`/returns` (RMA) are unavailable on `cenaly.ru`** — the section is hidden and the storefront has no "request a return" button. A till refund and an order cancellation do not depend on it.
- **Not every carrier prints labels** — only CDEK, Trackings.GE and Exline; for the rest the adapter only quotes a rate and you take the label from the carrier's own account.
- **The shipments queue is built from the last 300 rows** — when it is truncated, a note is printed under the list.
- **Store Studio opens only for locations of the "Retail" type.** An online store is designed with the visual editor and the WEB settings in the "Websites" section.
- **There is no bulk catalog editor and no product analytics yet** — edits go card by card or through a repeat CSV import.
---
## Troubleshooting
**The products loaded but the storefront is empty.** Check that storefront publishing is on in the location settings, that the products are published (the `Published` column in CSV) and that the categories contain products.
**The customer cannot place an order.** Most likely no shipping method is set, or the "storefront closed" mode is on — both live in "Commerce" and in the storefront settings.
**The checkout total does not match the catalog.** The line price is computed on the server: if the catalog changed, the customer is returned to the cart with a new total. Check whether the price changed during checkout.
**Payment does not start although the item is "in stock".** Before payment the server compares the cart against stock and shows which lines fell short. Check the stock levels in [Inventory](/en/docs/inventory).
**The feed is connected but the platform rejects the products.** The usual causes are a missing photo, a missing price, a missing GTIN, or a link to an unreachable page. See the requirements section in your feed's own article.
**The order went to the carrier but there is no tracking number.** Not every adapter can print a label (see the limitations) — enter the tracking number by hand in the "Shipment" block of the order card.
---
## FAQ
### Do I need a separate account if I already have an offline store?
No. The business type is a property of the location: the offline location can be "Retail" while online sales run from the same or a separate location in the same account.
### Can I move a catalog from another website?
Yes, the AI import can crawl a site by its sitemap or parse a listing page. Only move your own data and your own photos — someone else's catalog and photos must not be copied.
### Is a product in five colours five products?
Whichever suits you. Variants of one product (the "Colour/Size" axes) live in a single card, while separate colour cards are shown on the storefront as swatch circles that swap the photo and the price on click.
### Do I have to accept online payments?
No. "Pay on collection" always works; online payment is connected through your country's provider when you are ready.
### Does semantic search work on a small catalog?
Yes. In a store, semantic search and the AI shopping assistant are on regardless of catalog size.
### What happens to orders if the connection drops?
The storefront and checkout live in the cloud: the customer simply cannot place an order until the connection is back. Only the till works offline — see [If the internet goes down](/en/docs/offline).
---
## Related articles
- [First day: choose your business type](/en/docs/first-day) — the common steps and the other formats
- [Online store: storefront and sales](/en/docs/shop) — catalog, facets, product page and checkout in full
- [Commerce](/en/docs/commerce) — coupons, shipping, taxes, gift cards, affiliates
- [AI catalog import](/en/docs/catalog-import) — a price list from Excel, PDF, a photo or a website
- [Migrate to us](/en/docs/migrate) — exports from InSales, Shopify and other systems
- [Returns and exchanges (RMA)](/en/docs/returns) — the customer's request, the decision, the money
- [SEO and storefront promotion](/en/docs/seo) · [Custom domain](/en/docs/custom-domain)
- [First day: retail store](/en/docs/getting-started-retail) — if you also have a counter
---
# First day: pickup point
A pickup point is a separate operating model: the entity here is not an order but a **parcel**, and it has its own path — "announced → received → sitting in a cell → handed out or returned". The **"Pickup point"** 📦 business type is chosen at sign-up: the onboarding does not ask about menus or kitchens, and the **"Parcels"** section (`/parcels`) is open from the start, without switching anything on in the app store.
The section is six tabs: **Receiving · Storage · Handover · Returns · Carriers · Settlements**.
| Format | What you set up on day one | What to look at first |
|---|---|---|
| **A single-carrier pickup point** | One carrier, a storage period, the cell layout | Receiving a batch and the first handover |
| **Multi-carrier** | Several carriers, each with its own handover rules and fee | The default carrier and the settlements per carrier |
| **A pickup point inside a store** | Parcels plus the store's catalog, stock and storefront | Keeping transit money apart from revenue |
**What is on from the start:** "Parcels", the till in counter mode (pay right away), "Hardware" (scanner, printer, terminal — the core of pickup point operations), staff and finance. Inventory, the kitchen display, tables, couriers and the marketplace are off: the store sections, if you need them, are switched on in the [app store](/en/docs/app-store). The wording changes too: a "place" is a cell, a "place group" is a rack, and a "guest" is a recipient.
---
## What you need to get started
- **A computer or tablet** for receiving and handover — the section runs in a browser. The till (needed for cash on delivery) is the same `/pos` web page.
- **A barcode scanner** — the main tool of a pickup point. Any USB or Bluetooth scanner in "keyboard" mode will do: you scan tracking numbers when receiving, cells during stocktaking and the parcel itself at handover.
- **A printer for cell labels** — an ordinary one or a thermal printer through the [bridge](/en/docs/hardware-bridge). Labels are printed once receiving is closed.
- **A receipt printer or a fiscal printer** — if you accept cash on delivery and your country requires a receipt. It connects through the same bridge; what is supported by country is in [Fiscalisation](/en/docs/fiscal).
- **A card terminal** — if you accept cash on delivery by card: the bridge's terminal charges the amount, or the payment is confirmed manually.
- **Racks with sensible numbering.** The cell layout in the system mirrors the physical one: rack → shelf → position (a code like `A-2-05`). Label the shelves before your first receiving — relabelling later costs more.
---
## The common frame of the first day
The common steps (sign-up, location, business type, languages, subscription, help) are described in the hub [First day: choose your business type](/en/docs/first-day). For a pickup point the order is this:
1. **Fill in the location's address.** Without an address with coordinates the location cannot be published in the Cenaly pickup network, and the recipient will not see where to go.
2. **Add a carrier** — the "Carriers" tab: name, type (CDEK, Post, 5Post, Yandex, Boxberry, Ozon, WB, Cenaly or custom), storage period, whether cash on delivery is allowed, whether an ID is required at handover, your fee per parcel and percentage of COD, and the **agency scheme** (agent, commission agent or payment agent — it determines how the money is accounted for).
3. **Draw the cells** — in the same tab, the layout editor: the number of racks, shelves and cells per shelf. On receiving, a cell is assigned automatically — the first free one.
4. **Run a trial receiving and a trial handover** on one real parcel. That is the only check that catches both an unlabelled shelf and the wrong scanner mode.
5. **Open a cash shift** — [Cash shift](/en/docs/cash-shift). Cash on delivery cannot be accepted without an open shift: the handover screen will offer to open one.
---
## Checklist: a single-carrier pickup point
The goal of day one is to receive the delivered batch and hand out the first parcel without holding up the queue.
1. **The source of arrivals.** Decide how parcels get into the system: **importing the carrier's manifest** (CSV/XLSX, the columns are guessed automatically, there is a CDEK preset) or **receiving by scan** — an unannounced parcel is created by the system itself, and the missing data (phone, amount, sender) is filled in later on the card in the "Storage" tab.
2. **Receiving a batch** — the "Receiving" tab: you scan the tracking numbers and the matches are highlighted. On completion a **receiving report** is produced, broken down into "matched / created on the spot / did not arrive / skipped", and cell labels are printed.
3. **The handover rule.** The carrier record defines recipient verification: checking an ID, the code from the waybill, a one-time code by SMS or email, or no check. An ID requirement overrides the other rules.
4. **Handover** — the "Handover" tab: search by tracking number or by **exactly the last four digits** of the phone number, verification, and a control scan of the parcel out of the cell (skipping the scan is possible only deliberately, with a confirmation, and it stays in the parcel's log).
5. **Cash on delivery** — cash with change calculation, a card through the bridge's terminal, or a split between both. The receipt is issued with an agent flag: the goods supplier is the sending online shop, not your point. If the till cannot handle agency fields, the handover can still go through — you mark "receipt issued on an external till".
6. **Storage periods and reminders.** The period is set on the carrier; the recipient gets a reminder in advance, and once the period expires the parcel moves to "to be returned" by itself.
7. **Returning to the carrier** — the "Returns" tab: one button builds a register of everything awaiting return; printing the register moves those parcels to "returned".
**Devices you need:** a PC or tablet, a scanner, a label printer; a till with a receipt printer if there is cash on delivery.
**What can honestly wait:** publishing in the Cenaly pickup network, API keys for shops, settlements (they are computed for you and matter at month's end).
## Checklist: multi-carrier
The goal of day one is to keep one carrier's rules from being applied to another carrier's parcels.
1. **Add every carrier** as a separate record: each has its own storage period, ID requirement, cash-on-delivery permission and fee. The agency scheme is also set per carrier.
2. **The default carrier** is the one a parcel scanned "outside a manifest" will be created under. Choose deliberately: this is the most common source of confusion at the start.
3. **The cells are shared.** There is one cell layout per location, and parcels from different carriers sit in the same pool; the "Storage" tab has a carrier filter.
4. **Handing out "everything at once".** If a recipient has several parcels, the screen shows them together (siblings) and offers to hand out all the prepaid ones with one button — even if they are from different carriers.
5. **Settlements** — the "Settlements" tab: month by month and carrier by carrier, parcels handed out, cash on delivery collected, your fee and the amount payable; CSV export. The split of cash on delivery into cash and card lives in the cash shift report.
6. **Stocktaking** — a full scan of the cells: it shows what was found, what is missing and what is extra. Missing parcels are marked as lost row by row with the button on each row, or all at once with the "Mark all missing as lost (N)" button and a single confirmation.
7. **Staff and roles** — [Staff and shifts](/en/docs/staff): a handover operator does not need access to settlements or carrier settings.
**Devices you need:** the same as for a single carrier.
**What can honestly wait:** fine-tuning roles (on day one the owner usually works the counter), custom carrier types beyond the built-in list.
## Checklist: a pickup point inside a store
The goal of day one is to keep parcels and store goods from mixing in one till.
1. **Parcels as the main contour** — the "Parcels" section is already open; the carrier and cell setup is the same as above.
2. **Switch on the store sections** in the [app store](/en/docs/app-store): catalog, inventory, storefront. Their checklist is [First day: retail store](/en/docs/getting-started-retail).
3. **One till, two kinds of money.** Cash on delivery is **transit money**: it belongs to the sender minus your fee, and in the shift's X/Z report it is counted on a separate line without mixing with the store's revenue. At the same time the cash that physically landed in the drawer is included in the expected till balance — [Cash shift](/en/docs/cash-shift).
4. **A quick jump to handover.** For a pickup point the till header carries a "Go to handover" button — the cashier does not hunt for the section.
5. **The Cenaly pickup network** — the "Carriers" tab: a toggle to publish the location, permission for cash on delivery, the point's code. Once published, orders from platform shops with "deliver to your pickup point" arrive on their own, with no file and no scan.
6. **API announcements** — if parcels are announced by your own online shop or a partner, issue them an API key on the same tab (it is shown once).
**Devices you need:** the store's till kit plus a scanner and a label printer for parcels.
**What can honestly wait:** the online storefront and the store's feeds — get handover running first, it brings the footfall.
---
## What can wait
- **Publishing in the Cenaly pickup network** — once receiving and handover are running smoothly.
- **API keys for principal shops** — needed only by those who announce parcels programmatically.
- **Custom wording for recipient notifications** — the basic arrival notice, the storage reminder and the handover message work out of the box.
- **The location's finance and statistics** — there is nothing to count without a history of handovers.
- **Staff with their own logins** — [Staff and shifts](/en/docs/staff): on day one the owner usually works alone.
---
## Limitations worth knowing up front
The vertical works, but it has honest loose ends — plan around them.
- **There is no partial handover.** A parcel is handed out or returned only in full: trying items on and buying part of the contents is not supported.
- **We have no ready-made connections into carriers' internal systems.** Parcels are created by importing a manifest, by scanning, or by an announcement through our API — the reverse direction (us reading the carrier's system) is not implemented.
- **This does not replace the Wildberries, Ozon and Yandex Market apps.** Those platforms run closed partner networks with their own software and their own fiscalisation — our till takes no part in those settlements.
- **Statuses after a stocktake are changed by the operator, not by the system.** Missing parcels can be marked as lost row by row or all at once, but the server never reclassifies anything from the stocktake by itself — it stays a deliberate, confirmed action.
- **The return register is also the handover record.** There is no separate "the courier collected it" step: printing the register moves the parcels to "returned".
---
## Troubleshooting
**The scanner does not find the parcel when receiving.** Check the scanner mode (it must act as a keyboard) and that the cursor is in the scan field. If the tracking number is not in the manifest, that is normal: the system will create the parcel under the default carrier and mark it as unannounced.
**The system will not give up a cell when reassigning.** It will not release an occupied cell — free it first or pick a vacant one on the occupancy map.
**The recipient is not getting the one-time code.** The code goes by SMS or to the email recorded on the parcel card: check whether the contact is filled in (for parcels created by scan it is often empty). Resending is available after a timeout.
**Cash on delivery cannot be accepted.** No cash shift is open — the handover screen will offer to open one, see [Cash shift](/en/docs/cash-shift).
**The till will not print an agency receipt.** The screen honestly warns that the till cannot handle agency fields. The handover can still go through if you mark "receipt issued on an external till" — the parcel's log keeps the record that fiscalisation was external.
**The recipient cannot check the parcel status.** The public tracking page asks for the tracking number and **exactly the last four digits** of the phone number — if the phone is not filled in on the card, the check will fail.
---
## FAQ
### Do I need an integration with a courier company to start?
No. Importing a manifest or receiving by scan is enough. If the sender is willing to announce parcels themselves, issue them an API key — then the parcels appear automatically.
### Is cash on delivery my revenue?
No. It is the sender's transit money: in the shift report and in finance it is kept apart from the location's sales, and your fee is calculated on the "Settlements" tab.
### What if the recipient never comes?
Once the storage period set on the carrier expires, the parcel moves to "to be returned" by itself, and the recipient gets a reminder in advance. After that you build a return register.
### Can I hand out one parcel out of several?
Yes, parcels are handed out one by one, and all prepaid ones can be handed out with a single button. But part of the contents of one parcel cannot be handed out.
### Can a pickup point and a store share one location?
Yes — see the third checklist. Cash on delivery and the store's revenue are not mixed in the reports.
### Is a fiscal printer mandatory?
It depends on the country and on whether you accept cash on delivery. If a receipt is required, it connects through the bridge; see [Fiscalisation](/en/docs/fiscal).
---
## Related articles
- [First day: choose your business type](/en/docs/first-day) — the common steps and the other formats
- [Pickup point](/en/docs/pickup-point) — the whole "Parcels" section tab by tab
- [Cash shift and Z-report](/en/docs/cash-shift) — where cash on delivery is kept apart from revenue
- [Hardware (bridge)](/en/docs/hardware-bridge) — scanner, label printer, terminal, fiscal printer
- [Staff and shifts](/en/docs/staff) — roles for handover operators
- [First day: retail store](/en/docs/getting-started-retail) — if the point also sells goods
---
# First day: services and B2B
In a service business a client arrives along one of two paths: they either **book a time** (a studio, a tutor, a workshop, a service centre) or **leave a request**, after which come the conversation, the quote and the invoice (an agency, lawyers, accountants, consulting, contracting). Which path is your main one decides both the business type and the first-day checklist.
| Format | Business type | Client path | What is on from the start |
|---|---|---|---|
| **Booking a service** (studio, tutor, service centre, massage) | appointment services | service → free slot → visit | Appointments, staff, finance, clients |
| **B2B and professional services** (agency, lawyers, accountants, contracting) | professional services | request → lead → invoice → closing documents | Staff, finance, clients, documents, websites |
Appointments and B2B share platform modules. Booking has its own model for specialists, rooms, equipment, series and multi-service visits; B2B combines counterparties, documents and settlements. Clinics use the administrative Clinic preset, while recurring student groups use Education. Repair work orders and hourly project billing remain separate limitations below.
> "Appointment services" speaks in neutral words — "office" and "branch" instead of "chair" and "zone" — while "professional services" has the appointment book switched off: what they need is not a slot but a request.
---
## What you need to get started
- **Any computer with a browser.** Both the appointment book and a counterparty card with an invoice are ordinary admin-panel pages. Nothing to install.
- **The client's phone** — if you take online bookings or website requests: both booking and forms open in a browser.
- **Your own website is not required.** A location has a public page on a subdomain; if you already have a site, the widgets go on it with a single line of code — [My website](/en/docs/site-widgets).
- **A till and a printer — optional.** If you take payment on site, the POS is a `/pos` page in the browser ([POS](/en/docs/pos)) and printing goes through the [Cenaly Hardware Bridge](/en/docs/hardware-bridge). For both service business types the **till is off by default** — switch it on in the [App Store](/en/docs/app-store).
- **Online card payments — only for specific jobs**: a deposit at online booking and paying an invoice by link. A deposit requirement is shown to the client only when a live payment provider is connected for the country and currency of the location — [Payments](/en/docs/payments).
---
## The common frame of the first day
Sign-up, the location, the business type, languages and the subscription are the same for every format — they are described in the hub [First day: choose your business type](/en/docs/first-day). Then pick your checklist.
---
## Checklist: booking a service
For a studio, a tutor, a workshop, a service centre — anyone whose client occupies a specialist's or a room's time. The working screen is **Admin panel → Appointments** (`admin.cenaly.com/appointments`).
1. **Services in the catalog.** Name, price and **duration** — the duration is filled into the appointment. The same card holds the buffer after the visit, how many clients the service takes at once (group classes), which specialists may perform it, its own deposit rule and "repeat after N days". Without at least one service item online booking is not shown.
2. **Specialists and resources.** Add specialists to [Staff](/en/docs/staff), with services and working hours; a login is optional. Create rooms and equipment separately as booking resources, then specify each service's resource requirements. Booking checks the specialist, room and equipment together.
3. **Schedules.** Weekly schedule, daily breaks, holiday and sick leave, one-off days for a specific date (a day off or special hours). A one-off day overrides the weekly schedule.
4. **Booking hours.** The gear icon in the book → "Appointment settings": the frame of hours for the whole location at once.
5. **The first appointment by hand** and a walk through the statuses: new → confirmed → "in the chair" → completed, plus cancelled and no-show. Visit marks become available no earlier than 15 minutes before the start.
6. **Online booking.** On your storefront, with a widget on your website and in the location's Telegram bot. The widget accepts a preselected service and specialist — that is how you get a landing link for a specific offering. All appointments flow into one book; those from a website carry a badge.
7. **Reminders.** Telegram: confirmation and reminders 24 and 2 hours ahead with "I'll come" and "Cancel" buttons; e-mail: a confirmation letter with a "Manage appointment" link (rescheduling and cancelling without a password or an app). Details — [Appointment book](/en/docs/appointments).
8. **All requests in one list.** The **"Requests"** section (`admin.cenaly.com/leads`) collects online bookings, callbacks, website form submissions and pop-up answers into a single stream — with a period, search, an "unprocessed only" filter and a CSV export. The section is **read-only**: the status is changed in the source section, there is no second truth about it. The same panel also lives as the "Requests" tab of the contact centre — [Chat with guests](/en/docs/chat).
9. **Clients.** A client card with visit history and a "Repeat the previous appointment" link — [Clients](/en/docs/customers). For "appointment services" the directory is on from the start.
10. **Memberships** — service packages: N visits, a prepaid wallet or a subscription with recurring top-ups. The "🎟️ Memberships" button in the book.
**What you need in terms of devices:** a computer or a tablet. That is all.
**What can honestly wait:** till and inventory, financial reports, deposits, campaigns, a custom domain.
---
## Checklist: B2B — request, invoice, documents
For an agency, a lawyer, an accountant, a contractor — anyone whose deal lives in correspondence and is closed with documents. The working screen is **Admin panel → Venue → "Companies and invoices"** (`admin.cenaly.com/counterparties`).
1. **Your seller details first.** The **"Seller details"** tab: the legal entity (there can be several), bank accounts, signatories, the letterhead, e-mails and phones. Without this the invoice comes out without your side of the deal.
2. **The first counterparty card.** An individual or an organisation — one card type. The set of registration details and their validation (format, checksums) is filled in **by country**: dedicated profiles exist for Georgia, Russia, Kazakhstan, the United Kingdom, Australia, New Zealand, the UAE, Cyprus, Greece, Spain, Portugal, Croatia, Poland, Romania and Turkey — fifteen in total, plus a fallback for every other country. Bank fields are country-specific too (IBAN, sort code, BSB, settlement account with a bank code). The country is picked from the full directory.
3. **Contacts and an owner.** Contact persons with roles and channels (phone, e-mail, Telegram, WhatsApp) and the "primary" and "document recipient" flags; an account manager from the staff directory with a server-side "Mine" filter.
4. **A catalog of services with prices.** Document lines are taken from the catalog — the price, tax and discount are filled in by the document, not typed by hand.
5. **The first sale.** The **"Sale"** button walks you through: **quote → invoice → closing documents**. Document types and names, the numbering mask, the VAT mode and the amount in words come from the country profile. A finished document: PDF, sending by e-mail, voiding with a reason.
6. **A contract.** A four-step wizard: template → parties and signatories → terms (payment delay, credit limit, prepayment and discount percentages, minimum order, validity) → preview. Then a draft, issuing, a "signed" mark with a scan upload, termination. Active terms are shown as a banner in the card header.
7. **Settlements.** Balance, overdue amount and the oldest due date, the ledger of operations, adding a payment, allocating payments to documents — by queue or precisely to a specific invoice, with a rollback. Location reports: receivables ageing, the payments register, the shipments register — all with a CSV export.
8. **Business documents.** The **"Documents"** section (`admin.cenaly.com/documents`) is the second, non-accounting contour: free-form text documents with page layout, headers, footers and page numbers, spreadsheets "like Excel", uploaded files, a full-text search, templates with substitution, validity dates with reminders and employee acknowledgements. Details — [Documents](/en/docs/documents).
9. **Website and requests.** The public page of the location or your own site with widgets: a contact form, a callback, chat, pop-ups with a form and a quiz — [Website builder](/en/docs/website-builder), [My website](/en/docs/site-widgets), [Callback](/en/docs/callback), [Engagement campaigns](/en/docs/campaigns). All of it flows into "Requests", and each request shows where it came from: the surface, the page, campaign tags, the referral class and the device.
10. **AI parsing of a request.** A pasted e-mail, a call transcript or a PDF turns into a **draft** sale: counterparty, lines from the catalog, terms — with a confidence score per line. The model works only from your own data: anything not found in the catalog and the cards goes to "unrecognised" plus a task for the manager. Issuing a document along this path is impossible — only a draft.
11. **Access.** ⚠️ "Companies and invoices" is an **owner-only** section: an employee with their own login will be refused. Plan for that if sales are not handled by the owner.
**What you need in terms of devices:** a computer. A printer only if you print invoices on paper.
**What can honestly wait:** bank statements, recurring invoices, dunning, e-invoicing, the till.
---
## What a service business does not have yet
A straight list so that you do not look for a button that is not there.
| What is missing | What you have instead |
|---|---|
| Time tracking and hourly billing | a service with a price in the catalog and an invoice after the fact |
| Project accounting (projects, phases, project profitability) | tasks on the counterparty card and the shift task board |
| A service-centre work order: diagnostics, spare parts, repair statuses | an appointment and documents for the deal |
| A status of its own for an entry in "Requests" | the status comes from the source — the reservation, the appointment, the call mark |
---
## What can wait
- **Bank statements** — uploading a statement for your settlement account with operation parsing and matching to counterparties; needed once payments become numerous.
- **Recurring invoices** — an issuing schedule, a log, a pause; for retainer contracts.
- **Reminders and dunning** — a digest, overdue letters, expiring quotes and contracts.
- **E-invoicing.** For Russian locations there is document exchange through Saby (SBIS): incoming documents become CRM documents, your own invoice is pushed to Saby, and signing stays there. It is connected with a card in the App Store.
- **KSeF** (Polish e-invoices) — Poland only and on the AWS contour only: on `cenaly.ru` the panel is not mounted.
- **AI filling of document templates** — works on the AWS contour; on the Russian brand the AI buttons in the document editor are hidden.
- **Financial reports** — [Finance](/en/docs/finance). Sales, purchases, cash shifts and demand analytics are supported on both the international and Russian services. Start using them after recording your first transactions; an empty period and a data-loading error are different situations.
- **Your own PBX and call recordings** — [Telephony](/en/docs/telephony): a call from a matched number lands in the counterparty card's activity feed by itself.
- **A custom domain** — [Custom domain](/en/docs/custom-domain).
---
## Troubleshooting
**The Appointments section is missing.** The appointment book is available for Beauty salon, Appointment services and Education. Check the location's business type, section settings and employee permissions. Professional services uses the B2B workflow; choose Appointment services when booking is central to your work.
**An employee cannot open "Companies and invoices".** That is intended: the section is available to the account owner only. What remains for an employee is "Requests", "Clients" and "Documents" within their role — [Staff and shifts](/en/docs/staff).
**The invoice comes out without seller details.** Fill in the "Seller details" tab: the legal entity, a bank account, a signatory. The details are captured into the document snapshot at the moment of issuing.
**Counterparty details are not validated.** That means the chosen country has no profile of its own, and the card falls back to the generic rule: free-form fields, no checksums.
**A yellow banner in "Requests" says rows may be missing.** One of the channels did not answer the read (for example, an extension is not connected). That is an honest warning rather than an empty list: requests from the other channels are still there.
**AI parsing produced the wrong draft.** The model does not invent: it matches the text against your catalog and your cards. Check that the service exists in the catalog and the counterparty in the directory; anything unrecognised arrives as a task for the manager.
---
## FAQ
### Are services and B2B a separate product?
They are business profiles built on shared modules. Appointment services includes specialists, rooms and equipment, while B2B uses counterparties, documents and settlements. A profile does not imply medical records, repair work orders or hourly project billing.
### Can I run both appointments and invoices at once?
Yes. The business type only sets defaults: choose "appointment services" and switch on "Documents" and "Companies and invoices" — the latter is on by default for every type anyway.
### Who can issue an invoice?
Only the account owner: the "Companies and invoices" section is available to them alone.
### In which countries will the document forms work?
Dedicated sets of registration details, document names, numbering masks and VAT modes exist for fifteen countries; for the rest a fallback profile applies — the document will be issued, but without country-specific validation.
### Can an invoice be paid online?
Payment by link is supported, and the payment receipt feeds the location's automation. You need a payment provider connected for your country and currency — [Payments](/en/docs/payments).
### Does all of this work on the Russian brand?
Appointments, requests, counterparties, documents, settlements, financial reports and lifecycle campaigns support the Russian service. KSeF and AI document-filling options have their own cloud restrictions; check the relevant module before enabling them.
---
## Related articles
- [First day: choose your business type](/en/docs/first-day) — the common frame and the other formats
- [Appointment book](/en/docs/appointments) — slots, statuses, reminders, memberships
- [Clients (CRM)](/en/docs/counterparties) — cards, invoices, contracts, settlements
- [Documents](/en/docs/documents) — templates, files and spreadsheets, validity and acknowledgements
- [Clients](/en/docs/customers) — the client directory and the history of enquiries
- [My website](/en/docs/site-widgets) — forms, chat and callback on your own site
- [First day: salon, barbershop, studio](/en/docs/getting-started-beauty) — when booking is the main client path
---
# How to get help
The panel offers four different routes to an answer, and they do not duplicate each other. Start at the top of the table: the higher the row, the faster the answer.
| Where | When it fits | How long you wait |
|---|---|---|
| **The AI assistant in the panel** | “Where is this setting?”, “what does this toggle do?”, “do I need a receipt in my country?” | Instantly |
| **This help centre** | Step-by-step instructions, connecting hardware, diagnosis by symptom | Instantly |
| **The section tour and setup wizard** | “I have just signed up and do not know where to start” | Instantly |
| **Support (`support@cenaly.com`)** | Something is broken, data went out of sync, a question about an invoice or a plan | A reply by e-mail to the account address |
---
## The AI assistant in the panel
The assistant lives on the `/voice` page and as a floating button over any section — the dialogue survives navigation. It does not only execute commands (“put this item on the stop list”, “create an extension number”), it also **answers questions about the system itself**: what a section is, where a setting lives, where your data is stored.
Why its answers are more precise than a generic search:
- **It knows where you are.** The open section travels with your question (“Context: Menu”), so “where do I switch this on” is answered about your screen.
- **It knows your country and business type.** The assistant receives the country and the vertical of each of your locations and tailors the answer: a Russian location gets 54-FZ, a Georgian one gets rs.ge and 18 % VAT. If a location has no country set, it will ask.
- **It knows your hardware.** Opened from the POS, the assistant receives a snapshot of the connected equipment — fiscal device model, paper status, an unclosed receipt, printers, scanner, scales, terminal — and explains **your** model even if you did not name it.
- **The ✨ spark next to a block heading.** Complex settings carry a micro-button with a spark next to the heading: it opens the assistant with the context of that exact block — what the setting does, what it risks and what it is called in the panel.
The assistant can hand you a setting as a link: an address like `?settings=` opens the right setting as a modal over the current window — such a link can be shared with a colleague.
⚠️ The assistant is not a channel to humans. If it cannot carry out a request and it looks like a malfunction, it will **offer by itself** to send a report to the developers, pre-filled with your own words.
---
## Help centre, section tour and setup wizard
- **The help centre** is this part of the site. Diagnosis by symptom — [Troubleshooting](/en/docs/troubleshooting), short answers — [FAQ](/en/docs/faq), unfamiliar words — [Glossary](/en/docs/glossary).
- **The section tour** and the **setup wizard** are restarted by the buttons in the header of the **Settings** section (`/settings`) — the same screens you saw after signing up. Useful when a new administrator takes the system over.
- **First day by business type** — [First day](/en/docs/first-day): what to switch on right away for your format and what can honestly wait.
Do not confuse this with the **Support centre** ([help-center](/en/docs/help-center)) — that is your public knowledge base **for guests and customers**, not a channel to us.
---
## Contacting support
The request form opens in two ways:
1. **The “🛟 Contact support” button** at the bottom of the AI assistant panel — available from any page.
2. **By voice or text to the assistant**: “contact support”, “help”, “I need help”, “there is a problem”. If you described the malfunction in words (“the button does not work, tell support”), the assistant opens the form with the description already filled in.
Then three steps: decide whether to attach diagnostics → describe the problem freely → “Send”. The message goes to **support@cenaly.com**, and the team replies to the **e-mail address in your account** — make sure it is current and check your spam folder.
You can also write to **support@cenaly.com** straight from your own mailbox: it is the same address. The form is only more convenient in that it attaches the technical data for you.
---
## What to attach to a request
One message with full context saves three rounds of correspondence.
| What | Why | Where to find it |
|---|---|---|
| **Panel domain** | The platform has several brands and two clouds — the domain identifies your contour | The address bar: `admin.cenaly.com`, on the Russian brand `cenaly.ru` |
| **Account e-mail** | It is how the account is found | Settings → “Access” |
| **Location name** | In a network, locations have different settings | The location selector in the panel header |
| **Time of the event** | It is how the logs are searched | The clock plus the time zone, if it differs from the location's |
| **What you did, step by step** | Reproducing is half the fix | “I clicked here → expected this → got that” |
| **A screenshot or a short video** | Faster than any description | The whole screen, address bar included |
| **Order, receipt or booking number** | If the problem is in one specific record | The “Orders”, “Receipts”, “Bookings” sections |
| **The “details” line** | The technical reason the hardware refused | The “Receipt not issued” window on the POS — [Fiscalization](/en/docs/fiscal) |
| **Hardware model** | Drivers differ between models | The “Hardware” section (`/hardware`), the device card |
Before writing, it is worth walking the symptom through [Troubleshooting](/en/docs/troubleshooting): half of all cases are an unopened cash shift, an offline bridge or a storefront cache — and the answer is already there.
---
## What data goes with a request
The form asks for consent explicitly, and declining breaks nothing.
| Mode | What is sent |
|---|---|
| **With diagnostics** | Page URL, browser type and version, screen resolution, time, cookie **names** (without values), the number of keys in browser storage |
| **“Description only, no data”** | Your text, the page URL and the time it was sent |
**Passwords and access tokens are never transmitted** — in either mode. You do not need to send logins and passwords in the message either: support has a separate mechanism — you switch on “Support access” in the settings and revoke it when the question is closed (see [Security and data](/en/docs/security-privacy)).
---
## Reporting a vulnerability
Vulnerability reports go to a **separate mailbox, not to general support**: write to **`security@cenaly.com`** — it accepts mail from any brand; the same `security@` mailboxes on brand domains (`security@cenaly.com`, `security@cenaly.ru`, `security@masamenu.tr`) are being connected. The address is read by the team responsible for platform security.
Include the page URL, the steps to reproduce and what you were able to obtain; add the time and the brand. Please do not publish details before we reply and do not pull other people's data to “check the scale”.
⚠️ Do not confuse this with an incident **inside your own account** (a leaked password, someone signed in, suspicious orders): that is an ordinary support request, and the step-by-step order of actions is in [Security and data](/en/docs/security-privacy).
How data access is arranged and who can see it is covered in the same article.
---
## Implementation partners
If you need not “explain it” but “do it for us” — set up the menu and inventory, marry the POS to the hardware, train the shift — that is the work of an implementation partner.
- **Finding a partner.** Partners work in their own countries and verticals; write to support with your format and country and we will say whether there is a partner nearby.
- **Attaching a partner to your account.** The “Partner” block on the **Subscription** page (`/subscription`): by the partner's code or link. After that they manage your account as a client.
- **A partner can sign into your account only with your consent** — through the same support-session mechanism our own team uses.
- **Becoming a partner yourself** (you have already automated your own business and now set it up for colleagues) — [Partner program](/en/docs/partner-program): the `/partners` section is switched on in the app store, then comes the application and the terms in the cabinet.
---
## What support does not do
Honest boundaries, so you do not wait in vain:
- **It does not keep your books.** Entering stock, building recipes, reconciling a bank statement, closing a shift — that is work inside your business. We explain how, and we fix the tool if it is broken.
- **It does not give legal or tax advice.** Whether a receipt is mandatory, which VAT rate applies, how to register a till — questions for your accountant and your tax office. What the platform knows is collected in the help centre: [Fiscalization](/en/docs/fiscal), [Who needs an online till](/en/docs/kkt-who-needs) (Russia), [rs.ge](/en/docs/rsge) (Georgia), [Legal documents](/en/docs/legal-docs), [Cookie consent](/en/docs/cookie-consent).
- **It does not restore deleted data out of thin air.** Export is your tool: [Data export](/en/docs/data-export) — an archive can be built at any moment and is kept for 7 days.
- **It does not configure your router, DNS and venue network.** We tell you which record is needed and which port must be open; changing it at your provider is for you or your administrator: [Custom domain](/en/docs/custom-domain), [SIP phones](/en/docs/sip-phones).
- **It does not open partner connections for you.** Contracts with a payment provider or a delivery platform are signed by the business, not by us.
---
## Related articles
- [Troubleshooting](/en/docs/troubleshooting) — diagnosis by symptom: “check 1-2-3” and where to go next
- [FAQ](/en/docs/faq) — short answers about plans, countries, devices and data
- [Account and sign-in](/en/docs/account) — registration, password recovery, QR sign-in, support sessions
- [Security and data](/en/docs/security-privacy) — where data lives, who sees it, how to revoke access, what to do after a leak
- [Account and location settings](/en/docs/settings) — where the tour and the setup wizard are started
- [First day](/en/docs/first-day) — launch checklists by business type
- [Glossary](/en/docs/glossary) — what the words in the panel mean
- [Partner program](/en/docs/partner-program) — implementation partners and the partner cabinet
- [If the internet goes down](/en/docs/offline) — what works without a connection and what the shift should do
---
# Account and sign-in
An account is the business owner and everything that belongs to them: locations, catalogue, orders, staff, subscription. There is **one account per business**, no matter how many locations it holds (see [Multi-location](/en/docs/multi-location)), and people get in differently: the owner with their e-mail, staff with their own logins or a PIN at the till, tablets and screens with a device code.
---
## What you need to get started
- **A working e-mail and access to that mailbox.** The confirmation code, password recovery letters and the account handover letter all go there.
- **A browser.** Sign-up and sign-in live at `admin.cenaly.com/register` and `admin.cenaly.com/login`.
- **A password of at least 8 characters.** On reset and change its strength is checked: an upper-case and a lower-case letter, a digit, a special character.
- Nothing else: no phone number, no card and no app are needed to register.
---
## Registration
| Method | Where | Where it works |
|---|---|---|
| **E-mail and password** | `/register` | On every brand |
| **Google** | Button above the form | cenaly.com, cenaly.com |
| **Facebook** | Button above the form | cenaly.com, cenaly.com |
| **VK ID, Mail, Odnoklassniki, Yandex ID, Sber ID, Gosuslugi** | Buttons above the form | Only on cenaly.ru |
| **A printed QR code** (flyer, sticker) | `/register?code=…` or the camera scanner | cenaly.com, cenaly.com |
**E-mail and password.** The password is at least 8 characters with a confirmation field, plus a mandatory checkbox accepting the Terms and the Privacy Policy. On cenaly.com and cenaly.com the address is confirmed by a code from an e-mail (6 digits, the form is right on the page), after which you are signed in automatically. On cenaly.ru there is no code confirmation — the account opens immediately.
**Social buttons are both sign-up and sign-in.** An unknown address creates an account, a known one simply signs in; there is no separate "register with Google".
**From a printed QR code** you "claim" a code from a flyer or a sticker: you can protect it with a PIN (4 digits) or a password, or deliberately leave it unprotected — there is a separate checkbox that accepts the risk. After a successful claim the system signs you in with that same code.
**Acceptance of the documents is recorded.** The date and version of the accepted Terms and Policy are visible later in **Settings → General**, the "Acceptance of legal documents" block. It is read-only: this is evidence, not a setting.
---
## Signing in
1. Open `/login`, type in your e-mail and password.
2. Or press the Google sign-in button — Google renders it itself, and for a returning person it is personalised, with a name and an avatar.
3. Or sign in with a device code — see the section below.
Useful details:
- **There is no "remember me" checkbox.** The session is kept in the browser and lives until you press "Sign out" in the sidebar or until it is revoked. Signing out in one tab closes the session in all of them.
- Someone who is already signed in is quietly moved from the sign-in page into the panel.
- At the bottom of the form there are links to the Terms and the Policy: by signing in, you accept them.
- **Demo data.** Any panel address with the `?demo` parameter opens a demonstration storefront with ready content; someone who is already signed in stays in their own account.
---
## Password recovery
1. On the sign-in page press "Forgot your password?" — `/forgot-password` opens.
2. Enter the account e-mail. The letter with the code is sent in the language of the page you requested it from.
3. A couple of seconds later `/reset-password` opens with the address already filled in — type the code from the letter and the new password twice.
4. After a successful reset the system takes you back to the sign-in page itself.
Requirements for the new password: 8+ characters, an upper-case and a lower-case letter, a digit, a special character.
---
## Sign-in by code and QR
Codes are for places where typing a login and a password is inconvenient or unsafe: a menu tablet, an order monitor, a kitchen screen, a till, a shared terminal.
| What | How it looks |
|---|---|
| **Where to create a code** | "QR codes" → the "Devices" tab (`/client-codes?tab=devices`): the code, a sign-in link of the form `/login?code=…`, instructions and a QR image. In detail — [QR codes and device codes](/en/docs/device-codes) |
| **How to sign in** | The "Scan QR" button on `/login`, the address `/login?code=…`, or the thin page `/qrlogin?code=…` |
| **Protecting a code** | If the code is protected, the system asks for a PIN (4 digits) or a password |
| **Codes for the panel itself** | The third tab of the section — "Admin sign-in"; it is open to the owner and to a role that has been given the "Settings" section |
| **How to revoke** | Delete the code in the same section — the link stops working |
⚠️ **A code session is deliberately limited.** It does not give full access to the account and may be locked onto a single target page (the order monitor, for example) — so a shared tablet in the dining room does not turn into a full owner sign-in.
---
## Handing the account over to another e-mail
Where: **Settings → Access** (`/settings/access`), the e-mail change and account handover block.
1. Enter the new address and confirm the action in the window with the warnings.
2. A letter with a link goes to the new address.
3. The recipient opens `/confirm-email-transfer`, sets their own password and gets access to the account with all its data.
The link is one-time and has a limited lifetime: an expired or foreign token shows an error screen — then start the handover again. This is a **handover**, not a copy: the old address loses access.
⚠️ Limitations: on cenaly.ru there is no handover block at all, and anyone who signed in with a QR code cannot change the e-mail.
---
## Support access
A support agent **cannot enter your account without your consent** — access is off by default.
- It is switched on in **Settings → Support access** (`/settings/support-access`): a consent toggle plus the scope — "view only" or "view and edit".
- The same place shows the **history of consents** (when granted, changed, revoked) and the **log of sessions**: the agent's e-mail, the scope, the start and the end, an "active" mark.
- **Revoking consent kills the session that is running**, not only the next one.
- The agent signs in under their own name, so an intercepted link is useless on its own.
- An implementation partner is a separate case with its own rules; they ask for access and you grant it. The details — [Security and data](/en/docs/security-privacy).
On cenaly.ru there is no log of support sessions: the circuit has not been ported there yet.
---
## Staff with their own logins
There is one account and many people in it. An employee can be given their own sign-in to the panel (e-mail and password), or a 4–6 digit cashier PIN for a shared terminal is enough; a person without a login is a "resource" (a specialist in the appointment book, for example). What they see is decided by the role tier and the job title. The limit is 30 employees per account.
Everything about roles, invitations, password resets and deactivation — [Staff and shifts](/en/docs/staff).
---
## Deleting the account
There is no "delete account" button in the panel — deletion goes through a request, so that an accidental click does not destroy business data.
1. **Export your data first** — [Data export](/en/docs/data-export). PINs, integration keys and tokens, and passwords are not included in the archive.
2. **Then write to support** from the account owner's address — [How to get help](/en/docs/support).
The request is fulfilled within **30 days** of being confirmed. After the deletion there is nothing left to take, so the export comes before the request, not after.
---
## Limitations
- **Two-factor sign-in is in preparation** — with an authenticator app (SMS codes are not planned); it is not there yet. Protect the sign-in with a long password and separate staff logins instead of one shared password for everybody; on tablets and shared screens use device codes with a PIN.
- **Google and Facebook** only work on the cenaly.com and cenaly.com brands; VK ID, Yandex ID, Sber ID, Gosuslugi, Mail and Odnoklassniki — only on cenaly.ru.
- **Registration from a printed QR code** is available on cenaly.com and cenaly.com; signing in with a code works in both clouds.
- On cenaly.ru there is no account handover to another e-mail and no log of support sessions.
- There is no self-service account deletion in the panel (see above).
- One person can work in several accounts with a single password of their own — when you create an employee with an already registered address, connecting the existing user is offered.
---
## Troubleshooting
| Symptom | Cause | What to do |
|---|---|---|
| The confirmation code never arrived | The letter is in spam, or the address has a typo | Check the "Spam" folder, then request the code again; if there is a typo, register again with the correct address |
| There is no "Sign in with Google" button | The Google script did not load (blocker, network) | Sign in with your e-mail and password: the fallback button that appears after 3 seconds does not complete the sign-in right now |
| The sign-in page hangs | A stale session cache in the browser | Press "Clear cache and retry" on the sign-in page and sign in again |
| The sidebar renders, but every section is refused | The session was closed in another tab, or it was revoked | Reload the page and sign in again |
| A device code does not let you in | "Code expired" / "invalid code" / "the code exists but is not connected" | For expired and invalid ones create a new code in "QR codes"; an unconnected one will offer registration with it |
| The handover link complains | The token is one-time and has a limited lifetime | Start the handover again from **Settings → Access** |
| An employee cannot sign in | No "sign-in to the admin panel" checkbox, or they are deactivated | Check their row in `/staff` |
---
## FAQ
**Can we work on a tablet without typing a password?**
Yes, that is exactly what device codes are for: create a code in "QR codes" → "Devices" and open the sign-in link with it on the tablet.
**What happens to the data if I change the e-mail?**
Nothing is lost: the whole account moves to the new address. Access from the old address disappears.
**I signed in with Google — can I then sign in with a password?**
Yes. Set yourself a password in **Settings → Access**; the old password is not asked for in that case, and both methods work afterwards.
**How long does a session live?**
It renews itself while you use the panel. It is closed by the "Sign out" button in the sidebar — in all browser tabs at once.
**Is there sign-in by SMS code or one-time passwords?**
No. The sign-in methods are a password, the brand's social provider, and a device code. Two-factor sign-in with an authenticator app is in preparation; we promise no dates, and for now the strength comes from a long password and from every employee having their own login.
**How do I take the account back from an administrator who has left?**
If they were an employee — deactivate or delete their row in `/staff`. If the account is registered to their address — hand the account over to your own e-mail.
**What does a support agent see when I switch access on?**
Exactly the scope you chose, and only while the consent is on; every session goes into the log. In more detail — [Security and data](/en/docs/security-privacy).
---
## Related articles
- [Account and location settings](/en/docs/settings) — where language, currency, country, access and export live
- [Security and data](/en/docs/security-privacy) — where the data is stored and who has access to it
- [Staff and shifts](/en/docs/staff) — logins, roles, cashier PINs
- [QR codes and device codes](/en/docs/device-codes) — sign-in codes for tablets and screens
- [Data export](/en/docs/data-export) — take everything in one archive
- [Subscription](/en/docs/subscription) — plan, balance and invoices
- [How to get help](/en/docs/support) — where to write if you cannot sign in
---
# Account and location settings
The **Settings** section (`/settings`) is not "everything you can configure" — it is the hub of account-wide parameters: language and currency, auto-translation languages, access, subscription, export. The settings of a particular location live in its own card, and the settings of a section live in that section, behind the gear in the window header. Below is the map, so that you do not have to guess.
---
## What you need to get started
- **Owner rights** for most tabs: access, account handover, export and subscription are owner-level. The "Settings" section can also be granted to a staff role through the role constructor, but it is marked as sensitive — see [Staff and shifts](/en/docs/staff).
- **Nothing has to be switched on:** the hub is available in every business type and on every brand.
- The open tab is kept in the address, so F5, the browser's "back" button and a link someone sent you all behave as expected.
---
## The tabs one by one
| Tab | Address | What is inside |
|---|---|---|
| **General** | `/settings/general` | Default interface language — limited to the languages your build of the admin panel ships (Cenaly.ru ships Russian only; MENU languages are picked separately in "🌐 Languages", where all 45 are available), currency, country, the free-form "Concept" field (AI features read it as context), and the read-only "Acceptance of legal documents" block |
| **Interface** | `/settings?tab=interface` | The look of the panel for yourself: density, text size, how editing windows open, "less motion", reset to standard |
| **Status automation** | `/settings/orders` | Auto-cancelling unpaid and auto-completing served orders, scenarios, the customer block list, return and cancellation reasons |
| **Languages** | `/settings/languages` | Which auto-translation languages are on — as a sortable list or on an interactive map of countries |
| **Subscription** | `/subscription` | Plan, limits, balance, invoice, AI credits — see [Subscription](/en/docs/subscription) |
| **Access** | `/settings/access` | Password change, handing the account over to another e-mail, personal API keys for external AI agents |
| **Support access** | `/settings/support-access` | Consent for support to sign in and its scope, the history of consents, the log of sessions, sign-in modes for partner firms |
| **Personal SIP accounts** | `/settings/sip-accounts` | Your own accounts for the phone in the Cenaly Android apps — tied to your login, not to the company; for company telephony see [Telephony](/en/docs/telephony) |
| **Data export** | `/settings/export` | An archive of all account data and a quick catalogue CSV — see [Data export](/en/docs/data-export) |
**General settings save themselves**: an edit leaves a second after you stop typing, and immediately if you leave the page or switch the browser tab. The status is shown in the block header as "⏳ / 💾 / ✅ / ❌".
### Interface is a personal setting
The "Interface" tab changes the look of the panel **for you only**: nothing changes for other people in the account.
| Setting | Options |
|---|---|
| **Density** | "Spacious" (large targets for a finger, the default) or "Compact" (more rows fit on the screen) |
| **Text size** | Smaller / Normal / Larger — the whole panel scales |
| **How editing windows open** | "As designed", "Window", "Right panel", "Full screen". An individual window's mode is set by three buttons in its header, and that override wins; windows you set by hand are listed here and can be cleared one by one or all at once |
| **Less motion** | Switches off slide-ins and smooth appearances |
| **Reset to standard** | Brings back the usual look; the button only appears if you have changed something |
### Status automation is about statuses, not about order conditions
The tab holds two fixed rules (cancel unpaid and complete served orders after N hours, from 1 to 168) and a **scenario constructor**: an order event → conditions (amount, order type, source, payment method, channel, number of items) → actions (e-mail, webhook, status change). Up to 5 conditions and 3 actions per rule. Next to them is the customer block list with anti-fraud limits and the register of return and cancellation reasons.
⚠️ **Checkout fields, pickup and delivery are not configured here** but in the location card (`/locations`) — there is a pointer line about that on the tab.
---
## What belongs to the account and what belongs to the location
| Level | Examples | Where |
|---|---|---|
| **Account** — shared by all locations | Default language and currency, country, auto-translation languages, subscription and balance, password and account handover, support access, export | `/settings` |
| **Location** — its own for each | The name the guest sees, address and phone, opening hours, taxes, tips and the service fee, delivery and pickup terms, checkout fields, the storefront cookie banner, a narrowed set of languages | `/locations` |
| **Personal** — for you only | The look of the panel (density, text size, window mode), "Personal SIP accounts" | `/settings?tab=interface`, `/settings/sip-accounts` |
| **Per-location inside the hub** | Status automation and return reasons — with a location selector | `/settings/orders` |
If you have several locations, one rule helps: **everything the guest sees is a location setting**; everything about the account and money is an account setting. In more detail — [Multi-location](/en/docs/multi-location).
---
## How to find a setting from a working window
You do not have to hunt for a setting through the help centre: the panel follows the rule "**the settings are visible from the window they belong to**".
- **The gear on the right side of a window's header** is the single entry point. It shows the settings of exactly what the window displays: the floor plan, cashier permissions, the location's payments, languages, the list's appearance.
- Most targets open **as a window on top of the current screen** — you do not have to leave for another section and lose your place.
- Such a setting has an **address**: `?settings=` (for example, `/tables?settings=deposits`). The link can be sent to a colleague — their window will open right on the setting you meant. The parameter is one-time: it disappears from the address once it has opened.
- If the target page is wider than the setting itself, the transition **highlights the right block** and scrolls to it.
---
## The section tour and the setup wizard
The "Settings" header holds two restart buttons:
- **The section tour** — a short walk through the panel: what is where and why.
- **The setup wizard** — a step-by-step run that brings the account to a working state; the same wizard is offered right after registration. The first steps by business type — [First day](/en/docs/first-day).
---
## Notifications and sounds
There is **no** separate "Notifications" section in the settings, and that is not an omission: signals are configured where the events happen.
- **A new order** — the sound and browser notifications are switched on in the [Orders](/en/docs/orders) screen; the sound has two modes: play once, or repeat until the order is opened.
- **Letters to guests and scenarios** — on the "Status automation" tab (the "send an e-mail" action) and in [Newsletters](/en/docs/newsletter).
- **Work messages to the team** (shift publishing, reminders) arrive in the work chat — see [Chat](/en/docs/chat).
---
## Limitations
- **Interface is a personal setting.** You cannot set the look of the panel "for the whole team".
- **The sidebar composition does not live in settings.** Which sections are shown is decided by the [App Store](/en/docs/app-store); the "Panel profile" tab is gone.
- **Plan limits are soft:** going over stops you adding something new (a language, a location) but never switches off what already exists.
- **Two tabs are reduced on cenaly.ru:** there is no account handover to another e-mail and no log of support sessions.
- **An API key is shown once.** Lost it — revoke it and create a new one.
- The "Interface" tab is the only one without its own address: it is reached at `/settings?tab=interface`.
---
## Troubleshooting
| Symptom | Cause | What to do |
|---|---|---|
| A setting did not save — a "❌" in the block header | The request did not get through (network, an expired session) | Repeat the edit; if the mark stays, sign in again — the failure goes to the development team automatically |
| I am looking for checkout fields and delivery on the "Status automation" tab | Those are location settings | Open the location card in `/locations` |
| A language is added but the storefront does not show it | The location has a narrowed set of languages | Check the languages in the location card; see [QR menu](/en/docs/qr-menu) |
| I do not see the account handover block | You are on cenaly.ru or you signed in with a QR code | The handover is unavailable in those cases — see [Account and sign-in](/en/docs/account) |
| A new language will not be added | The plan limit has been reached | Remove a language you do not need or change the plan — [Subscription](/en/docs/subscription) |
| There is no gear in the window header | This window genuinely has no settings | The account-wide ones are in `/settings`; if you believe a setting should exist, write to [support](/en/docs/support) |
---
## FAQ
**Where do I change the password?**
**Settings → Access.** Those who sign in with Google will not be asked for the old password.
**Can I give an employee access only to the settings of their own location?**
Sections are granted to a role as a whole, while the coverage of locations is limited inside the role itself. The full model — [Staff and shifts](/en/docs/staff).
**What is the "Concept" field in general settings?**
A free-form description of the business. AI features read it: product and dish descriptions, newsletter texts and assistant hints come out more accurate.
**What are the API keys on the "Access" tab for?**
Keys for an external AI agent or your own program are issued in "Telephony → API & MCP" — see [Telephony](/en/docs/telephony).
**I changed the density — why is it still spacious for my colleague?**
That is by design: the look of the panel is a personal setting of whoever is signed in.
**How do I share a particular setting?**
Open it from the window's gear and copy the address: it contains `?settings=` and will open the same setting for your colleague.
---
## Related articles
- [Account and sign-in](/en/docs/account) — registration, passwords, device codes, support access
- [Security and data](/en/docs/security-privacy) — where the data is stored and who sees it
- [Subscription](/en/docs/subscription) — plan, limits, balance and invoices
- [Data export](/en/docs/data-export) — an archive of the whole account
- [Staff and shifts](/en/docs/staff) — roles and access to sections
- [Multi-location](/en/docs/multi-location) — settings for several locations
- [App Store](/en/docs/app-store) — which sections are shown in the panel
---
# Security and data
This page is a reference: where your business data physically sits, who can see it, how that access is revoked, and what to do if something has gone wrong. Instructions about signing in and passwords are in [Account and sign-in](/en/docs/account).
---
## Where the data lives
The cloud and the region are determined by the **brand** you registered through — it is not an account setting and it does not change on the fly.
| Brand | Cloud | Region | What it means |
|---|---|---|---|
| **cenaly.com**, **cenaly.com** | AWS | us-east-1 | Account data, media files and the storefront delivery are in the AWS circuit; static content is served worldwide through a CDN |
| **cenaly.ru** | Yandex Cloud | Russia | A separate circuit in full, including its own authentication: accounts of the .ru circuit are not created in the American identity provider |
| The Turkish brands | AWS | eu-central-1 | A regional copy of the circuit, closer to the market. ⚠️ Honestly: eu-central-1 is Germany, not hosting inside Turkey |
What follows from this in practice:
- **Accounts of the two circuits are not linked.** An account on cenaly.ru is a separate account with its own data; you cannot "move" an account from one cloud to another — a move means a new account and a data import.
- **Some capabilities live in one cloud only.** The cookie scanner, for example, works on the AWS brands, while on cenaly.ru starting a scan answers "not supported" by design — that is not a fault.
- **Rarely read heavy media** (call recordings, for instance) is kept in a separate cold archive of the brand — cheaper and in the same circuit; access to a file stays instant.
- **Storefront files** (menu, photos, public documents) are public on purpose: the guest's browser reads them without any authorisation.
---
## Who has access
| Who | What they see | How to limit or revoke |
|---|---|---|
| **The account owner** | Everything | Only by handing the account over (`/settings/access`) |
| **An employee with a login** | The sections granted to their role and the locations in its coverage | The role constructor in `/staff`, deactivating or deleting the employee |
| **An employee with a PIN** | The till, within the permissions of their role | Changing or clearing the PIN in the employee card |
| **A device on a code** | One target page (a monitor, a kitchen screen) without full access | Delete the code in "QR codes" → "Devices" |
| **A support agent** | Only while consent is on and only within the chosen scope; every session is logged | The toggle in `/settings/support-access`; revoking kills a running session too |
| **An implementation partner** | Only on an approved request, for a limited time | The firm's mode in the same section: "never" / "ask every time" / "let view-only through" |
| **An external AI agent on an API key** | Whatever the account key allows | Revoke the key in `/settings/access` |
### How partner access works
A partner **never enters on their own**. They send a request with a reason, a mode and a duration, and **only the account owner** decides it — not an employee and not our support. The rules that always hold:
- the default mode is **view only**; "view and edit" is granted by a separate checkbox in your answer;
- the time is limited (an hour by default, two at most), and **one** session is open at a time;
- throughout the visit a **purple banner** hangs in the interface with the firm's name, the person's name, the mode and a countdown;
- **closed in any mode**: subscription and payments, the owner's data, staff permissions, data export, integrations, mail, calls and telephony, counterparties and documents, the partner program — and the refusal comes from the server, not just from hidden menu items;
- an unanswered request expires in 24 hours, and you get a letter about every sign-in;
- revoking consent stops the **running** session;
- on cenaly.ru partner sign-in does not exist at all.
More about the program itself — [Partner program](/en/docs/partner-program).
---
## Passwords, codes and sessions
| Access key | Requirements | Where it is revoked |
|---|---|---|
| **An owner's or employee's password** | 8+ characters, an upper-case and a lower-case letter, a digit, a symbol | `/settings/access` for a change; `/staff` to reset an employee's password |
| **A cashier PIN** | 4–6 digits, unique within the account, stored on the server only as an irreversible hash | The employee card in `/staff` |
| **A device sign-in code** | A `/login?code=…` link, protected with a PIN or a password if needed | Deleting the code in `/client-codes?tab=devices` |
| **A QR code for the panel** | The "Admin sign-in" tab — visible to the owner and to a role with the "Settings" right | Deleting the code in the same place |
| **An API key for AI agents** | Shown once, at creation | `/settings/access` |
| **Personal SIP accounts** | Each person's private list: only they see their own | `/settings/sip-accounts` |
Useful facts:
- **Signing out closes the session in all tabs** of the browser; there is no "remember me" checkbox.
- **Dismissal revokes the employee's phone extension** across all locations at once — nobody leaves with a working softphone.
- **Section access levels** ("view", "edit", "configure") are set in the role. The honest boundary today: the "edit" level really does forbid writing that section's data on the server, while a "view only" mode of the screens themselves is not in place yet — so do not grant a section to someone who must not see its content.
---
## Guest data and consents
| Mechanism | What it does | Article |
|---|---|---|
| **The cookie banner** | Four categories, blocking third-party scripts before consent, a consent log with a CSV export as proof, a ready cookie policy page | [Cookies and consent](/en/docs/cookie-consent) |
| **Legal documents** | A constructor for the privacy policy, terms, returns, delivery and five more documents by country sets; publishing as pages of your site | [Legal documents](/en/docs/legal-docs) |
| **The "My data" screen on the storefront** | The guest sees what is stored about them on their device, exports it as a JSON file and wipes it with one button | — |
| **The 18+ age gate** | Switched on by the owner and standing in front of the storefront content as a whole | [Cookies and consent](/en/docs/cookie-consent) |
Two honest notes about "My data": the screen works with the data **on the guest's device** (what sits in their browser), not with the history on the server, and deleting there clears exactly that device. If a guest asks you to remove their orders and contacts from your base, you do it — in the [Customers](/en/docs/customers) section.
An important separation: **the banner and the documents the guest sees are yours, not ours.** You are responsible for their content as the business owner; the platform provides the constructor, the hosting of the pages and the consent log.
---
## Export and deletion
- **Take everything** — [Data export](/en/docs/data-export): one ZIP with settings, catalogue, orders, customers and reviews. **Deliberately not included**: staff PINs, integration keys and tokens, passwords — the archive often gets forwarded to an accountant or a contractor. Photos are not packed, links to them remain; a finished archive lives for 7 days.
- **Delete the account** — through a request to [support](/en/docs/support) after the export: there is no self-service button in the panel. The request is fulfilled within **30 days** of being confirmed; after the deletion there is nothing left to take, so the export comes first, not later.
- **Delete one guest's data** — in the [Customers](/en/docs/customers) section.
---
## Backups
There is no "restore the account to a date" button in the panel, and we do not publish retention periods for internal copies — so **make your own copy**: before a bulk import, a catalogue clean-up or a change in the menu structure, collect an [export](/en/docs/data-export). It is the most reliable rollback available.
---
## If you suspect a leak
Top to bottom, in order:
1. **Change the owner's password** — `/settings/access`.
2. **Switch off "Support access"** if it was on, and look through the log of sessions: who signed in and when.
3. **Delete the device codes and the panel QR codes** you do not need right now (`/client-codes`).
4. **Revoke the API keys** on the "Access" tab and issue new ones only where they are genuinely used.
5. **Change the cashier PINs** and reset the passwords of the people you suspect; deactivate those who have left in `/staff`.
6. **Write to support** — [How to get help](/en/docs/support). Attach the time of the incident, the brand and the account address, the location, and what you saw. This is a request about YOUR account; platform vulnerabilities go through a different channel — see below.
Report a vulnerability **in the platform itself** not to general support but to a dedicated address — **`security@cenaly.com`** (the address accepts mail from any brand; the same `security@` mailboxes on brand domains — `security@cenaly.com`, `security@cenaly.ru`, `security@masamenu.tr` — are being connected). In the message: the page address, the steps to reproduce and what you managed to obtain. Please do not publish the details before we reply and do not pull other people's data "to check the scale". More about the channel — [How to get help](/en/docs/support).
---
## What we do not store
- **Payment card data.** Neither numbers nor CVV: the card is handled by the payment provider (Stripe with its PCI Level 1 certification, for example), and only the result of the payment reaches us — see [Payments](/en/docs/payments) and [Stripe](/en/docs/stripe).
- **Secrets in the export.** PINs, keys, tokens and passwords are not included in the archive.
- **Biometrics.** That class of data is forbidden in the circuit and is not collected.
---
## Work in progress
A dedicated circuit for storing personal data — encryption by data class, a log of every access to it, retention driven by events — is **in progress**. We make no dates or promises about it here: when it covers another class of data, that will appear in the description of the relevant section. A portal for data subject requests (DSAR) is likewise in progress — today such requests are handled manually, through the export and the "Customers" and "Staff" sections. **Two-factor sign-in** on cenaly.ru and in the mobile apps is also in preparation — we promise no dates.
---
## Limitations
- **Two-factor sign-in covers only the web workspace of AWS brands** (cenaly.com, cenaly.com and others): turn it on in Settings → Access, and a password sign-in then asks for a code from an authenticator app. The mobile apps and sign-in with Google or a QR code do not ask for the code yet, there are no backup codes, and cenaly.ru has no second factor. Everywhere, protect the sign-in with a long password and separate staff logins (one shared password for everybody is the worst option), and keep tablets and screens on device codes with a PIN.
- **The split between clouds is hard:** a cenaly.ru account and a cenaly.com account are different accounts and never share a single login.
- **On cenaly.ru there is no** partner sign-in, no log of support sessions, no account handover to another e-mail and no cookie scanner.
- **The guest's "My data"** clears the device, not the order history on the server.
- **The "view" and "configure" access levels** do not yet turn a screen into read-only mode (see above).
- **There is no "which of my employees opened what" log** in the panel; logs are kept for support and partner sign-ins.
- **We do not declare certified cryptographic tools or formal personal-data perimeters:** if your business is required to have them by law, discuss the task before connecting.
---
## Troubleshooting
| Symptom | Cause | What to do |
|---|---|---|
| Support asks for access and I cannot find where to grant it | The toggle sits on its own tab | **Settings → Support access** (`/settings/support-access`): switch the consent on and choose the scope |
| A partner says they cannot get in | The request was not approved, expired (24 hours), or the firm's mode is set to "never"; on cenaly.ru there is no sign-in at all | Check the mode and the history on the same tab and ask the partner to send the request again |
| An employee sees a section they do not need | The section is granted to their role as a whole | Remove the section in the role constructor in `/staff`; a "view only" level does not yet apply to the screens |
| The cookie scanner will not start on cenaly.ru | The feature only works on the AWS brands | That is by design; fill the cookie declaration in manually — [Cookies and consent](/en/docs/cookie-consent) |
| A guest demands their data be deleted | The "My data" screen only clears their device | Delete their card in the [Customers](/en/docs/customers) section |
| I need to roll back a bulk catalogue change | There is no "restore to a date" in the panel | Load the catalogue from your own [export](/en/docs/data-export) made before the change |
---
## FAQ
**Which country is my data in?**
It depends on the brand: cenaly.com and cenaly.com — AWS (us-east-1), cenaly.ru — Yandex Cloud in Russia, the Turkish brands — a copy of the circuit in eu-central-1 (Germany).
**Can support enter my account without permission?**
No. The "Support access" toggle has to be on; you choose the scope, every session is logged, and revoking consent stops even a running session.
**Does a partner see our money and our staff data?**
No. Subscription and payments, the owner's data, staff permissions, data export, integrations, communications, counterparties and documents are closed in any mode — the server refuses.
**An employee has left — what should I revoke?**
Deactivate or delete them in `/staff` (that also removes the panel sign-in and revokes the phone extension), change the PINs they knew, and delete the device codes you no longer need.
**Do you store our guests' card numbers?**
No. The card is handled by the payment provider; only the result of the operation stays with us.
**How do I answer a guest who demands their data be deleted?**
Find them in the "Customers" section and delete the card; the local data on their own device they can wipe themselves on the storefront through the "My data" screen.
**Do you have a DPA and other documents for an audit?**
The data-processing terms are described in [Data processing agreement (DPA)](/en/docs/dpa); ask [support](/en/docs/support) for a signed copy and the remaining documents.
---
## Related articles
- [Account and sign-in](/en/docs/account) — passwords, device codes, support access
- [Account and location settings](/en/docs/settings) — what is configured where
- [Staff and shifts](/en/docs/staff) — roles, location coverage, PINs
- [Data export](/en/docs/data-export) — take everything and make a backup
- [Cookies and consent](/en/docs/cookie-consent) — the banner, the consent log, the cookie policy
- [Legal documents](/en/docs/legal-docs) — privacy policy and terms
- [Customers](/en/docs/customers) — deleting a particular guest's data
- [Data processing agreement (DPA)](/en/docs/dpa) — what we process, on what basis and who the sub-processors are
- [How to get help](/en/docs/support) — where to report an incident; vulnerabilities go to `security@` on your brand
---
# Data Processing Agreement (DPA)
> ⚠️ **This is a draft.** The text below describes how processing actually works here and proposes contractual wording — but it is **not an offer**, it is not signed, and on its own it creates no obligations. To obtain a signable version for your legal entity (and its Russian counterpart — an instruction to process under Federal Law 152-FZ), write to **`security@` on your brand's domain** (for example, `security@cenaly.com`) or contact [support](/en/docs/support). We reply with the same document carrying your details, the list of modules you use and the current Annex C.
Why this page is useful before anything is signed: it shows **what exactly** we process, **where** it is stored, **who** it is shared with, and **what we can and cannot do** — with no promises the product does not keep. The technical side of the same question is in [Security and data](/en/docs/security-privacy).
---
## 1. Parties and roles
| Party | Role under GDPR | Role under 152-FZ |
|---|---|---|
| **You** — the venue, the account owner | Controller | Operator of personal data |
| **We** — the platform | Processor | Person processing data on the operator's instruction |
What that means in practice:
- **You determine the purposes.** You decide whether to collect guest phone numbers, whether to record calls, whether to keep personnel files in the panel, whether to switch on AI features. We supply the tool and carry out the instruction — the set of operations you define through account settings and your own actions in the interface.
- **The legal basis is yours too.** A guest's consent, a contract with them, your statutory duty (a fiscal receipt, personnel records, hotel guest registration) — all of that is on you. The platform does not and cannot verify whether you had a basis for entering a particular person into a database.
- **Notices to data subjects are yours.** The storefront privacy policy, the cookie banner, the newsletter consent text are published in your name. We provide the builder, page hosting and the consent log — see [Legal documents](/en/docs/legal-docs) and [Cookies and consent](/en/docs/cookie-consent).
- **There are areas where we are an independent controller**, and they are kept separate honestly: your account and subscription payment data, technical error telemetry from the panel, and your correspondence with support. These are processed under our own policy, not on your instruction.
### What stays with you as the operator
Informing data subjects and collecting the basis · lawfulness of purposes · answering data subject requests (we assist, see §9) · notifying the regulator where the law puts that duty on the operator (in Russia — notifying Roskomnadzor of processing and of an incident) · configuring roles so that staff only see what they need · deciding whether to enable AI features and the transfer of data to foreign models.
---
## 2. Subject matter, nature and purposes of processing
We process data **only to run the features you have enabled** and to support those features when you ask us to. We do not use the contents of your account for advertising or profiling, we do **not train our own models on it**, we do not sell it and we do not disclose it to third parties other than the sub-processors in §6 and the recipients you choose yourself.
Nature of processing: collection, recording, organisation, storage, rectification, retrieval, use, anonymisation, restriction and erasure; automated processing in the cloud.
| Group of data subjects | Where this arises | Why it is processed |
|---|---|---|
| **Guests and customers** | orders and delivery, table reservations, appointments, storefront and shop, customer base, messenger chats, calls (recording and transcript), leads and website forms, pickup-point parcels, hotel guests | to accept and fulfil an order, reservation or appointment; to contact the guest about it; to keep history and loyalty; to answer an enquiry; to meet a fiscal duty |
| **Employees** | employees and shifts, HR records, payroll, PBX extensions and SIP accounts, tasks, team chat | access to the panel and the till, time tracking, personnel records and reporting, internal communication |
| **Website visitors** | "My website" widgets, cookie banner and consent log, forms and enquiries, analytics counters you have installed | to display a widget, to record consent as evidence, to accept an enquiry |
| **Counterparties and partners** | CRM counterparties, documents and invoices, the partner programme | accounting for settlements, exchanging documents |
The full "module → data → purpose → term" breakdown is in **Annex A**.
---
## 3. Categories of data subjects and categories of data
Categories of data subjects: guests and customers · leads · employees · job applicants · account users (the owner and staff with a login) · representatives of counterparties and partners.
Categories of data the product accepts:
| Class | Examples | Default display in the interface |
|---|---|---|
| Contact | name, phone, email, messenger handle | masked |
| Address | delivery address, residential address | masked |
| Identity document | number, validity, issuing authority (hotel guest, personnel file) | hidden |
| Employment | position, rate, schedule, length of service, salary | masked |
| Financial | amounts, receipts, settlements | masked |
| Payment identifiers | card mask, the provider's payment identifier | masked |
| Communication content | chats, email, call recordings and transcripts | masked |
| Credentials | password hash, PIN hash, tokens | **never displayed** |
**Special categories** (GDPR Art. 9, 152-FZ Art. 10) are not collected by the platform itself. That said, the product does contain fields where **you can enter health data**: an employee's medical certificate and sick leave, a hotel guest's health and dietary restrictions. By entering them you accept the heightened requirements for the basis and the safeguards; our part is to keep them hidden by default and not to reveal them without an explicit purpose.
**Biometrics are blocked platform-wide.** The class is marked as forbidden in the policy registry, and an attempt to store such data is rejected by code rather than by a guideline. There are no fingerprints, face templates or voiceprints in the contour.
**We hold no payment card data at all** — neither the number nor the CVV: the card is handled by the payment provider and only the outcome of the transaction reaches us.
---
## 4. Term, deletion and return of data
- **The term runs with your subscription** and your account. While the account is live the data is stored so that the features work.
- **Deletion happens within 30 days** of your written request or of termination. This covers both deleting the account as a whole and deleting a specific data set on your instruction.
- **Taking your data out before deletion is your job and our duty to help with.** The export is self-service, no support ticket needed: [Data export](/en/docs/data-export). A prepared archive lives for 7 days, and secrets are deliberately excluded from it.
- **Some terms are set by law, not by your subscription.** Fiscal documents, personnel files and hotel guest registration are kept for as long as the country's rules require — and in those cases deletion "on request" is impossible before the term expires. Such records are marked in the product as being under mandatory retention.
- **Backups.** We do **not publish** retention periods for internal backups — and therefore do not promise that data "disappears everywhere the same day". The right safeguard is on your side: keep your own copy via export, especially before bulk changes.
- **What survives the deletion of an object — disclosed plainly.** The account's AI interaction log (the request to a model and its response, including text recognised from your document) is kept for cost accounting and incident investigation, and deleting the source document does not purge it. The answer cache and generated training materials may quote a deleted document until the next rebuild. Full erasure of these traces is available on request to support.
- **Content already transmitted to an AI provider** while serving your request is subject to that provider's own retention practices and is outside our control.
---
## 5. Processor obligations
**5.1 Processing only on your instructions.** The instruction consists of your account settings, your actions in the interface and any separate written instruction. If in our view an instruction infringes data protection law, we will tell you and may suspend performance.
**5.2 Staff confidentiality.** Access to account data is limited to a restricted group of our employees and contractors bound by confidentiality obligations; access is granted on a need-to-perform basis and withdrawn when the work is finished.
**5.3 Security measures** — the full list is in **Annex B**. In short: transport only over TLS; objects in storage are encrypted on the service side; a separate personal data contour with encrypted records and a closed read path; access separation by role, section level and location scope; account isolation by storage prefix; irreversible hashes for passwords and PINs.
**5.4 Support access only with your explicit permission.** A support agent **cannot** enter your account at will: it requires the toggle in **Settings → Support access** (`/settings/support-access`), the scope ("view only" or "view and edit") is chosen by you, every session is logged (who, when, at what scope), and withdrawing consent terminates even a **live** session. An implementation partner can only sign in on a request approved by the owner, for a limited time and with a banner in the interface; money, HR, data export and integrations are blocked for them by the server in any mode.
**5.5 Logging.** We keep: the log of the owner's support-access consent and the log of support sessions themselves, the partner sign-in log, the account's AI interaction log, and the access log of the personal data contour. The last one enforces an audit barrier: **no log record — no plaintext value returned**.
**5.6 Assistance with data subject requests** — see §9.
**5.7 Incident notification.** We notify you of a personal data breach affecting your account **no later than 72 hours after discovery**, without undue delay, and pass on what we know at that point: the nature of the incident, the categories of data and data subjects affected (as far as established), the likely consequences, the measures taken and planned, and a contact for follow-up. If the picture is incomplete by then we send a partial notification and supplement it as the investigation proceeds — staying silent "until everything is clear" is not an option. ⚠️ Notifying **the regulator and the data subjects** is the operator's duty, i.e. yours: in Russia that is 24 hours to report the fact and 72 hours to report the outcome of the internal investigation; in the EEA it is 72 hours to notify the supervisory authority. That is exactly why our deadline is set so that you can meet yours.
**5.8 Assistance with impact assessments (DPIA).** On request we provide a description of the processing, the measures and the sub-processors to the extent set out in this document and its annexes — which is normally sufficient for your assessment.
**5.9 Deletion or return at the end of the engagement** — see §4.
---
## 6. Sub-processors
We do engage sub-processors — a cloud product cannot exist otherwise. The full list with purpose, place of processing and the data transferred is in **Annex C**. The rules we propose to put in writing:
- a sub-processor is engaged under a written contract with protections **no lower** than those accepted in this agreement;
- it is given the **minimum** data needed for its function;
- **for a new or replacement sub-processor** we give notice by email to the account owner and by updating Annex C **at least 30 days** before the transfer begins; within that period you may object with reasons, and we will either offer an alternative or you may decline the affected feature or terminate the contract in the part that does not work without it;
- we remain responsible to you for the acts of our sub-processors;
- **foreign AI models are enabled only by your decision** — that consent is requested separately, not bundled with a general tick-box; on the Russian contour the model-decision step is deliberately disabled (the catalogue holds no model with confirmed 152-FZ compliance).
Separately: **recipients you choose yourself** — the payment provider, the SIP number carrier, messengers, delivery aggregators, marketplaces, the fiscal data operator and government systems. They receive data because you decided to connect that channel, and in most cases they act as independent controllers rather than as our sub-processors. You accept their terms directly.
---
## 7. Residency and international transfers
**The contour is determined by the brand** you registered through. It is not an account setting, it does not change on the fly, and an account cannot be "moved" from one contour to another.
| Contour | Cloud and region | Physical location | International transfer |
|---|---|---|---|
| **International** (every brand except those below) | AWS, `us-east-1` | United States, Northern Virginia | Yes — for an EEA controller this is a transfer to a third country; the bases are performance of the contract and Standard Contractual Clauses, and for AI features your explicit consent |
| **Turkish brands** (`masamenu.tr`, `cenaly.tr`) | AWS, `eu-central-1` | Germany, EU | ⚠️ To be honest: `eu-central-1` is **Germany, not Turkey**. For an operator under KVKK this is a cross-border transfer, not in-country localisation |
| **Russian** (`cenaly.ru`) | Yandex Cloud, `ru-central1` | Russia | No: the contour is closed, including its own authentication; transfer outside it is blocked by configuration |
Consequences worth spelling out:
- **Storage is shared per contour, not per brand.** Data of different brands on the same contour sits in a shared storage system separated logically — by account prefix and permissions. We cannot promise you a dedicated bucket.
- **Static assets are served worldwide through a CDN** — these are the public storefront files (menu, photos, published documents) that a guest's browser reads without authentication anyway.
- **The Russian contour** is an instruction to process under 152-FZ: recording, organisation, storage and retrieval are carried out in databases located in Russia (Art. 18(5)). AI processing there is done by a Russian provider. At the same time **we do not declare certified cryptographic means or formal ISPDn boundaries**: if your business is legally required to have them, raise it before you sign up.
- **Localisation in Kazakhstan and Uzbekistan.** We have no contour in Kazakhstan, and the Kazakh operator profile is honestly marked as "residency unavailable". For Uzbekistan only biometric data, genetic data and telecom subscriber data are subject to mandatory localisation — we do not accept biometrics at all, so storage in the international contour is permissible where the cross-border transfer conditions of the law are met; the basis itself (Standard Contractual Clauses or a standard from the official list) is arranged by you as the operator.
---
## 8. Audit and assurance
- **On request** we complete your security questionnaire and provide a description of measures and sub-processors to the extent set out in this document and its annexes.
- **An on-site audit, or an audit by your auditor**, is available by arrangement: with advance notice, during business hours, no more than once a year (more often in case of an incident or at a regulator's demand), under a confidentiality obligation, with no access to other customers' data and none to systems where such access is technically unavoidable. Costs beyond the reasonable are borne by the requesting party.
- ⚠️ **Honestly about what does not exist:** we have **no** ISO/IEC 27001 certification, **no** SOC 2 report, **no** PCI DSS attestation (we do not process cards at all) and **no** ISPDn attestation. If your compliance process requires a ready-made independent auditor's report, we cannot supply one today — and we prefer to say so before signing rather than after.
- Our cloud sub-processors and the payment provider do hold certifications; we will not present theirs as ours.
### Data protection contact
Data protection questions, signable-DPA requests and vulnerability reports go to **`security@` on your brand's domain**; ordinary requests go through [support](/en/docs/support). We do not have a separately appointed DPO or an EU representative — another point we state plainly rather than implying otherwise.
---
## 9. Data subject rights and assistance
Data subject requests are addressed to **you** as the operator — you answer, we assist. What is genuinely available today:
| Right | How it is exercised | How we help |
|---|---|---|
| Access and portability | [Data export](/en/docs/data-export) — a single archive with settings, catalog, orders, customers and reviews | we prepare the archive and answer follow-up questions |
| Rectification | editing the card in [Customers](/en/docs/customers), in [Employees](/en/docs/staff), or in the reservation or appointment | — |
| Erasure ("forget me") | you delete the guest's card; deep cleaning of traces on request | we act within 30 days |
| Restriction and objection | disabling a communication channel, withdrawing consent in the consent log | — |
| Withdrawing marketing consent | a flag on the customer card and in the consent log; an unsubscribe link in emails | — |
Honest limits worth knowing in advance:
- **There is no DSAR console in the panel** — such requests are handled manually, through export and the "Customers" and "Employees" sections.
- **The "My data" screen on the storefront clears the guest's device**, not the server-side order history: the guest sees and erases what is stored in their browser. If they ask you to delete their orders and contacts from your database, you do that.
- **There is no "which of my employees opened what" log.** Logs are kept for support and partner sign-ins and for access to the personal data contour — so we cannot answer "who on our team looked at this guest's card" today.
---
## 10. Liability, term, governing law
- The agreement is in force while your subscription is in force and while we process data on your instruction; the provisions on confidentiality, deletion and assistance survive its termination to the extent needed to perform them.
- Liability is governed by the main contract (the Terms of Service) and by law; this agreement does not expand it.
- **The governing law and jurisdiction depend on the brand and the legal entity** providing the service to you; the specific details are inserted into the signed version. The Russian contour is governed by Russian law and 152-FZ terminology; the international contour by the Terms of Service of the relevant brand and by GDPR/UK GDPR where they apply to you.
- If this page and a signed document disagree, **the signed document prevails**.
---
## Annex A — description of processing
The "Term" column states what sets the term. "Proposed" means the period is built into the product as a sensible default but has not been legally approved and is finalised in the signed version.
| Module | Data subject | Data | Purpose | Term |
|---|---|---|---|---|
| Orders and delivery | guest | name, phone, delivery address, order contents and total, comment | accept and fulfil the order | 365 days after the order is closed (proposed) |
| Table reservations, appointments | guest, employee | name, phone, time, service, provider, preferences | book and remind | until you delete it or the subscription ends |
| Customer base and loyalty | guest, lead | contacts, purchase history, tags, consents | repeat sales on your legal basis | until the card is deleted |
| Guest chats | guest | message contents, messenger handle, attachments | answer the enquiry | until deleted |
| Calls | guest, employee | number, call recording, transcript, AI metrics and scores | communication, enquiry review, quality control | until deleted; audio lives in a separate cold archive of the brand |
| Website forms and enquiries | visitor | whatever the person entered in the form, the source page | accept the enquiry | until deleted |
| Cookies and the consent log | visitor | consent identifier, categories, timestamp, text version | evidence of consent | as long as you keep the log (CSV export available) |
| Hotel guests | guest | contacts, identity document, address, health and dietary restrictions | accommodation and mandatory registration | contacts, address, health — 90 days after checkout (proposed); the document — per the country's rule |
| Pickup-point parcels | guest | full name, phone, tracking number | hand over the parcel | until deleted |
| Employees and HR | employee, applicant | full name, identity document, position, schedule, salary, medical certificate, sick leave | access to the panel and till, personnel records and reporting | per the country's rule (personnel file, medical certificate, sick-leave certificate) |
| Receipts and fiscal data | guest | settlement attribute, amount, email or phone for an electronic receipt | statutory fiscal duty | per the country's rule (in Russia — the 54-FZ archive) |
| Knowledge base | anyone you put into a document | the contents of the materials you upload, search queries, technical file metadata | search and answers over your documents | until the document is deleted; for residual traces see §4 |
| Account users | owner, employee with a login | email, name, role, password hash, PIN hash | access to the account | the subscription term |
| Counterparties and documents | counterparty representative | name, contacts, registration details, correspondence about a document | accounting for settlements and exchanging documents | until deleted; accounting periods per the applicable rule |
---
## Annex B — security measures
**Transport and storage**
- All traffic to the panel, the storefront and the API runs over **HTTPS/TLS**; public addresses are served behind a CDN.
- Objects in storage are encrypted **on the service side** (on AWS — SSE-S3, AES-256; a customer-managed KMS key is not used by default). Records in the dedicated personal data contour are encrypted separately — **AES-256-GCM**, with a data encryption key created per "account × data class" pair and wrapped in the cloud's KMS.
- Call recordings live in a **separate cold archive of the brand**, inside the same contour, and remain available by link without any "restore" delay.
**Access separation**
- Staff roles with a choice of sections, access level and location scope; access to a section is not access to the whole account.
- Account isolation by **storage prefix**, plus server-side denial of browser writes to service prefixes.
- Passwords are 8+ characters with composition requirements; **a cashier's PIN is stored only as an irreversible hash**; an API key is shown once at creation; signing out closes the session in every tab.
- Dismissing an employee removes their panel login and **revokes their phone extension** across every location at once.
- Device codes grant access to a single target page (a monitor, a kitchen screen), not to the account.
- Reading the dedicated personal data contour is only possible through a service interface that checks the principal, the account, the scope, a proven business relation, the class and purpose, the field set and the region — and **only with a record written to the audit log**.
**Our access to your data**
- Support access — by the owner's toggle, at the chosen scope, with a session log, and with a live session terminated when consent is withdrawn.
- Partner access — on a request approved by the owner, for a limited time, one session at a time, with a banner in the interface, and with server-side blocks on subscription and payments, owner data, staff permissions, data export, integrations, communications, counterparties and the partner programme.
- Forbidden data classes: **biometrics** are rejected by code. There is no payment card data at all.
**What does not exist — stated plainly**
- No ISO/IEC 27001 certification, no SOC 2 report, no ISPDn attestation and no certified cryptographic means.
- **There is no two-factor sign-in to the panel yet** — it is being prepared; today the login is protected by a long password, separate staff logins and device codes with a PIN.
- No log of your employees' actions, no DSAR console and no point-in-time account restore.
- The dedicated personal data contour **does not yet cover every section**: it has been rolled out for hotel guests (migration of existing accounts is under way), while other sections still keep personal data in ordinary account documents. It advances section by section, and we promise no dates.
- On the Russian contour there is **no** support session log, no partner sign-in and no cookie scanner.
---
## Annex C — sub-processors
### Infrastructure
| Sub-processor | Purpose | Place of processing |
|---|---|---|
| **Amazon Web Services** | data and media storage, compute, authentication, CDN, outbound email (Amazon SES) | United States (`us-east-1`); Germany (`eu-central-1`) for the Turkish brands |
| **Yandex Cloud** | the same set in full for the Russian contour: storage, compute, its own authentication, CDN | Russia (`ru-central1`) |
### Artificial intelligence
International contour: requests go through the **polza.ai model aggregator** rather than straight to the vendor. The available vendors are **OpenAI**, **Google**, **xAI** and **DeepSeek**; which one is in use is visible and switchable in the "AI models" section. Some features call a vendor directly: knowledge base search and answers go to OpenAI (embeddings, answers, text recognition in images), and the guest-facing AI menu concierge goes to Google Gemini (an excerpt of your knowledge base of up to 4,000 characters is included in the prompt together with the menu and the guest's question).
Russian contour: **Yandex Cloud Foundation Models** (embeddings, answers, re-ranking, summaries) and **Yandex Vision OCR** (text recognition in images), with request logging disabled where the provider offers that setting. We do not apply an equivalent setting with foreign providers and rely on their standard API terms, under which API data is not used to train their models.
You may connect **your own OpenAI-compatible endpoint** — in that case you choose the provider, and it becomes your recipient rather than our sub-processor.
### Speech recognition
| Contour | Engines | Who chooses |
|---|---|---|
| International | Amazon Transcribe, Google Speech-to-Text, Microsoft Azure Speech | you — in the "Calls" section settings |
| Russian | Yandex SpeechKit (two tiers — deferred and fast) | — the only one available |
What is transmitted is the recording of the call or the uploaded file; what comes back is the transcript.
### Email and notifications
**Amazon SES** — outbound email: staff invitations, order and reservation notifications, digests, emails to guests. The recipient address and the message contents are transmitted. SES is not used on the Russian contour — some email scenarios there work differently or not at all.
### Recipients you connect yourself
The payment provider (for example, Stripe) · the SIP number and telephony carrier · messengers (Telegram, WhatsApp) · delivery aggregators · marketplaces · the fiscal data operator and government systems (in Russia — OFD, Chestny ZNAK, EGAIS) · analytics counters you installed on your site. What is transmitted to them is determined by the feature you connected; you accept their processing terms directly.
---
## FAQ
**Can we sign this document as it stands?**
No. It is a draft and a description of the actual state of affairs: it carries no party details, no list of your modules and no date. Request the signable version at `security@` on your brand's domain or through [support](/en/docs/support) — you will receive the same text with your details filled in.
**Do you have ISO 27001 or SOC 2?**
No. We hold neither a certification nor an auditor's report, and we will not pass off our cloud providers' certificates as our own. We do complete security questionnaires and provide a description of our measures.
**Who is the operator of our guests' personal data — you or us?**
You are. You decide what to collect and why, you inform your guests and collect their consents. We process that data on your instruction and do not use it for our own purposes.
**How quickly will you delete our data if we leave?**
Within 30 days of the request or of termination. We do not publish retention periods for internal backups — take your own copy via [export](/en/docs/data-export) before deletion.
**Where is the data physically stored, and can we choose the region?**
The brand sets the region: the international contour is in the United States, the Turkish brands are in Germany, `cenaly.ru` is in Russia. You cannot pick a region within one brand; moving means a new account in a different contour.
**Data goes to the United States — how do we cover that as an EEA controller?**
The bases are performance of the contract and Standard Contractual Clauses, and for AI features your explicit consent is requested separately. If a transfer to a third country is unacceptable for you, the Turkish brands run in `eu-central-1` (Germany) — but that is a different brand, not a setting.
**Do you train your models on our data?**
No. Account content is not used to train our models, for advertising or for profiling, and it is not sold. With the AI providers we engage we rely on their standard API terms, under which API data is not used for training by default.
**Can your support staff look at our data without asking?**
No. The "Support access" toggle must be on, you choose the scope, sessions are logged, and withdrawing consent terminates even a live session.
**A guest demands deletion of their data — what do we do?**
Delete their card in [Customers](/en/docs/customers). The "My data" button on the storefront clears only the guest's own device. For deep cleaning of residual traces (AI interaction logs, caches) ask us — we act within the same 30 days.
**What about call recordings — those are sensitive?**
Recordings and transcripts live in your brand's cold archive, inside the same contour, and access to the "Calls" section is configured separately, down to named individuals. Warning participants that a call is recorded is your duty as the operator, and in a number of countries recording without it is unlawful.
---
## Related topics
- [Security and data](/en/docs/security-privacy) — where data lives, who has access, what to do after an incident
- [Account and sign-in](/en/docs/account) — passwords, device codes, support access
- [Data export](/en/docs/data-export) — take everything out before deletion
- [Getting help](/en/docs/support) — requesting a signed DPA and the `security@` channel
- [Subscription and plans](/en/docs/subscription) — the term of the contract
- [Legal documents](/en/docs/legal-docs) — privacy policy and terms for your guests
- [Cookies and consent](/en/docs/cookie-consent) — the banner and the consent log as evidence
- [Customers](/en/docs/customers) — deleting a specific guest's data
- [Employees and shifts](/en/docs/staff) — roles and location scope
---
# Troubleshooting
Find your symptom, run three checks — and only if that does not help, go to the in-depth article or to support. The order of the checks is not random: the most frequent cause is on top.
| Symptom | Section | In-depth article |
|---|---|---|
| The guest sees no menu, or an old one | [QR storefront](#the-qr-storefront-does-not-open-or-shows-an-old-menu) | [QR menu](/en/docs/qr-menu) |
| An item is missing from the storefront | [Item missing](#an-item-is-missing-from-the-storefront-although-it-exists-in-the-panel) | [Scheduling](/en/docs/scheduled-menus) |
| Orders do not arrive | [Orders](#guest-orders-do-not-arrive) | [Orders](/en/docs/orders) |
| Nothing prints | [Printing](#nothing-prints-or-the-wrong-thing-prints) | [Kitchen printing](/en/docs/kitchen-printing) |
| Hardware is not visible | [Bridge](#the-bridge-is-offline-unpaired-or-another-location) | [Cenaly Hardware Bridge](/en/docs/hardware-bridge) |
| The POS will not accept payment | [POS](#the-pos-will-not-accept-payment) | [Cash shift](/en/docs/cash-shift) |
| The receipt was not issued | [Fiscalization](#the-fiscal-receipt-was-not-issued) | [Fiscalization](/en/docs/fiscal) |
| No internet | [Offline](#the-internet-went-down) | [If the internet goes down](/en/docs/offline) |
| The panel will not let me in | [Sign-in](#cannot-sign-in) | [Account and sign-in](/en/docs/account) |
| The guest cannot pay online | [Online payment](#the-guests-online-payment-fails) | [Payments](/en/docs/payments) |
| No notifications or submissions | [Notifications](#notifications-and-form-submissions-do-not-arrive) | [Campaigns](/en/docs/campaigns) |
| A custom domain does not open | [Domain](#a-custom-domain-does-not-open) | [Custom domain](/en/docs/custom-domain) |
| A delivery platform does not sync | [Aggregators](#no-orders-from-a-delivery-platform-or-the-menu-there-is-old) | [Integrations](/en/docs/integrations) |
| A phone does not register | [Telephony](#a-phone-does-not-register-on-the-pbx) | [SIP phones](/en/docs/sip-phones) |
---
## The QR storefront does not open or shows an old menu
1. **Check it the same way a guest does** — from a phone via the QR code, not from the panel. The storefront is served through a CDN and **does not depend on the internet at the venue**: if you have no connection but the guest does, the menu will open for them.
2. **An old menu is the cache.** Wait and reload the page with the cache cleared (Ctrl+F5 on a computer, incognito mode on a phone). Price and name edits do not arrive instantly.
3. **Check that the location is not paused and that the QR points where it should.** A code is printed for a specific location and table; with several locations it is easy to hand out the wrong sheets — [QR codes and devices](/en/docs/device-codes). Still no luck — [QR menu](/en/docs/qr-menu).
---
## An item is missing from the storefront although it exists in the panel
Four causes, by frequency:
1. **The stop list** — the item is marked “86” at this location.
2. **Scheduling** — the item is outside its availability window (breakfast, lunch, happy hour) — [Scheduling and happy hour](/en/docs/scheduled-menus).
3. **Visibility and price at this location** — the item is hidden at this exact location, or it has no price: without a price it is not shown.
4. **A plan limit** — the new item was not created at all. Editing stays available — [Subscription](/en/docs/subscription).
If the item did not appear **in the guest's language**: languages are picked in the storefront settings, and a translation does not appear the instant a language is added.
---
## Guest orders do not arrive
1. **Check whether the order is waiting to be accepted by an operator.** A location has an intake mode: either a human accepts the order in the “Orders” section, or “straight to work” is switched on. Until it is accepted, it does not reach the kitchen — [Orders](/en/docs/orders).
2. **Switch the sound on on the “Orders” page.** The signal for a new order and a waiter call is toggled by the sound button at the top of the page; besides, a browser will not play sound in a tab that has never been clicked.
3. **Reload the page.** Statuses arrive over a websocket — when the connection drops the feed freezes, and a reload revives it.
4. **Check that there is someone to move the order on.** “Stuck in a status” usually means the kitchen display, the pickup display or the courier board is switched off or simply not open anywhere.
For orders **from a delivery platform** — see [Aggregators](#no-orders-from-a-delivery-platform-or-the-menu-there-is-old).
---
## Nothing prints, or the wrong thing prints
1. **The bridge first, the printer second.** Receipts, kitchen tickets and labels print only through Cenaly Hardware Bridge on the computer that runs the POS. If the bridge is offline, the job joins the **print queue** and goes out by itself when the bridge returns: the queue survives a restart. The bridge status is in the “Hardware” section (`/hardware`), see [Bridge](#the-bridge-is-offline-unpaired-or-another-location).
2. **It prints on the wrong printer** — the station has no printer of its own, so the system chose “any available”. Map the stations explicitly — [Kitchen and floor printing](/en/docs/kitchen-printing).
3. **Hieroglyphs or empty squares instead of letters** — the printer cannot handle your script. Switch on the raster font for the device: the text is printed as an image and works in any language.
4. **Cut off on the right** — the device settings specify a paper width larger than the real one. **Labels come out the wrong size** — check the roll format and that printing goes to a label printer, not a receipt printer.
---
## The bridge is offline, "unpaired" or "another location"
Open the **Hardware** section (`/hardware`) and look at the status.
| Status | What it means | What to do |
|---|---|---|
| **Offline** | The bridge service is not running on this computer | Start the bridge (or install it: the page has downloads for your OS) |
| **Searching** | The bridge is starting and polling the ports | Wait |
| **Unpaired** | The bridge does not know which location it serves | Pair it with a location on the page |
| **Another location** | The bridge is paired with another of your locations | The “Use here” button |
| **Another brand** | The bridge was downloaded from a different platform domain | Install the bridge from your brand's CDN |
Then, in order:
1. **The bridge and the panel must be on the same computer** — they talk inside the machine. A panel opened on a phone will not see a local bridge: printing from another device needs the bridge's **cloud link**.
2. **“The printer used to be there and now it is gone”** — open “PC details” in the account hardware registry: it shows every COM port with a note on which process holds it, and every drive with free space. A frequent cause is a port held by a vendor utility.
3. **An old bridge shows an empty device list** — update the bridge with the button on its page.
In depth — [Cenaly Hardware Bridge](/en/docs/hardware-bridge).
---
## The POS will not accept payment
1. **The cash shift is not open.** This is cause number one: open the shift with a cash float — [Cash shift and Z-report](/en/docs/cash-shift).
2. **The POS asks for a manager PIN** — by design: deleting items, discounts, refunds and reprints above a threshold are confirmed by a manager and written to the risk log.
3. **An item is missing from the tiles** — see [Item missing](#an-item-is-missing-from-the-storefront-although-it-exists-in-the-panel): the POS and the storefront read one catalogue.
4. **The X-report will not build offline** — it is computed in the cloud. A Z-report after closing a shift without a connection will be produced once the queue of cash operations arrives.
---
## The fiscal receipt was not issued
1. **Read the “Receipt not issued” window.** It states the cause by the till's own error code and walks you through the steps; it also offers “Take a Z-report” and “Retry receipt” when the cause is visible from the cloud.
2. **The most frequent causes are at the device:** out of paper, an unclosed receipt on the till, more than 24 hours without a Z-report, an error that must be cleared with a key on the till itself. The window says so explicitly.
3. **If it is a hardware fault (modem, SIM, memory)** — no retry is offered, it would not help: a service engineer is needed.
The window can be closed: the sale is already recorded and the payment is taken — the fiscal receipt can be issued from there once the till is ready. The queue should not have to wait.
⚠️ While the till is unavailable, orders and payments live on in the system, but no fiscal document appears — in most countries that is a reason to suspend sales. In depth: [Fiscalization](/en/docs/fiscal); for Russia — [Who needs an online till](/en/docs/kkt-who-needs).
---
## The internet went down
1. **The POS keeps working** — it rings up orders, prints and fiscalizes through the bridge on the same computer. Everything that has to reach the cloud piles up in a queue on the device.
2. **Watch the “N not sent” chip**: if it does not go down, check that the connection really is back and leave the POS tab active. If a red “N not delivered” banner appears, those records must be entered manually, reconciled against the shift's paper receipts.
3. **The kitchen display does not work offline** — tickets travel through the cloud. Until the connection is back, the kitchen runs on printed tickets.
4. **Card payment through the bank terminal cannot be taken** — it needs authorization at the bank. Take cash.
The full picture, including the limits (24 hours for the queue, seven days for the session) — [If the internet goes down](/en/docs/offline).
---
## Cannot sign in
1. **Check the domain.** An account lives in its own brand's contour: a `cenaly.com` account will not be let into the Russian `cenaly.ru` and vice versa. The Russian contour has no Google sign-in — it has its own sign-in methods.
2. **Forgotten password** — “Recover password” on the sign-in page: a code arrives by e-mail, then a new-password form (at least 8 characters, upper and lower case, a digit, a symbol). No e-mail — check spam and check whether that is the right address.
3. **The sign-in page “hangs”** — a stuck browser cache: a button appears to clear the cache and retry, press it. Incognito mode also helps.
4. **Staff do not sign in with a password.** The owner issues a **sign-in code** to a waiter, a cashier or a device (sign-in by link or QR, with a PIN if the code is protected); codes live in the “QR codes” section, the “Devices” tab. QR sign-in is deliberately limited in rights and goes straight to the right screen.
In depth — [Account and sign-in](/en/docs/account).
---
## The guest's online payment fails
1. **Check whether the “Online payment enabled” toggle is on** for the location: without it the payment button is not shown to the guest, even with the keys entered.
2. **Check the connection mode.** Real cards do not go through in test mode — live acceptance needs the provider's live keys. The reverse also happens: live keys and a test card.
3. **Check that the provider works in your country at all.** The list is filtered by the location's country and currency, and cards marked “Soon” have no live connection whatsoever. Russia currently has no ready online payment providers — what remains is payment at the till and on delivery.
4. **Check a specific order.** The status (unpaid / pending / paid / refunded) is visible in the “Orders” section; a test order with test keys is the fastest way to see where the flow breaks.
In a network a provider is connected **for each location separately**. In depth — [Payments](/en/docs/payments), [Stripe](/en/docs/stripe).
---
## Notifications and form submissions do not arrive
1. **First check the section where records are guaranteed to be.** Form answers and website submissions **always** land in “Leads”, even if no e-mail went out. An e-mail, a message in the work chat and a webhook are **additional** notifications and must be switched on in the campaign settings. An auto-reply to the guest requires a subject line: without it the e-mail is not sent.
2. **Sound signals are switched on on the page.** The sound button in the “Orders” header covers new orders and waiter calls; a browser stays silent in a tab that has never been clicked.
3. **Check the recipient address** — the team replies and notifies to the account e-mail; look in spam.
4. **A widget on your own website stays silent** — check the installation (“Check installation” in the “My website” section), a foreign `data-domain` in the tag, and the 5-minute CDN cache. A tag inserted through Google Tag Manager will not be seen by the check — look at the site with your own eyes. An unpaid paid extension never reaches the page, even with the toggle on.
In depth — [Campaigns](/en/docs/campaigns), [My website](/en/docs/site-widgets).
---
## A custom domain does not open
1. **Wait and press “Check now”.** DNS does not propagate instantly — at some providers the cache holds for up to an hour. A record can be checked with any online DNS lookup.
2. **Switch off the Cloudflare proxy** (the cloud icon must be grey, DNS only mode). While the proxy is on, no certificate will be issued, and the panel will show the ordinary “the record points elsewhere” — there is no separate message about the proxy.
3. **A root domain needs a second record** — the ownership challenge (`_cf-challenge…` / `_acme-challenge…`), with exactly the value shown in the panel. Without it activation never completes, even if ALIAS/ANAME is set correctly.
4. **“It opens, but shows the wrong menu”** — the domain is attached to another location. **“The domain is taken”** — it is already connected to another platform account; if the domain is yours, write to support.
In depth — [Custom domain](/en/docs/custom-domain).
---
## No orders from a delivery platform, or the menu there is old
1. **There are no live partner connections to aggregators right now.** The Wolt, Glovo, Deliveroo and Yandex Eda connectors are written and tested against test data, but they cannot yet be switched on at a live location — it is too early to plan work around them. This is the first expectation to check.
2. **The platform's side needs the POS integration enabled.** Without a request to the platform itself, neither menu nor orders will start flowing, whatever toggles are set on our side.
3. **An old menu on the platform** is a catalogue push: it is done explicitly, not “by itself”. Also check the stop list and the location pause: they travel as separate events.
What is ready and what is merely a request card is shown honestly in the app store. In depth — [Integrations](/en/docs/integrations), [Wolt](/en/docs/integration-wolt), [Glovo](/en/docs/integration-glovo), [Yandex Eda](/en/docs/integration-yandex).
---
## A phone does not register on the PBX
1. **The login was not entered in full** — the whole login of the form `sip-…-` is required, not just the number, and in both fields: User Name and Auth Name.
2. **The password is stale** — somebody pressed “Reset password”. Do not guess it, issue a new one.
3. **The server address is wrong** — a venue with a dedicated machine has its own address; copy it from the credentials window.
4. **The phone is completely silent (not even a rejection)** — switch the transport from TCP to UDP; check whether the router blocks UDP 5060 and whether SIP ALG is on.
5. **The wrong firmware** — units with Teams/Skype for Business/Zoom firmware will not register on an ordinary SIP PBX until SIP firmware is flashed. From the outside it is the same model.
In depth — [SIP phones](/en/docs/sip-phones); every brand has its own page decoding the messages on the screen.
---
## What to tell support
If the checks did not help, write with the full context straight away — it saves a round of correspondence:
- the panel domain and the account e-mail, the location name;
- the time of the event with the time zone;
- the steps: what you clicked, what you expected, what you got, plus a screenshot or a short video of the whole screen — address bar included;
- the order, receipt or booking number, if the problem is in one specific record; for hardware — the model and the “details” line from the error window.
How to open the request form from the panel and what goes out with the diagnostics — [How to get help](/en/docs/support).
---
## Related articles
- [How to get help](/en/docs/support) — the AI assistant, the request form, what to attach
- [FAQ](/en/docs/faq) — short answers about plans, countries, devices and data
- [If the internet goes down](/en/docs/offline) — what works without a connection and what the shift should do
- [Cenaly Hardware Bridge](/en/docs/hardware-bridge) — bridge statuses, devices, the print queue
- [Cash shift and Z-report](/en/docs/cash-shift) — opening a shift, cash drops, reports
- [Fiscalization](/en/docs/fiscal) — the fiscal receipt by country and the “Receipt not issued” window
- [Account and sign-in](/en/docs/account) — passwords, sign-in codes, QR sign-in
- [Security and data](/en/docs/security-privacy) — support access, revoking codes and sessions
---
# Frequently asked questions
Short answers. If you need a diagnosis by symptom — [Troubleshooting](/en/docs/troubleshooting); if you need a human — [How to get help](/en/docs/support).
---
## Plans and payment
### Can I start for free?
Yes. There are four plans — free, Basic, Premium and Enterprise: the free one is always available and needs no card, and the paid ones can be explored during a trial period. Comparison and prices — on the [pricing](/en/pricing) page, the contents — in [Subscription](/en/docs/subscription).
### How much does it cost?
Prices and plan contents live on one page — [pricing](/en/pricing); we do not duplicate them in the help centre so that they cannot drift apart.
### What exactly does a plan limit?
There are five numeric limits: the number of locations, catalogue items, connected devices, orders per month and auto-translation languages. The rest of the difference between plans is not limits but the features themselves — [Subscription](/en/docs/subscription).
### What happens if I hit a limit?
Limits are soft: they stop you adding beyond the plan but **never switch off what already exists**. Guest order intake is not blocked by a limit at all — you only get a warning.
### Can I change or cancel a plan?
At any time. Upgrading, you pay the difference for the remaining period; downgrading, the new plan takes effect from the next payment — [pricing](/en/pricing).
### Is there a discount for paying annually?
Yes, annual payment comes at a discount of about 20 % against twelve monthly payments — [Subscription](/en/docs/subscription).
### Can I pay by invoice rather than by card?
Yes. The “Subscription” page has an “Issue an invoice” button — convenient for a company and bank transfers; the same page offers PayPal and redirect providers for paying by card — [Subscription](/en/docs/subscription).
### What are AI credits and how do they differ from the balance?
They are a separate balance for AI features (generating photos and descriptions, analysing calls). The subscription page shows the remaining credits, the monthly spend per feature, a bill forecast and a monthly cap — [Subscription](/en/docs/subscription).
### Are paid extensions part of the plan or separate?
Separate: sections and integrations are bought as cards in the [App store](/en/docs/app-store) on top of the plan, and “Own website” is a subscription per location.
---
## Countries and languages
### Which countries does the platform work in?
The storefront, catalogue, POS and orders — in any country. What differs by country is **fiscalization** and **online payment**: there the list is specific — [Fiscalization](/en/docs/fiscal), [Payments](/en/docs/payments).
### How many languages does the menu work in?
Forty-five, with automatic translation. How many languages **your** account gets is set by the plan — [QR menu](/en/docs/qr-menu).
### Do I need fiscalization?
It depends on the country and the type of activity: in some places an online till is mandatory for food service, in others a receipt is required for any settlement. Check the exact requirements with your accountant; what the platform can do is in [Fiscalization](/en/docs/fiscal).
### In which countries is there a live fiscal receipt already?
Full fiscalization currently works in Russia (54-FZ) and, as a tax invoice, in the United Kingdom, Australia, New Zealand and the UAE. For other countries see the status in [Fiscalization](/en/docs/fiscal).
### How does the Russian contour differ?
Accounts on `cenaly.ru` live in a separate cloud, have their own sign-in methods (there is no Google sign-in there), have no guest online payment yet, and part of the analytics (finance, guest statistics, kitchen analytics) is unavailable. The Russian regulatory contours — 54-FZ, “Chestny ZNAK”, EGAIS — conversely exist only there.
### Can locations be in different countries?
Yes. Every location has its own country, currency, set of languages, taxes, tips and service charge — [Multi-location](/en/docs/multi-location).
---
## Devices and hardware
### Does the guest have to install an app?
No. The menu opens from a QR code in an ordinary phone browser — [QR menu](/en/docs/qr-menu).
### Do I need a dedicated POS appliance?
No. The POS is a page in a browser on any computer or tablet, it installs “as an app” and keeps working when the connection drops — [POS](/en/docs/pos).
### How do I connect a receipt printer?
Through **Cenaly Hardware Bridge** — a Windows or Linux service on the same computer as the POS. The bridge discovers USB/LAN/Bluetooth devices itself; the macOS version is “coming soon” — [Cenaly Hardware Bridge](/en/docs/hardware-bridge).
### Can I print without a computer, “straight from the cloud”?
No: printing always goes through a bridge on some PC. But you can print **from another device** — the command reaches the bridge through the cloud, so a waiter prints from their own phone to the printer behind the counter.
### What hardware is supported?
Receipt, kitchen and label printers, scanners, scales, customer displays, cash drawers, payment terminals, fiscal devices, cameras, SIP phones and gateways — an overview by class with the minimum kit per format: [Hardware](/en/docs/hardware).
### Are there mobile apps?
Yes, for Android and **for staff only**: Admin, Service (waiter), KDS, Courier, POS, Rider and CRM. Sign-in uses the same credentials — [Mobile apps](/en/docs/mobile-apps).
### Does the POS work without the internet?
Yes: it rings up orders, prints and fiscalizes through the bridge, and everything that has to reach the cloud piles up in a queue on the device. The kitchen display does not work meanwhile — tickets travel through the cloud — [If the internet goes down](/en/docs/offline).
### How many tills and bridges can I connect?
Hardware is kept per location: each has its own bridge or several (universal, equipment, cameras, telephony), while the account hardware registry shows every bridge and device of every location at once.
---
## Data and security
### Where is my business data stored?
In the cloud of the brand you signed up under: `cenaly.com` and `cenaly.com` are on AWS, `cenaly.ru` is on Yandex Cloud. In depth, including residency — [Security and data](/en/docs/security-privacy).
### Who on your team can see my data?
Nobody by default. A support engineer enters the account only after you switch on “Support access” in the settings, and you revoke it in one click — [Security and data](/en/docs/security-privacy).
### Can I take my data with me?
Yes, by yourself and without contacting support: **Settings → Data export** builds a ZIP (settings, catalogue, orders, customers, reviews), and there is also a quick catalogue CSV — [Data export](/en/docs/data-export).
### What does not go into the export?
Secrets — PINs, integration keys, tokens and passwords — and photos: the files keep links to the images. A finished archive is kept for 7 days.
### Do you store guests' cards?
No. The guest pays on your payment provider's side, the money goes straight to your account with them, and card details never pass through the platform — [Payments](/en/docs/payments).
### How do I delete my account?
First build an [export](/en/docs/data-export) — after deletion there will be nothing left to take — then write to support. The request is fulfilled within **30 days** of being confirmed. The procedure and what gets deleted — [Account and sign-in](/en/docs/account).
### What should I do if a password may have leaked?
Change the password, revoke the device sign-in codes and switch off “Support access” if it was on, then write to us — [Security and data](/en/docs/security-privacy).
### Is there two-factor authentication?
Not yet — it is **in preparation** (an authenticator app). We promise no dates; until then the sign-in is protected by a long password, a separate login for every employee and device codes with a PIN on shared tablets — [Account and sign-in](/en/docs/account).
### Where do I report a vulnerability in the platform?
To a dedicated address — `security@` on your brand's domain (for example `security@cenaly.com`) — not to general support — [How to get help](/en/docs/support).
### Do you make backups for me?
We do not publish retention periods for internal copies and there is no “restore to a date” button in the panel, so **make your own export** before a bulk import or a catalogue clean-up — [Data export](/en/docs/data-export).
### Do I need a cookie consent banner?
If you have a website and work with guests from the EU or other countries with such requirements — yes. A banner in 45 languages, automatic tracker blocking and a consent log are part of the platform — [Cookie consent](/en/docs/cookie-consent).
---
## Integrations
### Can I take orders from delivery aggregators?
The Wolt, Glovo, Deliveroo and Yandex Eda connectors are written, but **there are no live partner connections yet** — it is too early to build your work on them. The state of each platform is shown honestly in the app store — [Integrations](/en/docs/integrations).
### Is there a 1C integration?
Yes: importing items and counterparties from 1C:Accounting over OData (Russia, Belarus, Kazakhstan, Georgia) — [1C](/en/docs/onec).
### What works two-way right now?
Evotor (catalogue, stock, orders, shifts, staff), WooCommerce (catalogue, orders, stock) and Saby Docs (EDI). Integrations with accounting systems are part of the Premium plan and above — [Integrations](/en/docs/integrations).
### My till or inventory system is not on the list — what now?
Two routes: replace the third-party system with our POS (there are layout presets “like iiko” and “like r_keeper”), or move your data by file through the migration wizard — no API on the old system is needed — [Migrating to us](/en/docs/migrate).
### Can I upload a bank statement?
Yes, by file already: “Counterparties” → the “Bank” tab, with operations matched to orders and documents. Direct API exchange with banks is planned.
### Is there an API and webhooks?
Yes — for orders, catalogue and the till, plus a headless storefront mode: [Integrations](/en/docs/integrations), [Headless](/en/docs/headless), [Cash server API](/en/docs/cash-server-api).
### Can I sell on marketplaces?
The Ozon, Wildberries and Kaspi adapters connect in pilot mode; the other platforms of the world catalogue still work as a “Soon” request — [Integrations](/en/docs/integrations).
---
## Several locations
### Do I need a separate account per location?
No. Locations live in one account, each with its own prices, hours, hardware and integrations — [Multi-location](/en/docs/multi-location).
### Is the catalogue shared or per location?
The catalogue is one per account: an item is created once, and a location picks what to show and overrides the price where needed.
### How many locations can I open?
One on the free plan; how many Basic, Premium and Enterprise allow is on the [pricing](/en/pricing) page — we do not duplicate the numbers in the help centre so that they cannot drift apart. The limit is soft: it stops you creating a new location but does not switch off existing ones — [Multi-location](/en/docs/multi-location).
### Does this suit a franchise?
Yes: co-ownership of a location, role-based rights, network-wide analytics and the franchisee's own storefront branding — [Multi-location](/en/docs/multi-location).
### Can I give a manager access to their location only?
Yes, rights are configured per section and per location — [Staff and shifts](/en/docs/staff).
---
## Partnership
### Who can become a partner?
Any account owner: the “Partner program” section is switched on by a card in the app store, then an application is filled in. No separate login is needed — [Partner program](/en/docs/partner-program).
### How much does a partner earn?
Rates and the level are assigned by a platform representative after the application is reviewed; the current terms are visible in the partner cabinet. Until the application is approved a partner has no rates and no clients — and the section says so in plain words.
### An implementer set us up — can we attach them to the account?
Yes: the “Partner” block on the “Subscription” page accepts the partner's code or link. The partner will be able to sign into your account only with your consent — [Partner program](/en/docs/partner-program).
---
## Help and onboarding
### What is the fastest way to find an answer inside the panel?
Ask the AI assistant: it knows which page you are on, which country your location works in and which hardware is connected, and the ✨ spark next to a setting's heading explains that exact block — [How to get help](/en/docs/support).
### How do I reach a human?
With the “🛟 Contact support” button at the bottom of the assistant panel, or by writing to `support@cenaly.com`. What to attach so you do not exchange three e-mails — [How to get help](/en/docs/support).
### Where do I start on day one?
With the checklist for your format — [First day](/en/docs/first-day): what to switch on right away and what can honestly wait.
---
## Related articles
- [How to get help](/en/docs/support) — the AI assistant, the request form, implementation partners
- [Troubleshooting](/en/docs/troubleshooting) — diagnosis by symptom
- [First day](/en/docs/first-day) — launch checklists by business type
- [Subscription](/en/docs/subscription) — plan, limits, balance and invoice
- [Multi-location](/en/docs/multi-location) — a network of locations, franchise, rights
- [Security and data](/en/docs/security-privacy) — where data lives and who sees it
- [Data export](/en/docs/data-export) — take everything as ZIP and CSV
- [Hardware](/en/docs/hardware) — what connects and the minimum kit
- [Glossary](/en/docs/glossary) — what the words in the panel mean
---
# Glossary
This page collects the words you will meet in the cenaly.com admin panel and in this help centre. The format is always the same: the term, one or two sentences, and a link to the article that covers it in full.
---
## How to read this glossary
Two things are worth knowing up front, otherwise some entries will look contradictory.
**Words depend on the business type.** The same entity is a "dish" for a restaurant, a "product" for a shop, a "service" for a salon or a service company and a "parcel" for a pickup point; a "guest" becomes a "customer" in a shop, a "client" in a salon and a "recipient" at a pickup point. The panel substitutes the right word on its own, and this glossary gives the neutral meaning.
**Some terms are Russia-only.** KKT, the fiscal memory unit, OFD, EGAIS and Chestny ZNAK marking are flagged "Russia": these entities do not exist in other countries, while on cenaly.ru they are the backbone of till work.
---
## A–B
**Add-on (extension)** — a feature or an integration switched on in the app store. Some add-ons are included in the plan, others are paid extras. → [App store](/en/docs/app-store)
**Agent prompter** — hints from your knowledge base that an employee sees during a live call; they can switch the knowledge build without leaving the conversation. → [Knowledge base](/en/docs/knowledge-base)
**Aggregator** — an external delivery platform (Wolt, Glovo, Yandex Eda) whose orders arrive in the panel alongside your own. → [Integrations](/en/docs/integrations)
**AI credits (LLM credits)** — the remaining balance for AI tasks on the account; shown in the subscription next to the plan. → [Subscription](/en/docs/subscription)
**AI secretary** — the voice robot of your own PBX: it answers the call, replies from the knowledge base and hands the conversation over to a human. → [Telephony](/en/docs/telephony)
**App store** — the catalogue of the panel's add-ons and integrations: a section is switched on with a toggle there, and an integration is configured in a window over the catalogue. → [App store](/en/docs/app-store)
**Barcode scanner** — almost always works as a keyboard: it "types" the code it reads wherever the cursor is, so no driver is needed. → [Hardware](/en/docs/hardware)
**Booking** — a request for a specific time: a table in a restaurant or a room in a hotel. It lives on the floor panel and, for a hotel, on the booking calendar as well. → [Table reservations](/en/docs/reservations)
**Booking calendar (21-day view)** — the hotel's forward view: bars of bookings and current stays across rooms, so you can see what is free and when the next guest arrives. → [Hotel](/en/docs/hotel)
**Bridge (Cenaly Hardware Bridge)** — a free program on the till computer through which the browser talks to hardware: printers, scales, the fiscal register, the card terminal. Without it the till works, just without paper. → [Cenaly Hardware Bridge](/en/docs/hardware-bridge)
**Business type** — the choice made at sign-up that tunes the system to your format: which sections are on, which service mode the till uses, and what everything is called. It can be changed at any time. → [First day](/en/docs/first-day)
---
## C–D
**Callback** — a site widget: the guest leaves a number and the platform calls back on its own, with retries on your schedule. → [Callback](/en/docs/callback)
**Cash drawer** — connects by cable to the receipt printer, not to the computer, and is opened by the printer's pulse on a command from the till. → [Hardware](/en/docs/hardware)
**Cash shift** — the till's working period from opening to the Z report: sales, cash-in and cash-out land in it, and the discrepancy is calculated at closing. → [Cash shift](/en/docs/cash-shift)
**Catalogue** — the section holding what you sell. A restaurant calls it "Menu", a shop "Catalogue", salons and service companies "Services", a blog "Articles". → [QR menu](/en/docs/qr-menu)
**Catalogue import** — filling a menu or a catalogue from a ready-made list: a price list in Excel, Word, PDF or a photo, or a link to a site — the AI recognises the items and the prices and shows a plan of changes for review; for CSV there is a fast route without the AI. → [AI catalog import](/en/docs/catalog-import)
**Collection** — a storefront group of products, assembled by hand or by a rule; in the online shop it is a page of its own with its own address. → [Collections](/en/docs/collections)
**Combo** — a set built from several items ("build your lunch") with a choice inside; stock deduction expands the recipe of every item in the set. → [QR menu](/en/docs/qr-menu)
**Counterparty** — a company or a private person in the CRM with whom you keep documents, contracts and settlements. Not the same as a guest: a counterparty is a party to a deal. → [Clients (CRM)](/en/docs/counterparties)
**Courier** — an employee of your own delivery with their own screen and mobile app; not to be confused with an aggregator's courier. → [Own delivery](/en/docs/delivery)
**Customer, guest, client, recipient** — one and the same entity in the contacts directory; the word is substituted according to the business type. → [Customers](/en/docs/customers)
**Customer display** — a second screen showing the guest the total and the items: a browser page on the till's second monitor, or an app on a tablet in the same network. → [Hardware](/en/docs/hardware)
**Delivery zone** — an area on the map with its own delivery fee, minimum order and delivery time. → [Commerce](/en/docs/commerce)
**Deposit** — a prepayment for an online booking that holds the slot. Cancel in time and it is refunded; cancel late or fail to show up and it is kept. Moving the appointment does not reset it. → [Appointments](/en/docs/appointments)
**Device login code** — a short code that connects a tablet, a kitchen screen or a monitor to the right location without a login and a password. → [QR codes and device codes](/en/docs/device-codes)
**Digital worker** — a virtual employee that performs repetitive web routine in the owner's own browser — there, where somebody else's system has no API. Skills are installed for a specific person. → [App store](/en/docs/app-store)
**Document** — a printable form, an invoice or a contract that the panel builds from a template and can fill in with AI. → [Documents](/en/docs/documents)
---
## E–G
**EGAIS** (Russia) — the state alcohol accounting system. The till talks to its transport module (UTM) installed on the till PC through the bridge. → [Beer and EGAIS](/en/docs/kkt-egais-beer)
**Expo (handover screen)** — the screen where assembled orders are checked and handed to a courier or a guest: bag stickers and a manifest with the full contents. → [Expo](/en/docs/expo)
**Extension number** — an internal number of an employee or a device on your own PBX. A SIP desk phone, a DECT handset or a gateway registers with the credentials of an extension. → [SIP phone setup](/en/docs/sip-phones)
**Feed (product feed)** — an export file of your products for an external platform (Google, Meta, Pinterest and others): the platform reads it on its own schedule. → [Google Merchant Center](/en/docs/google-feed)
**Fiscal memory unit (ФН)** (Russia) — the protected memory block inside the till that signs receipts and has a service life; once it is exhausted, the unit is replaced. → [Choosing a fiscal memory unit](/en/docs/kkt-fn-choice)
**Fiscalisation** — registering a settlement in the country's tax system and issuing the guest a fiscal receipt. Your own till does it, registered to your own legal entity; we are the transport and the queue. → [Fiscalisation](/en/docs/fiscal)
**Folio** — a room account in a hotel: it opens at check-in, collects charges (including orders placed from the room QR) and is closed with a single settlement at check-out. → [Hotel](/en/docs/hotel)
**Gateway** — a box between your PBX and a "non-SIP" line: a SIM card (GSM/LTE), an ordinary analogue city line (FXO) or ISDN. To the PBX a gateway looks like an ordinary extension. → [GSM gateways and city lines](/en/docs/sip-gateways)
---
## K–M
**KDS (kitchen display system)** — the kitchen screen: tickets by station instead of paper slips, courses, "ready" in one tap. It is designed for a tablet and a monitor, not adapted to a phone. → [Kitchen display (KDS)](/en/docs/kds)
**Kiosk** — a storefront mode on a tablet or a touch terminal in which the guest assembles and pays for the order without a cashier. → [Self-service kiosk](/en/docs/kiosk)
**KKT** (Russia) — the cash register hardware that prints the fiscal receipt and passes it to the fiscal data operator. → [How to choose a KKT](/en/docs/kkt-choose-kkt)
**Knowledge base** — a library of your own documents that the AI assistant, the site chat, the AI secretary, the agent prompter and staff training all draw answers from. → [Knowledge base](/en/docs/knowledge-base)
**Label (badge on an item)** — a badge next to a catalogue item: "spicy", "vegetarian", "new", allergens — from the ready-made library or your own one with an uploaded icon; a label can be shown only in the locations you choose. → [Dish labels](/en/docs/labels)
**Label printer** — a printer of stickers on discrete media (a roll with gaps); not the same as a receipt printer: it speaks another language and has to be calibrated. → [Hardware](/en/docs/hardware)
**Lead (enquiry)** — an inbound request from the site: a form or quiz answer, a callback, an online booking, a table reservation. Everything arrives in one stream in the "Enquiries" section. → [Engagement campaigns](/en/docs/campaigns)
**Location (venue)** — one venue inside the account: its own address, menu and prices, staff, hardware and settings. One account holds as many locations as you need. → [Managing a chain](/en/docs/multi-location)
**Loyalty** — a retention scheme for guests: stamps ("the sixth coffee is free"), points with a redemption cap, or a discount for a regular. All three run on one journal, together with coupons and promo codes. → [Loyalty program](/en/docs/loyalty)
**Market** — our own storefront where the menus of several venues are gathered in one place and the guest picks the venue. → [Market](/en/docs/market)
**Marketplace** — an external product platform your shop exports products to and pulls orders from. The Ozon, Wildberries and Kaspi adapters run in pilot mode; other platforms accept a "coming soon" request for now. → [Integrations](/en/docs/integrations)
**Marking (Chestny ZNAK)** (Russia) — the code on a unit of goods that the cashier scans at intake and at sale, and that the system reports to the state system. → [Marking errors](/en/docs/kkt-marking-errors)
**Membership (package of visits)** — a package of services sold to a client in advance: N visits, a prepaid wallet, or a subscription with a regular charge. Visits are written off as the client comes, and the remainder is visible in their record. → [Appointments](/en/docs/appointments)
**Menu schedule** — a set of items available only on chosen days and hours: business lunch, breakfasts, happy hour with a different price. → [Menu schedule](/en/docs/scheduled-menus)
**Modifier** — an addition or a qualifier for an item ("no onion", "double cheese", "lactose-free milk"). It prints as its own line under the item on the kitchen ticket, the sticker and the bag manifest. → [QR menu](/en/docs/qr-menu)
**Multibutton** — a floating button on your own site that gathers every contact channel (messengers, a call, chat, booking) into one menu. → [Multibutton](/en/docs/multibutton)
---
## N–P
**No-show** — a visit status: the client booked and did not turn up. If there was a deposit, it is kept. → [Appointments](/en/docs/appointments)
**OFD** (Russia) — the fiscal data operator: the intermediary through which receipts travel from the till to the tax authority. → [Receipts are not reaching the OFD](/en/docs/kkt-ofd-not-sending)
**OTA (online travel agency)** — a hotel sales channel: Booking, Airbnb and similar platforms. Availability is synced with them through a channel manager or an iCal file. → [Hotel](/en/docs/hotel)
**Parcel** — the unit of accounting at a pickup point. It is not an order: a parcel has its own carrier, waybill, storage place and recipient. → [Pickup point](/en/docs/pickup-point)
**Partner** — someone who brings clients in through their own link or code and earns a reward for them; the terms are visible in the partner cabinet. → [Partner programme](/en/docs/partner-program)
**Pickup point** — a business type with its own operating model: intake from carriers, storage in cells, handover to the recipient. → [Pickup point](/en/docs/pickup-point)
**PMS (property management system)** — a hotel management system: room inventory, check-in and check-out, folios, the booking calendar. For us it is the "hotel" business type on top of the common core. → [Hotel](/en/docs/hotel)
**Pop-up** — a message on the storefront shown by a scenario: an exit attempt, N seconds on the page, adding a product to the cart. → [Engagement campaigns](/en/docs/campaigns)
**POS (point of sale)** — the till: the panel page where the order is assembled, payment is taken, the receipt is printed and the shift is run. It needs no dedicated hardware and works without the internet. → [POS](/en/docs/pos)
**Pre-check** — the guest's bill before payment. The document is non-fiscal and says so on paper; at a venue with no receipt printer the pre-check is printed by the fiscal till itself. → [Kitchen and floor printing](/en/docs/kitchen-printing)
**Print queue** — the queue of jobs inside the bridge that survives a restart: if the printer is off or out of paper, the job is not lost and prints once the device comes back. → [Kitchen and floor printing](/en/docs/kitchen-printing)
---
## Q–S
**QR menu** — the storefront that opens on the guest's phone from a QR code on the table, in an ordinary browser: no app to install. → [QR menu](/en/docs/qr-menu)
**QR sign-in** — signing in to the panel from a phone using a QR code shown on the computer screen: no password typing on the phone. → [Account and sign-in](/en/docs/account)
**Rate plan** (hotel) — the plan a room is sold on: meals, price by number of guests, day-of-week surcharges, sale restrictions, cancellation policy, channels. → [Hotel](/en/docs/hotel)
**Receipt clichés (header and footer)** — the lines the fiscal register prints at the top and the bottom of every receipt: the venue name, the address, the tax details, a thank-you. Edited line by line in "Register settings" — the cut, logo flags and tax rates live there too. → [Fiscalisation](/en/docs/fiscal)
**Resource** — a resource employee, a room or a chair: an entity that exists in the schedule only as a column and has no login. → [Appointments](/en/docs/appointments)
**Ring group** — the set of extensions your PBX rings on an inbound call; who rings and in which seconds is set by the ring plan grid. → [Telephony](/en/docs/telephony)
**RMA (returns)** — a buyer's return request: the decision, the money back to the original payment method or as a gift card, and the items back into stock. → [Returns](/en/docs/returns)
**Room** — the unit of a hotel's inventory: rooms and beds take the place of tables, and floors the place of halls. → [Hotel](/en/docs/hotel)
**Service** — the catalogue item type for salons, hotels and service companies — the same slot a dish occupies for a restaurant and a product for a shop. → [Appointments](/en/docs/appointments)
**Service charge** — the venue's own surcharge on the bill (fixed or a percentage): configured per location and added to the total as a separate line. It is not a tip — a tip is chosen by the guest and is calculated from the items only, without the service charge. → [Tips](/en/docs/tips)
**Signage monitor** — a TV or a tablet showing your slideshow: item cards, promo banners, a menu board. It opens by a public link in a browser, works offline and picks up changes on its own, including the stop-list and the happy-hour price. → [Advertising monitor](/en/docs/signage)
**SIP trunk** — the connection to a telecom operator that brings a landline or mobile number into your PBX. Unlike a gateway it needs no hardware. → [Connecting a provider number](/en/docs/sip-trunks)
**Specialist** — the person a client is booked with: a column in the daily grid of the appointments journal. They are an employee from the common directory and do not need a login. → [Appointments](/en/docs/appointments)
**Split bill** — splitting the bill at the till: by items, equally between guests, or by guest if the waiter has assigned ticket lines to G1, G2 and so on. Each part is closed with its own payment method. → [POS](/en/docs/pos)
**Stop-list ("86")** — the "we are out of it" mark: the item disappears for the guest and at the till. "86" is the restaurant shorthand; set a period and the item returns to sale on its own. → [Menu schedule and stop-list](/en/docs/scheduled-menus)
**Storage cell** — a parcel's storage place at a pickup point in the rack / shelf / slot scheme; it is assigned automatically at intake. → [Pickup point](/en/docs/pickup-point)
**Storefront** — the public side the guest sees: the QR menu, the shop page or the location's website. The opposite of the admin panel. → [QR menu](/en/docs/qr-menu)
**Sub-partner** — a partner brought in by another partner. There are exactly two tiers: a sub-partner will not have a network of their own. → [Partner programme](/en/docs/partner-program)
**Subscription** — the account's plan: what is included, when the next charge happens, where the invoices and the balance are. → [Subscription](/en/docs/subscription)
---
## T–X
**Table** — a place in the hall an order is attached to; in a hotel a room plays its part, and a counter format has no tables at all. → [Floor plan](/en/docs/tables)
**Tips** — an extra amount from the guest: switched on with a toggle in the location settings, with percentage presets filled in by country. → [Tips](/en/docs/tips)
**Vertical** — the internal name for the business type. It is configuration and terminology on top of one core rather than a separate product: almost every capability is available to any vertical. → [First day](/en/docs/first-day)
**Waiting list** — a queue of guests for a time that is already taken: once it frees up, the platform offers the slot to the next in line. → [Table reservations](/en/docs/reservations)
**Widget** — a cenaly.com block on your own website: chat, online ordering, booking, a pop-up, the multibutton. It goes in with a single tag and does not require changing your storefront. → [My website](/en/docs/site-widgets)
**Workplace** — the switch in the sidebar (Floor, Kitchen, Till, Reception, Stock and others) that narrows the menu down to the sections you need. It is a filter on top of the role's rights, not the rights themselves. → [Staff](/en/docs/staff)
**X report and Z report** — cash shift reports: X is an interim one that does not close the shift, Z is the final one that does. → [Cash shift](/en/docs/cash-shift)
---
## Related articles
- [How to get help](/en/docs/support) — the AI assistant in the panel, support, what to attach to a request
- [FAQ](/en/docs/faq) — short answers about plans, countries, devices and data
- [Troubleshooting](/en/docs/troubleshooting) — by symptom: nothing prints, orders do not arrive
- [Hardware: what connects](/en/docs/hardware) — printers, scanners, scales, fiscal devices, terminals, phones
- [First day](/en/docs/first-day) — launch checklists by business type
---
# Hardware: what connects
You do not need to buy hardware to get started: the storefront opens on the guest's phone, and the till is a page in a browser on any computer or tablet. Hardware comes in when you need paper, weight, barcodes or a fiscal receipt.
The main rule: **a browser does not talk to retail hardware on its own**. Between the page and the metal sits [Cenaly Hardware Bridge](/en/docs/hardware-bridge) — a free program for Windows or Linux installed on the same computer where the till is opened. To see your devices: **Admin panel → Hardware** (`admin.cenaly.com/hardware`).
---
## Who needs what
| Format | Minimum kit | What to add later |
|---|---|---|
| **Cafe, coffee shop** | a PC or tablet for the till + a receipt printer (networked) | cash drawer, payment terminal, a fiscal register if your country requires one |
| **Restaurant with a dining room** | the same + a tablet or monitor for the [kitchen screen](/en/docs/kds) | a kitchen printer per station, a second printer in the bar, a floor monitor |
| **Canteen, fast food** | a till at the counter + a receipt printer | scales (price by weight), a [kiosk](/en/docs/kiosk) on a tablet, an order-ready board, a [signage monitor](/en/docs/signage) |
| **Shop** | till + receipt printer + a **barcode scanner** | scales for loose goods, a shelf-label printer, a customer display, a terminal |
| **Salon, services** | any PC or tablet (a receipt is not always needed) | receipt printer, terminal, a fiscal register by country |
| **Hotel** | a PC at reception + a receipt printer | terminal, fiscal register, a till in the hotel restaurant |
| **Pickup point** | PC + a **scanner** (intake and handover by scan) + a receipt printer | a fiscal register — mandatory for cash on delivery, see [Pickup point](/en/docs/pickup-point) |
A fiscal register is needed where the country's law requires one, and in that case it is not a "later" item but a day-one one — check your country in [Fiscalisation](/en/docs/fiscal).
---
## Three ways to connect
| How | What works this way | What matters |
|---|---|---|
| **Through the bridge** | printers, cash drawer, scales, fiscal register, payment terminal, EGAIS UTM (Russia), cameras | the bridge serves **only its own computer**: a browser cannot reach the bridge on the PC next door |
| **Straight in the browser** | the barcode scanner (it works as a keyboard), the till and kitchen tablets, the kiosk screen, the signage monitor, the customer display as a second screen | no drivers and no bridge needed — just a browser and the network |
| **Through the cloud** | a command to the till from another device, a cloud test print, printing to a printer on **another PC**, cloud payment terminals | both bridges must serve the same location; no VPN and no shared folder needed |
An account can hold several bridges, each with its own role: universal, hardware, cameras or telephony. The **account hardware registry** on the same page lists every bridge and device across the chain.
---
## Receipt and kitchen printers
Through the bridge you print the sale and refund receipt, the [pre-check](/en/docs/kitchen-printing), X and Z reports, kitchen tickets per station, stickers and the bag manifest.
- **The working transport is the network one:** a printer with Ethernet or Wi-Fi reachable by IP address (port 9100). The bridge can scan the local network for such printers, and the address can also be typed in by hand.
- **What prints:** the **ESC/POS** language — Epson TM, Star, Bixolon, Xprinter, Rongta and compatible clones; paper width 80 mm (42 characters) and 58 mm (32 characters).
- **Non-Latin scripts:** Cyrillic prints from a code page (CP1251/CP866), and a line the print head cannot render (Georgian, for instance) is drawn by the bridge **as an image** with a built-in font. Details — [Kitchen and floor printing](/en/docs/kitchen-printing).
- **USB and Bluetooth are in development:** today a receipt printer connects **over the network, Ethernet or Wi-Fi, port 9100**. A printer on a USB cable or a COM port can be added in the wizard, but there is no driver for those transports yet — the device appears in the list with a note about its transport and printing falls back to the browser dialog; Bluetooth is being built alongside. "Cloud printers without a PC" (where the job goes from the server straight into the printer) will not exist at all: printing always goes through the bridge. The practical conclusion for today is to buy a model with Ethernet or Wi-Fi.
Jobs are not lost: the bridge keeps its own [print queue](/en/docs/kitchen-printing) with retries that survives a restart.
---
## Label printers
- **How it connects:** through the bridge, as a device with the "label printer" role.
- **What prints:** item and bag stickers (60×40 mm) at handover, shelf labels and stock labels with a barcode, name, price and best-before date — [Stock](/en/docs/inventory), [Kitchen and floor printing](/en/docs/kitchen-printing). Shelf labels can also be printed as an ordinary sheet on an office printer.
- **What is missing:** the native languages of label printers — **the bridge does not produce ZPL (Zebra) or TSPL (TSC, Godex)**. The sticker goes to a 60 mm-class receipt head as a narrow ESC/POS document and is torn off on the comb; this has not been verified on real label hardware yet. Scales with their own label printing (CAS, DIGI, SHTRIKH-Print) calculate weight, price and barcode inside themselves — we do not drive their printing.
---
## Barcode scanners
- **How it connects:** straight into USB, **no bridge needed**. The scanner works as a keyboard: it "types" the code it has read wherever the cursor is, usually adding an Enter.
- **What is supported:** any scanner in keyboard mode. Marking codes and QR need a **2D scanner** — a 1D one will not read DataMatrix.
- **Where it is used:** finding a product at the till by its code, intake and stock-taking in the warehouse, marking codes (Russia), parcel intake and handover at a pickup point.
- **What is missing:** a scanner in virtual COM-port mode — switch it to keyboard mode. Mobile stock-taking with the phone as a scanner is not there yet either.
> The classic trap: the scanner obeys the computer's keyboard layout. With a Cyrillic layout active, Latin codes arrive in Cyrillic — switch the layout to Latin.
---
## Scales
- **How it connects:** through the bridge, over a serial port (COM or USB-COM).
- **What is supported:** scales that continuously emit a weight string into the port — CAS, Mettler Toledo, DIGI, SHTRIKH, Massa-K and no-name COM scales. The driver is a general one: it takes the first decimal number out of the string, so most scales work without model-specific work.
- **Where it is used:** the weight of goods at intake and the weight of a dish priced by weight at the serving counter — the weight lands in the line on its own. The live weight and a stability flag are visible on the Hardware page.
- **What is missing:** networked scales and USB-HID scales; scales with a truly exotic string format may need driver work.
---
## Customer display
- **How it connects:** it is a **second screen**, not a bridge device. Two options: open the display page on the till PC's second monitor, or install the app on a tablet or phone in the same Wi-Fi network and pair it with a PIN from the bridge status page.
- **What it shows:** the contents of the order and the amount due.
- **What is missing:** classic two-line VFD/LCD pole displays — they do not work as a bridge device yet, and there is no need to add them.
---
## Cash drawer
- **How it connects:** by cable **to the receipt printer** — into its **DK** socket (RJ-11/RJ-12) or over **USB**. On a command from the till the printer sends a pulse and the drawer opens; both connections are tested.
- **Where it is used:** opening on a cash sale and manually by button (at the till and on the Hardware page). A fiscal register can open the drawer too — the pulse comes out of its own socket, so a separate receipt printer is not required for that.
- **Worth knowing:** the drawer is opened by the device it is plugged into, so at a venue with two printers the drawer goes on the till printer, not the kitchen one.
---
## Payment terminals
- **How it connects:** through the bridge. Cloud ones — **SumUp**, **Square**, **Stripe Terminal**, **Adyen**; over the local network — **Nexo/SaleToPOI** and **OPI** (Ingenico, Wincor Nixdorf and compatibles). There is also a **manual** mode: the cashier charges on their own terminal and enters the result.
- **What it does:** payment from the till, several terminals at one venue with a choice at payment, and binding a terminal to the [kiosk](/en/docs/kiosk) so the guest pays by card without leaving for a provider page.
- **Important:** the terminal stays yours: the provider's credentials (access key, reader id) are entered once in the device settings, and the money moves under your contract — we pass the amount across and receive the payment result.
- **A terminal is not online payment.** Taking cards on the website means a payment provider; it is connected separately and depends on the country: see [Payments](/en/docs/payments).
---
## Fiscal registers by country
The fiscal receipt is printed by **your** register, registered to your own legal entity; we are the transport and the queue. It connects through the same bridge.
| Country | What is supported |
|---|---|
| 🇬🇪 Georgia, 🇧🇬 Bulgaria | **Daisy** fiscal registers (verified on a live fiscalised device) |
| 🇵🇱 Poland | fiscal printers speaking the **POSNET Thermal** protocol (Posnet, Emar, Innova, Torell, Elzab) |
| 🇷🇺 Russia | **ATOL**, **SHTRIKH-M**, **Pirit / Dreamkas Viki Print**, **Mercury**, plus our own 54-FZ cloud register |
Other countries, cloud fiscalisation gateways and what the product does not have yet are covered in [Fiscalisation](/en/docs/fiscal). On cenaly.ru the choice of device is covered separately: [How to choose a KKT](/en/docs/kkt-choose-kkt); the EGAIS UTM lives there too and is added as an ordinary bridge device.
> **A fiscal register is not a spare receipt printer.** If the venue has no separate receipt printer, the bridge will not push our documents through the register: only a test print and the pre-check are allowed. A separate receipt printer removes that limitation entirely.
---
## Tablets and PCs
| Role | What works | Requirements |
|---|---|---|
| **Till** | any computer, tablet or phone with a browser | the layout targets a tablet; installs "as an app" and keeps working when the connection drops |
| **Kitchen screen (KDS)** | a tablet or a monitor | not adapted to a phone |
| **Self-service kiosk** | an Android tablet, an iPad, a Windows terminal | a screen from 10 inches, the browser pinned in kiosk mode, orientation locked, internet required |
| **Signage monitor** | a TV or a tablet with a browser | works offline after the first load |
| **Bridge** | the same PC the hardware is plugged into | Windows or Linux (x64/ARM64); macOS is planned |
Tablets and monitors are attached to a location with a [device login code](/en/docs/device-codes) — no need to type a login and a password on a shared device.
---
## Phones, DECT and gateways
Telephony runs in its own contour and needs no hardware bridge: the handset registers with the credentials of an extension directly on our PBX.
- **Desk phones, DECT bases and handsets, ATA adapters, door intercoms, softphones** — [SIP phone setup](/en/docs/sip-phones): what to type into any handset plus per-brand guides (Yealink, Grandstream, Fanvil, Panasonic, Cisco, Snom, Poly, Gigaset and others).
- **A SIM card, a city line, ISDN** — through a gateway: [GSM gateways and city lines](/en/docs/sip-gateways).
- **An operator number with no hardware** — a [SIP trunk](/en/docs/sip-trunks).
- The whole picture of the section — [Telephony](/en/docs/telephony).
---
## The venue network
- **The bridge and the browser live on the same computer.** The till page finds the bridge on the local address, with no code to type. A bridge on a PC where the panel is never opened (a server in the back room) is paired with a one-time code from the panel.
- **The printer sits in the same network as the bridge,** reachable by IP on port 9100. Pin its address down (a DHCP reservation or a static IP): a changed address means "the printer does not respond".
- **The waiter's tablet, the kitchen screen, the kiosk and the customer display** belong in the same network; the tablet till and the display pair with the bridge using a PIN that is only shown on the till PC's screen.
- **Keep the guest Wi-Fi on a separate network** from the till one — a guest has no business sitting in a network with tills and printers.
- **The internet** is needed for cloud features; the till itself keeps ringing up and printing without it — [If the internet goes down](/en/docs/offline).
---
## Limitations
- **The bridge prints only from its own computer.** Either a bridge on every till device, or cloud printing to a printer on another PC.
- **USB and Bluetooth for printers are in development:** the network transport is what works today (Ethernet or Wi-Fi, port 9100). Cloud printers without a PC will not exist at all: printing always goes through the bridge.
- **Label printer languages (ZPL/TSPL) are not supported** — the sticker prints as ESC/POS on a receipt head and has not been verified on real label hardware.
- **The scanner works in keyboard mode only**, scales over COM only, the customer display as a second screen only.
- **Pour control (tap flow meters) is a skeleton:** the "poured vs sold" report works, but until a physical sensor is connected the "poured" side shows demo data, and the page says so plainly.
- **There is no macOS build of the bridge yet** — Windows and Linux.
---
## Troubleshooting
The short version of what to check first; the full symptom-by-symptom walkthrough is in [Troubleshooting](/en/docs/troubleshooting).
| Symptom | The first three checks |
|---|---|
| Nothing prints | the bridge is running → the printer is online and has paper → no stuck [queue](/en/docs/kitchen-printing) in the till header |
| The device is not in the list | the bridge is online → "Search again" → the **"PC details"** card in the registry: it shows every piece of hardware the PC sees and every COM port with a note on who is holding it |
| The till or the fiscal device does not respond | the cable and the COM port → is a vendor utility holding the port → the device state in the registry ([Fiscalisation](/en/docs/fiscal)) |
| Garbled characters instead of letters | switch the device to image printing for non-Latin scripts |
| The scanner types the wrong characters | the OS keyboard layout is switched to Cyrillic |
| The drawer does not open | the cable is in the printer's DK socket (or USB is plugged in) → the device the drawer hangs on is online → the "Open drawer" button on the Hardware page |
---
## FAQ
### Do I have to buy a cash register?
Only if your country's law requires one. The till itself is a browser page on an ordinary PC or tablet; the hardware register is for the fiscal receipt, see [Fiscalisation](/en/docs/fiscal).
### Which receipt printer should I buy?
A model with Ethernet or Wi-Fi that speaks ESC/POS, 80 mm or 58 mm. USB and Bluetooth are still in development, so "the cheapest USB printer" will not print today.
### Can receipts be printed without the bridge?
Till documents — yes, through the browser's ordinary print dialog. Kitchen tickets and stickers — no, only through the bridge. The exception is a venue whose only hardware is a fiscal register: there the register prints the receipt itself and the browser fallback does not kick in.
### The printer is attached to another computer — do I need to run a cable?
No. The **"Print from another PC"** action in the hardware registry creates a link to that printer, and the job travels through the cloud to the bridge that owns it. All that is required is that both bridges serve the same location.
### Will an Android smart terminal (SUNMI, PAX, MSPOS) work?
As a tablet with a browser — yes, the till will open on it. Our bridge does not use its built-in printer, second screen or fiscal module.
---
## Related articles
- [Cenaly Hardware Bridge](/en/docs/hardware-bridge) — installing the bridge, the device list, checks, the hardware registry
- [Kitchen and floor printing](/en/docs/kitchen-printing) — stations, stickers, the print queue, code pages
- [Fiscalisation](/en/docs/fiscal) — fiscal registers and cloud gateways by country
- [POS](/en/docs/pos) — where all of this is used
- [QR codes and device codes](/en/docs/device-codes) — attaching tablets and monitors
- [Telephony: your own PBX](/en/docs/telephony) — the section this telephony hardware belongs to
- [SIP phone setup](/en/docs/sip-phones) · [GSM gateways and city lines](/en/docs/sip-gateways) — telephony hardware
- [Troubleshooting](/en/docs/troubleshooting) — a symptom-by-symptom walkthrough
---
# Partner program
The partner program is for those who bring in clients and look after them: studios and agencies, integrators and installers, automation consultants, hardware vendors, and simply owners who recommend the product to their neighbours. The partner cabinet is **a section of the same panel** where you run your own locations: there is no separate account, no second login and no separate website.
You choose the partnership model in the application: **agent** (brings a client in, whose contract is with us), **reseller** (sells themselves and may become the party to the contract with the client), **referral** (shares a code or a link), **ambassador**, **integrator** (implements and maintains) or "other". The working terms for the chosen model are assigned by a Cenaly representative.
Open: **Admin panel → Partner program** (`admin.cenaly.com/partners`). The section is switched on by the **Partner program** card in the [app store](/en/docs/app-store) — it is hidden by default.
---
## What you need to get started
- **An account in the panel** and a sign-in as the owner: the partner card is bound to your account. An employee with limited rights cannot switch the program on.
- **The "Partner program" extension enabled** in the app store.
- **Data for the application**: company name (or your own name if you are an individual), contacts and, if you have them at hand, legal details — the set depends on the country.
- **Acceptance of the document set**: until the current version is accepted, attaching clients and inviting sub-partners do not work (reading your own money is never blocked).
---
## Step 1. Application and status
You can apply from the cabinet (enable the extension and the form opens) or from the public program page on the brand's website (`cenaly.com/partners`). The form is the same:
| Block | What we ask |
|---|---|
| **Model and company** | the partnership model and the name |
| **Contacts** | country from the common list, up to five phone numbers, website |
| **Country-specific details** | legal status (company / sole trader / self-employed / individual — the set comes from the country) and its fields: for Russia — INN, KPP, OGRN, bank account, BIC, correspondent account; for Georgia — TIN and IBAN; for the EU — VAT. Plus the legal and the actual address |
| **Market** | countries of distribution as chips, regions and cities in words, client types (these are the product's business types, not a separate list of "industries") |
| **Preferred option** | white-label level 0–3 — asked of resellers only |
**There is exactly one mandatory field — the name.** An application is not a contract: if you do not have a registration number at hand, that does not block submission. What does block it is a typo in a detail you did enter — checksums for INN, OGRN and VAT are validated immediately.
The application is created in the **"awaiting decision"** status: until a Cenaly representative activates the card, the partner has neither rates nor clients — the section says so in plain words. The preferred level goes into a separate field: the terms are set by the representative, not by the applicant. You get an e-mail both when the application is accepted and if it is declined. Later the same fields are edited on the **Profile** tab — it is literally the same form.
---
## Step 2. Documents and terms
The **Documents** tab holds what you work under:
| Document | What it covers |
|---|---|
| **Partner agreement** | the framework contract: independent contractor status, the models, attachment only with the client's consent, the two-tier network, taxes, confidentiality, termination and what happens to the clients |
| **Settlement, invoicing and attachment rules** | the calendar month, the calculation base, "accrual ≠ payment", the invoice lifecycle, numbering, the objection period |
| **Data and confidentiality** | exactly what a partner sees about an attached client and what must not be done |
| **Brand, white-label and the network** | what is allowed at levels 0–3, who runs support, who must not be invited into the network |
| **Annex No. 1** | your own card: the parties, legal details, model, level, **rates**, settlement currency, payment terms, date of acceptance |
| **Templates** | a sub-partner contract and a level-3 reseller contract with an end client — optional, not part of the acceptance |
**The reward percentages are deliberately absent from this help: the terms are individual and live in your cabinet** — the commission (what we pay you), the wholesale share (what you pay us), the currency and the payment deadlines are shown in Annex No. 1 and in the partner card.
The edition of the set depends on the contour: for `cenaly.ru` it is the Russian one (an agency construction under the Civil Code, the agent's report, personal-data law requirements), for the other brands it is the international one with a Russian translation. Acceptance is a button with a confirmation of authority; the time, the account, the language and the browser are recorded by the server.
Versions: **clarifications** require no re-reading, **material changes** require acceptance again but come with a **14-day grace period**, whose end date is shown in the banner. After the grace period the attach and invite buttons do not disappear — a click opens a window "please accept the current version first" with a door to the Documents tab.
---
## Step 3. Clients: code, link, request
**The client attaches themselves.** You give their e-mail address or hand out your code, and the fact that "my account is registered to partner X" is confirmed by the account owner on their own subscription page. A partner has no "attach any account" call — that would be a way to take somebody else's client just by knowing their identifier.
| Path | What it looks like |
|---|---|
| **Request by e-mail** | the Clients tab → "Attach account": you enter the e-mail the client signs in with, plus a note for yourself. The client sees a card "partner X asks to attach your account" and accepts or declines; an e-mail is sent to them. Below the client table there is a list of requests with the fate of each one (awaiting reply / accepted / declined / expired) and a "Withdraw" button |
| **Partner code** | 8 characters with no lookalike `0`/`O` and `1`/`I`/`L` — meant to be read out on the phone and printed on a business card. Issued once and never changes. Next to it there is a ready-made link of the form `…/subscription?partnerCode=XXXX`: it fills the code in automatically and the client only has to confirm |
| **Manually** | a Cenaly representative or the brand root attaches the client by e-mail or by account identifier |
The boundaries, all visible in the interface:
- a request lives **30 days**; one partner may have no more than **200** pending at a time; **one address — one pending request**, and a second partner asking the same address is refused;
- **one client — one partner**: an account already attached to someone else cannot be attached. **You cannot attach your own account** — a commission on your own subscription is a discount, not a partnership;
- a suspended partner and a partner "awaiting decision" attach nobody; the code stays and works again after reinstatement;
- **the client cannot detach themselves**: consent is a deal between two sides, so detaching is done by Cenaly or the brand root.
**What you see about a client.** The name, plan, subscription state, monthly price and attachment date — always. Beyond that it is up to **the client's consent**: "health" (a traffic light `working / needs attention / gone quiet`, the last sign-in date to the day, the list of enabled sections) is on by default and the client may switch it off; usage counters (orders as a range `0 / 1–10 / 11–50 / 50+`, guest sessions, catalogue items, employees, devices) require their explicit opt-in. Order amounts, revenue, average ticket, order contents, personal data of guests and employees, documents and calls are **never** shown, under any consent.
---
## Step 4. Sub-partners
The **My network** tab is your own **two-tier** network: you and your sub-partners; there is deliberately no third tier.
What you can do: invite by e-mail address (the invitation is single-use and binds to the first account that signs in with it), set a commission **no higher than your own** and a wholesale share **no lower than your own**, suspend and resume work, hand your own client to a sub-partner and take them back, see their clients, run the settlement in both directions and issue them an invoice. What you cannot do: bring somebody else's account into the network with your own hand (a new client only ever arrives with their own consent), and lift a suspension imposed by us.
**Sub-partner ceilings** live in their card: how many clients they may hold, in which countries and which business types, and the ceiling for access to client accounts (`not allowed` / `view only` / `view and change`, "view only" by default). An empty field means "no restriction". Next to it there is a feed of facts for the last three months (attachment request, client attached or detached, invoice issued or paid, plan granted, sign-in into a client's account, terms accepted) and three figures: accrued this month, owes you, last seen in the cabinet.
---
## Step 5. Settlements, invoices and disputes
The **Settlements & invoices** tab.
- **The period is a calendar month.** The base is computed from the subscriptions of attached clients: the fixed subscription price is taken, an annual one is divided by 12, and your rate is applied. A closed month is stored as a snapshot and is never recomputed.
- **Accrual ≠ payment.** A line means "the client was on their plan at price X for the whole of September", not "the client paid X". The payment fact is shown next to it in a reference column, where empty means "no data", not "did not pay".
- **An invoice goes both ways**: "I owe" (wholesale) and "I am owed" (commission). The lifecycle is draft → issued → sent → paid, with the option to void. The number is assigned at the moment of issuing, and the legal details are copied into the invoice as a snapshot: changing your bank does not rewrite documents already issued. There are two issuers: the platform (numbers like `P-2026-0007`) and a head partner invoicing their sub-partner (`N-2026-0003` — a different prefix so that two invoices cannot be confused).
- **Reserve and reversal.** When the month closes, part of the accrual may be held as a reserve; a payment refunded for an already closed month is reversed in the current one. If less than the minimum payout remains after that, the remainder is carried over.
- **Papers and disputes**: the **reconciliation statement** (a window with printing and CSV export), **"I have paid"** — a payment claim so that the issuer confirms it, **"Dispute"** — an objection with a reason from a closed list. For invoices you owe, two reminders arrive: three days before the due date and after it is overdue. **"Agent's report"** is a printable form for a period; the button appears only for the Russian edition of the document set and for agency models.
On the "Overview" tab the balance is shown **separately per counterparty**: the platform and the head partner are different sides with different details and different paperwork.
---
## Step 6. Statistics and "Needs attention"
The **Trends** block on "Overview" (a 6- or 12-month window): accrued and paid by clients per month, the number of clients in the accrual, plan shares of the last month, the attachment funnel, your overdue invoices, accrual by sub-partner, and the reserve and reversals of the last month.
Two rules that are visible right in the interface: **the chart never rewrites the past** (closed months come from snapshots, so a refund in September does not move the August bar) and **accrued ≠ received** (a month the payment log does not cover in full is marked "little data" rather than shown as zero). There are no revenue forecasts, client turnover or average ticket in the statistics, and there will not be: the first is a promise we would be answerable for, the second is somebody else's money.
Next to it there is a short **"Needs attention"** list: an overdue invoice, a client whose subscription expires this week, a sub-partner who has not signed in for 30 days, and an unaccepted current document version after the grace period.
---
## Access to a client's account
Sometimes "take a look at what is wrong with our till" cannot be resolved any other way. Access exists, but **the partner never signs in on their own**:
1. you send a request with a reason, a mode and a duration;
2. it is decided by **the account owner** on their own subscription page — not by their employee and not by our support. An unanswered request expires in 24 hours; after a refusal the next one may be sent in 15 minutes;
3. the client sets a standing rule in advance: refuse immediately · ask every time (the default) · allow "view only" sign-ins without asking. In the same place they set their own cap in minutes and the list of locations;
4. **"view only"** is the default mode; "view and change" is granted only by a separate checkbox on the client's side. The duration is 60 minutes by default with a ceiling of 120; one open session per account.
For the whole session, a banner hangs in the client's panel with your company name, the person's name, the mode and a countdown. **In any mode the following are closed**: subscription and payments, owner data, employee access rights, data export, integrations, mail, calls and telephony, counterparties and documents, the partner program — these are not merely hidden menu items, the server refuses by itself. Withdrawn consent kills the **running** session, not just the next one; both sides see the sign-in history, and the client gets an e-mail for every sign-in.
Access is personal, so a firm has a list of people (Profile tab → "Employees") with roles: the "admin" and "support" roles may request access, and only "admin" may invite people. A ceiling set by the head partner overrides the client's consent. ⚠️ On `cenaly.ru` there is no access to client accounts — no buttons are shown either to the partner or to the client.
---
## The wholesale model: credit and granting a plan
The third money model, switched on by the brand root along two independent axes — **who grants the plan** (the platform or the partner) and **where the client's money goes**. Here the partner pays: they buy client-months and sell them on at their own price, which we neither set nor limit.
- **A price list, not a percentage.** The partner is assigned a version of the brand's wholesale price list: a fixed monthly price per plan plus, if defined, a 12-month price and personal prices. Changing the price list does not re-price what has already been granted.
- **A credit account.** The partner requests a prepayment invoice, pays it, and once the payment is confirmed the amount is credited; every grant debits the amount with a reference to the client, the plan and the number of months. By default only prepayment is available: the right to go negative is granted to verified counterparties only.
- **"Grant a plan"** in the client's row: the plan and the number of months (up to 12), with the cost shown before the debit. **There is no date field** — the server computes the term: from the current paid-through day plus the months. An upgrade takes effect immediately and costs the full price, a downgrade is deferred until the end of the paid term, and there are no refunds for unused time.
- **The client sees who pays for them**: their subscription page states who pays and until which day it is paid, and the buttons to pay the platform are removed from that screen. **If the partner stops paying**, the platform gives the client a 7-day grace period at its own expense and writes to them with two doors: pay directly at the brand's public price, or change partner.
---
## Sales materials
The **Materials** tab holds what you take to a client, kept apart from the obligations:
| Item | Details |
|---|---|
| **Price list by market** | the brand's retail prices — exactly the ones the client sees on their own payment page. A "your cost" column appears only if wholesale terms exist; printing opens in a separate window |
| **Brand files** | presentations, sales scripts and one-pagers published by the brand root (`pdf`, `pptx`, `docx`, `png`, `zip`, up to 20 MB). Your language comes first, downloads go through a signed link |
| **Client onboarding checklist** | seven steps from sign-up to the first working day: registration → attachment → business type and plan → catalogue → till and devices → storefront and domain → training. It is a hint, not part of the contract |
| **Support contacts and the changelog** | the phone number and addresses published by the brand root (empty fields are not shown), and the program changelog — what changed in the cabinet, the terms, the prices and the materials |
| **What and how to say it** | "what to call yourself" at each white-label level with yours highlighted, verifiable statements about the product and a direct ban on promising income, order counts or a payback period; the attachment code and link are here too |
---
## Limitations
- **A settlement is an accrual, not a sum of receipts.** A cash basis (paying out of actual receipts) is not implemented in this contour; every invoice goes through a draft and is confirmed by a human.
- **There is no automatic attribution at sign-up.** There is no partner code field in the registration form: a client is attached when they already have an account — by request, by code, or manually by Cenaly.
- **White-label levels 2–3 are not a toggle.** A client cabinet under your brand requires setting up a brand (domains, certificates, mail, a landing page); the level in the card records the agreement rather than switching a feature on. **There is no brand kit**: no logo files, no palette and no presentations are published in the product, and the Materials tab says so in plain words.
- **There is no electronic document interchange.** Neither EDI nor formalised delivery notes: the invoice, the reconciliation statement and the agent's report are papers the parties exchange themselves. A partial payment does not move an invoice: it is closed only on full payment. The payment link in a head partner's invoice is just a link — no payment is processed through it by a payment system.
- **Looking a client up by e-mail works for the Cenaly representative in the AWS contour only**; on `cenaly.ru` a manual attachment is done by account identifier. The consent-based paths (request by e-mail and the code) work in both clouds, while **access to client accounts does not work on `cenaly.ru`**.
- **There is no cross-cloud overview.** A partner's data lives in the contour of their brand, so `.ru` and `.com` partners are each viewed in their own panel.
- **No e-mails are sent about a new document version** — the banner in the cabinet tells you about it at the next sign-in.
---
## Troubleshooting
| Symptom | What to check |
|---|---|
| **"Attach account" opens a window about documents** | the current version of the set has not been accepted, or the grace period has ended: Documents tab → "I accept" |
| **The client does not see the request** | the address must be the one the client signs in with; check the request list — the request may have expired (30 days) or already been declined |
| **Refusal "account taken"** | the client is already attached to another partner. We do not disclose who holds them — write to us |
| **The code does not work** | the partner card is suspended or not yet active; the code will work again after reinstatement |
| **The invoice will not recalculate** | an issued invoice is not recalculated: lines are editable only in a draft, and an issued one can be voided |
| **The e-mail to the counterparty did not go out** | the operation still went through — a yellow notice appears asking you to forward the document yourself |
| **A dash instead of a number in the network table** | that means "not calculated yet", not zero: the figures are fetched when the My network tab is opened |
Cannot find the answer — [how to get help](/en/docs/support).
---
## FAQ
### Do I need a company?
Not necessarily: the legal status is chosen from the set your country offers — company, sole trader, self-employed or individual. And an application is not a contract: it has exactly one mandatory field, the name.
### How much is a partner paid?
The terms are individual and assigned by a Cenaly representative: the commission, the wholesale share, the settlement currency and the payment deadlines are shown in your cabinet — in Annex No. 1 on the Documents tab. The program has no fixed public percentages.
### Does a partner see a client's revenue and orders?
No. Order amounts, revenue, average ticket, order contents, personal data of guests and employees, documents and calls are not shown under any consent. Anything beyond the contractual data is switched on by the client and can be switched off by them at any moment.
### What happens to the client if the partnership ends?
The account stays with the client and does not disappear: they carry on directly with the platform operator. In the wholesale model the platform gives the client a 7-day grace period and an e-mail with a choice — pay directly or change partner.
---
## Related articles
- [How to get help](/en/docs/support) — where to write about disputes, invoices and your application
- [Account and sign-in](/en/docs/account) — the account the partner card is created under
- [Subscription and payment](/en/docs/subscription) — the client page where they confirm the attachment
- [Security and data](/en/docs/security-privacy) — who sees account data and on what grounds
- [Employees and shifts](/en/docs/staff) — roles and permissions inside an account
- [FAQ](/en/docs/faq) — short answers on plans, countries and data
---
# What's new
This is where we write down what has appeared in the platform and when it became available.
It is not a list of fixed bugs and not a roadmap — only what already works in your panel.
## How to read this page
- **One line is one capability.** If there is no line, the change was technical and you will
not notice it.
- **The bold text at the start of a line** is the section of the panel the item belongs to:
“POS and floor”, “Telephony and calls”, “Staff and HR” and so on.
- **The link at the end of a line** leads to the help article that covers the same thing step
by step. No link means there is no article on that topic yet — and that is visible too.
- **Newest first.** Months run from new to old, and so do releases inside a month.
- Capabilities do not arrive for everyone at once: some depend on your business type, the
country of the location and the extensions you have switched on. If an item is listed but
you cannot find it, check the [App store](/en/docs/app-store) and your
[Subscription](/en/docs/subscription).
## Where the dates come from
The release date is the day the change **went to production** and became available in the
panel — not the day a developer wrote it. Those two days usually differ: a round of testing
on the test stand happens in between.
Some older releases carry a **“date from code”** note next to the date. It means exactly what
it says: no deployment record survived for that release (until the end of August 2026 the
front-ends were shipped a different way, without run logs), so the date of the code change is
used instead. The real deployment may have happened a day or two later. We would rather show
the note than claim a precise date we cannot prove.
## How to follow updates
There is **no** dedicated “what's new in the platform” newsletter — we do not want to promise
a channel that does not exist. For now:
- **Watch this page.** It is updated together with releases; bookmark it.
- **The [blog](/en/blog)** publishes detailed write-ups of the larger capabilities and company
news. The blog has an RSS feed at `/blog/rss.xml`.
- **The AI assistant in the panel** knows what the system can do right now: ask “can I…” and
it answers from the current version rather than from this page.
- **[Support](/en/docs/support)** can tell you whether a specific change has reached your
account if an item from this page has not shown up for you.
---
## October 2026
### 15 October 2026 (date from code) — Top up AI credits right in the call analysis window
- **Telephony and calls.** In “Calls”, on the “Tags” tab, the “AI call analysis” window on cenaly.ru now tops up AI credits right where you set the budget: the “Top up from main balance” button opens a transfer from the main balance on top of the window — the amount, the rate and how much reaches the AI balance are shown before you confirm. The budget and instructions you have filled in stay where they are, and the new balance shows right under the budget field. The same button is in the “Add budget” window of an analysis that has stopped because the credits ran out. Before, “Top up” took you to the “Subscription” page, and the analysis settings had to be entered again. Only the account owner can top up: instead of the button, an employee sees a note that the owner does it. Read more: [Calls: recordings and speech analytics](/en/docs/calls).
### 14 October 2026 (date from code) — Manager logbook tags with icons and colours
- **Staff and HR.** In the employee card, on the “Logbook” tab, entry tags now have icons, and each tag stands out by colour at a glance: “Praise” is a green thumbs-up, “Discipline” an amber warning sign, “Incident” a red siren, “Note” a grey sticky note. The colour shows right away, not only on the tag you have already picked, and the same icon appears on the filter button and on every entry in the feed — praise and incidents are easy to tell apart without reading the labels. Read more: [Staff & shifts](/en/docs/staff).
### 10 October 2026 (date from code) — Social Fund number and tax office from the list
- **Staff and HR.** In a Russian company’s details (“Payroll” → “Settings” → “Details for the tax office and Social Fund”), the “SFR registration number” field now shows the current format — 10 digits — and a note under it says that an old Pension Fund number like 000-000-000000 is accepted too. Before, the field mask, the term explanation and the report-readiness hint named only the old 12-digit number, so a 10-digit number looked wrong even though the app accepted both. The hint and the error text in the “Report signatories and SFR registration number” catalog, where the number history is kept, were fixed the same way. Read more: [Words of the Russian Payroll section: what they mean and where to get the data](/en/docs/payroll-ru-words).
- **Staff and HR.** In the same window, the tax office code is now picked from the Federal Tax Service list of tax offices: start typing the code or part of the tax office name in Russian — for example “7705” or “Москва 5” — and choose a “code · name” row. The tax office name for printing fills in by itself, and the name for an entered code is shown right under the field. If the code is not in the list, the app warns you and asks you to check it against the tax registration notice. A separate division’s tax office is picked the same way. The list updates automatically from the Federal Tax Service open data; its release date is shown at the bottom of the list. Read more: [Payroll in Russia: getting started for a small company](/en/docs/payroll-ru-start).
- **Staff and HR.** In an employee’s pay window (“Staff” → 💰 “Pay & tax profile”), a “Deductions and tax details” line now sits under “Tax profile”. It explains that deductions, tax residency and the person’s other tax details are set in their employee card, on the “HR file” tab, and that the monthly calculation and the take-home pay picker read them from there; the “Open tax details” link opens the card in a new tab with the edit window already open. The unsaved pay rate stays where it is; after changing deductions, pick the gross amount again. Before, the pay window said nothing about deductions, and it was unclear where to set them. Read more: [Staff & shifts](/en/docs/staff).
- **Staff and HR.** The “Staff” → HR → “Vacation plan” screen now has a “🖨 Print” button: the year’s plan opens as a paper vacation schedule — with an “APPROVED” block and a line for the head’s signature, the approval date and document, columns “department, position, employee, days, vacation dates, note” and an “Acknowledged: signature, date” column, and the signature of the person responsible for HR records at the bottom. Agreed plan entries are printed; a plan that is not approved yet prints marked “Draft”, and if people belong to several legal entities you pick the legal entity above the form. Before, the vacation plan could not be printed at all. The form is the same for every country; a Russian legal entity also gets “T-7 (print)” — the unified form that used to open only from the Russian vacation schedule on the “Staff” tab. Read more: [Staff & shifts](/en/docs/staff).
- **Account and access.** After you pay for a new plan, its limits apply right away in every section — locations, menu items and catalogue imports, devices, auto-translation languages, orders and hotel rooms — including tabs that are already open. Before, after moving from Basic to Premium you could add, say, a fourth location only after reloading the page. Paid extensions you buy also unlock in other sections straight away. Read more: [Subscription](/en/docs/subscription).
### 9 October 2026 (date from code) — “Update” now links to the new version
- **AI assistants.** When a digital worker’s extension is out of date, the “update” note — on the “Devices” tab and in the device card — now comes with two links right next to it: “Download version …”, the package of the new version for that device’s browser (an archive for Chrome, Edge, Yandex Browser and other Chromium browsers, an .xpi file for Firefox), and “How to update”, step-by-step instructions in the help centre. Before, the archive was only in the “Connect a device” dialog, and you had to work out on your own what to do with it. If the extension was installed by your organisation or is kept by the bridge, there is no archive link: whoever installed it updates it. Read more: [Digital worker](/en/docs/digital-worker).
### 8 October 2026 (date from code) — Digital worker installs for your browser, file path as links
- **AI assistants.** In the “Connect a device” window, the steps for installing the digital worker extension now match the browser you are installing it in: Chrome, Edge, Yandex Browser, Opera, Brave, Vivaldi, Firefox or Safari. The browser the admin is open in is picked already; if you are installing on another computer, pick that computer’s browser. Each browser has its own extensions page address — you can copy it and paste it into the address bar — and its own place for “Developer mode”: in Edge, for example, it is at the bottom of the left pane rather than in the top right corner. Yandex Browser gets a warning: on Windows it turns such an extension off at every launch — turn it back on at browser://tune. Read more: [Digital worker](/en/docs/digital-worker).
- **Finance and documents.** In “Documents”, the path above an open file — a text document, an .md, .txt, .csv or other text file — is now made of links: click any folder in “Files / Folder / Subfolder” to open its list, while “Files” takes you to the very top. Previously the path was plain text, and getting to a neighbouring folder meant going through “Back to files”. Unsaved edits are saved before you leave, and the browser’s Back button returns you to the file. Read more: [Documents](/en/docs/documents).
- **Telephony and calls.** On the subscription page, call recording retention is now changed in place: in the “Storage used” card, the “Change recording retention” button opens a window with “Auto-delete audio” and “Auto-delete transcripts” — the same fields as in “Calls” → “Settings” → “Privacy and retention”. Previously you had to leave the billing page for them. The periods apply on their own, and “Storage used” goes down once expired audio is deleted; deleting at once, digit masking and external models are one link away, in the section. Read more: [Calls: recordings and speech analytics](/en/docs/calls), [Subscription](/en/docs/subscription).
- **Telephony and calls.** If a call recording failed to transcribe because of AI credits, the recording card now says so in plain words in your interface language — “Not enough AI credits: the balance has run out or the monthly AI spending cap has been reached” — and shows the owner a “Go to AI credits” button that opens the Subscription page right at the AI credits block, where you top up the balance or change the monthly cap. Top up, come back, press “Try again”. The same reason and link appear on the “Recording processing” tab, and “Top up” in the AI-tag wave window leads to the same place. Employees get no link — the line says the owner tops up. Read more: [Calls: recordings and speech analytics](/en/docs/calls), [Subscription](/en/docs/subscription).
### 7 October 2026 (date from code) — Providers checked at once, locations added from Documents
- **Telephony and calls.** “Add provider” on the “Phone providers” tab now checks the connection to the provider right away — just like “Save and test” on a number and the connection wizard: the “Check” column shows “Testing…” and then the provider’s reply. While the PBX is getting ready for the first registration of a new trunk, the dot in its row follows this check and turns green if the provider answered, instead of showing “not registered” for the first few seconds. If the provider refused the PBX’s registration, the dot stays grey: the check confirms the provider’s address, not the login and password. A refusal right after the account is created at the provider can be temporary — after a 403 refusal the PBX retries the registration on its own in 5 minutes. Read more: [Connecting a provider number to the PBX](/en/docs/sip-trunks).
- **Finance and documents.** In “Documents” you can now add a new location straight from the location list in the section header: the last item, “+ Add a location…”, opens the same form as in “Locations”, on top of the section, without leaving it. The new location is selected right away and ready to work with; it also appears in the sidebar location switcher at once. Previously you had to go to “Locations”, create it there and come back. The item is shown to those who can edit documents; the form itself tells you when your plan's location limit is reached. Read more: [Documents](/en/docs/documents).
- **Telephony and calls.** In the “Equipment” device card, its tag tooltip, the “Phone equipment” list and the “Extension journals” window, times are now shown in the location’s time zone rather than by the clock of the device you are viewing from: “disconnected at 03:11” matches the clock on site. In the card this covers every tab — connections, calls, the uptime chart (its axis and the “from… to…” fields too), the line check and “Phone reports”. The time zone is named under the state line; if the location has no time zone set, times follow your device’s clock, and the card says so. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** The PBX call log card now names the time zone under the line with the date — “Times are in the location’s time zone (Europe/Moscow · GMT+3)” — and every time in the window uses it, including the “Route” tab: steps, “rang at …”, talk segments and the leg details on the diagram. Previously “Route” used the clock of your device, so from another city the step times disagreed with the time in the header. If the location has no time zone set, times follow your device’s clock, and the card says so; “Copy for support” writes the time together with the time zone. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Finance and documents.** In “Documents” a new folder now appears right away: after “OK” the “+ Folder” form closes and the folder shows up in the list marked “creating…”, turning into a regular folder a moment later — on the “Files”, “Templates” and “Documents” tabs. Previously “OK” did nothing for seconds while the server saved the folder and reloaded the list, and pressing it again created a second folder with the same name. If saving fails, the folder disappears from the list and an error message is shown. Read more: [Documents](/en/docs/documents).
### 3 October 2026 (date from code) — Sidebar sections without a redundant link or row
- **“My website” widgets.** When a “My website” widget is added to the sidebar (the “Add to sidebar” button on its card), its page no longer shows the “← All website widgets” link: “My website” already sits next to it in the menu, and the link only repeated it. When the widget page is opened from elsewhere — say, from the dashboard or from Requests — the link is still there. Remove the widget from the sidebar and it comes back at once, without a reload. Read more: [My Website](/en/docs/site-widgets).
- **“My website” widgets.** On a “My website” widget page, the “Add to sidebar” button now sits on the top frame of the settings block, on the right — just like on the Telephony tabs. It used to take a separate row above the form, and for a widget added to the sidebar that row often held nothing but this button; now the form starts right under the heading. The row above the block stays when it has something to show: the “← All website widgets” link, the location picker or the “Paid add-on” chip. Whether the widget is in the sidebar or not, the button stays in the same place, so clicking it doesn’t move it. Read more: [My Website](/en/docs/site-widgets).
- **Telephony and calls.** On a Telephony tab added to the sidebar, the “In the sidebar” button moved from the page header to the top frame of the panel — the same place it has on the tab inside the section. The header is shorter, and the button no longer changes place when the tab is opened as its own page. Read more: [Telephony: your own PBX](/en/docs/telephony).
### 2 October 2026 (date from code) — Catalogue printing in your industry’s word, and the phone ping in the card
- **Menu and catalogue.** The 🖨 button above the catalogue — and the same button on a location card — are now labelled with your industry’s word: “Printable services list” for a salon, “Printable products list” for a shop, “Printable articles list” for a blog. Both used to say “Printable menu”, which is what cafés and restaurants still see. The button on the location card was also Russian-only whatever language you worked in; it is translated now, and a screen reader reads it out. Read more: [Print Menu](/en/docs/print-menu).
- **Telephony and calls.** In the phone device card (Telephony → Extensions → click the equipment tag next to an employee) the ping to the device now sits right in the state line: “online · address · network · last seen · 📶 Ping 23 ms”. Before, the delay was only visible on the “Uptime” tab — the moment you opened connections, calls, the check or the settings you lost sight of it. The figure is shown at any link quality, and hovering gives the average delay over the last hour and the last 24 hours plus how many checks went unanswered. A switched-off device has no ping in the line: the PBX does not check it. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** On the PBX console (Telephony → Console) a phone named in a call row now shows the link quality of that very device: a signal-bars icon and the delay next to its name — “☎️ Yealink T31G 📶 23 ms”. The same goes for the device of whoever is talking, for every ringing phone in “who is being called”, and for the devices in the call card. Before, the row carried only the phone’s name and the delay had to be looked up in the employee’s tile or in the “Devices” block — elsewhere on the screen — so “bad audio: the employee’s phone or the provider’s line?” took a while to answer. The icon’s colour shows the worse of two things: the delay to the device and how this side of the conversation sounds (packet loss and jitter — measured on a dedicated PBX); the full figures are in the hover tooltip. Until the PBX has measured the link (the console was just opened, the firmware is old, the PBX runs on your own computer) there is no icon — the phone’s name stays as it was. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** The call-centre board (Telephony → Live board → Board, and its full-screen TV view) has a new “Calls now” block: every call in progress at the location as a list — who is calling, who they are talking to or whose phone is ringing, which queue or automation holds the call, how long the caller has waited and how long the call has lasted. Before, the board showed only figures, queues and agents, while the conversations themselves — including calls ringing straight on an employee’s phone without a queue — were visible only in the Console view. For a small location with a few phones that is the main thing on the screen. The “Open call” button on a row opens that call on the console — with its card and the supervisor actions. A screen opened with a TV link (no login) has no such block — it still shows only figures and the masked numbers of waiting callers. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** On the call-centre board (Telephony → Live board → Board, and its full-screen TV view) a call that is not in a queue — one distributed by a ring plan grid or a plain ring-group hunt, or ringing straight on an employee’s phone — now counts as waiting for an answer: it is listed under “Waiting for an answer” with the number, whose phones are ringing and how long the caller has waited, and it is included in the “Waiting” and “Longest wait” figures. Before, only queued calls got there, so a location without queues showed “Waiting 0” while employees’ phones were ringing. The location-wide “Waiting more than” and “Wait longer than” thresholds (if you switched them on) and a screen opened with a TV link now count the same way — there a waiting caller still shows only a masked number. Read more: [Telephony: your own PBX](/en/docs/telephony).
### 1 October 2026 (date from code) — No more absences for tomorrow’s shifts; a routing rule with no condition no longer catches every call; “Check in” on a room booking really checks in
- **Staff and HR.** “Today” in timesheet sign-off now follows the location’s time zone. A shift without a clock-out lands in the “to resolve” list and gets the “Mark as absent” button only once its planned time is over — the same way plan vs fact counts hours as of today. Before, in the afternoon Moscow time the button reappeared on tomorrow’s shifts. You can still mark an absence for today (someone didn’t show up this morning). Read more: [Staff & shifts](/en/docs/staff).
- **Telephony and calls.** Deleting a telephony provider that routing rules point at now tells you in advance what will happen to EACH rule: it keeps working without this provider, it is turned off, or it is turned off and left with no condition. Rules are still not deleted. A rule whose only condition was the deleted provider is marked “no condition”, and its switch will not turn it on: before, a single click was enough to make such a rule catch every call. Give it a new condition — a number, a provider, hours or a caller prefix — and turn it on, or delete the rule. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Hotel.** For a reservation that sits on a hotel room, the “Check in” button now really checks the guest in: it opens the same check-in window as the rooms board, with the guest’s name and phone taken from the reservation — afterwards the guest has an open folio, the room is occupied and the stay is in the guest registration log (in Russia — the migration register). Before, the button only changed the reservation status. In the hall panel at the till such a reservation also shows “Check in” instead of “Seat”, leading to the same window. Read more: [Table Reservations](/en/docs/reservations), [Hotel](/en/docs/hotel), [Hall Panel](/en/docs/hall-panel).
- **Hotel.** A hotel room is booked by nights only — now in the hall panel at the till as well: rooms and beds are no longer offered in the hourly reservation form or when moving a reservation. Read more: [Table Reservations](/en/docs/reservations), [Hall Panel](/en/docs/hall-panel), [Hotel](/en/docs/hotel).
- **Hotel.** A room means a room or a bed in a venue of type “Hotel”. In other venues a “Room” on the plan is an ordinary place (a meeting room, a private room): it is booked by the hour, and the hall monitor shows its “Waiter” row again. A hotel room has no such row, and no waiter is assigned to it. Read more: [Floor Plan](/en/docs/tables), [Hall Panel](/en/docs/hall-panel).
- **Telephony and calls.** Daily charges for the dedicated PBX are visible again — both in the server card and in Subscription. In Telephony → Server a running server has a collapsed “Daily charges” block: closed, it shows one line with the latest day; opened, the last 7 days for this location and a link to the full log. Subscription has a new “Dedicated PBX: daily charges” card: all locations over 31 days, the total and how much has already been deducted from the balance, and the status of each day. On 29–30 September the table was removed from the server card with the promise “the log is in Subscription”, which wasn’t there, so the charges were not visible anywhere. Read more: [Telephony: your own PBX](/en/docs/telephony), [Subscription](/en/docs/subscription).
- **Telephony and calls.** The PBX board now shows EVERY phone a person has and the link quality to each one: a row per device with its own icon and delay (“📶 195 ms · ☎️ Yealink AX83H”). Previously there was a single summary icon — the worst device — so someone with a desk phone, a handset and an app could not tell which one was slow. A device that stopped answering the check shows a red ✕, one not checked yet shows a dash. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** On the PBX console (Telephony → Console) the “Your extension” field now lists the venue’s extensions: pick the phone the PBX will ring to connect you to a call. The list used to be empty — you could not switch phones, and anyone without an extension of their own was left with the “🎧 Listen”, “🗣 Whisper” and “👥 Join” buttons greyed out. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** The PBX console (Telephony → Console) now has a “Devices” block — every phone in the venue in one list, worst first: devices that stopped answering the link check, then the slow ones, then the good ones, and finally the ones not checked yet. Each chip shows the delay, the extension number and the device name (“📶 410 ms · 103 · ☎️ Fanvil X3S”), and the tooltip says whose device it is and gives the full figures. The same numbers are on the person’s tile, but there they answer “how is this person doing”, while the block answers “which device is bad right now” — previously you had to scan every tile to find out. Until the PBX has measured the link (console just opened, older firmware, your own PBX on your computer) the block is not shown. Read more: [Telephony: your own PBX](/en/docs/telephony).
## September 2026
### 30 September 2026 (date from code) — The header and footer editor now has a close ✕
- **Finance and documents.** The box for editing a document’s header and footer (“Documents” → a text file in page view → click the header or footer band) now closes with a ✕ in its top-right corner — the same place as in every other window of the panel. On a large screen there was no ✕ at all before: you could only close it with Esc, by clicking outside the box, or with the “Done” button at the bottom right, while on a phone the same editor opens as a sheet and did have one. Every previous way of closing still works, and nothing about the header or footer changes: edits still apply immediately and go into the document’s autosave. Read more: [Documents](/en/docs/documents).
### 29 September 2026 (date from code) — Telephony: address ranges, whose network got blocked and ping for every phone
- **Telephony and calls.** In the “Where from” tab of the extension settings, a collapsed “How to enter a range of addresses” help block now sits under the “Allowed addresses” field. Until now the hint just showed the example 203.0.113.0/24 and you had to already know what that notation meant and how to describe the whole office with it. The hint itself now says that 203.0.113.0/24 means every address from 203.0.113.0 to 203.0.113.255, and the help block walks through the mask: examples for 16, 256 and 65,536 addresses, the same notation for IPv6, and a warning that the mask counts from the network address — type 203.0.113.7/24 and it is saved as 203.0.113.0/24, allowing the whole subnet. It also says what is not possible: an arbitrary range such as “from 203.0.113.10 to 203.0.113.20” cannot be written in one line — enter those addresses one per line or take the whole subnet. If you do write a range with a dash, the answer now says exactly that — “a range ‘from address to address’ cannot be written like that” with a pointer to the help — instead of the former generic “not an address or subnet”. What is actually accepted has not changed: the address list works exactly as before. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** In the “Blocked addresses” block (“Telephony → Server”) every entry now says WHOSE network it is and which country it belongs to — “🇻🇳 Vietnam · VNPT-AS-VN” next to the reason; the range itself and the autonomous system number (“113.160.16.0/20 · AS45899”) are shown as a tooltip. Until now you only saw the bare address, and it was impossible to tell your own office from someone else’s scanner at a glance: “a home ISP next door” and “a foreign hosting provider” are different news, and the latter is usually left blocked. The PBX itself looks the address up in the same public network directory it already uses for the connection history — nothing leaves your browser. Note: this is the country the range is REGISTERED in, not where the person sits: with a VPN or hosting the two differ. If the lookup finds nothing, the line looks exactly as before. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** The signal-bars icon now shows next to EVERY phone the PBX measures ping to, not only the slow ones. Before, a phone with a good link had no icon — and looked exactly like a phone with no measurements at all. The delay figure next to the icon still appears only when the delay is noticeable; the full numbers are in the tooltip and the device card. Read more: [Telephony: your own PBX](/en/docs/telephony).
### 28 September 2026 (date from code) — A phone’s settings now live in its own card
- **Telephony and calls.** The equipment card (Telephony → Extensions → the phone tag in the employee row) has a new “Settings” tab: server, port, transport, username and extension — exactly what you type into the phone itself, each value with a copy button. Until now those fields were shown ONCE, together with the password when credentials were issued, and afterwards “which server does this phone use” had to be pieced together from three different windows. The password is not there and cannot be: we store only its hash, and a lost one is reissued to the extension. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** The same tab shows what the PBX applies to this particular device: its own advanced SIP settings and the ones inherited from the station, each row labelled with where the value comes from (“this device” or “from the PBX”), with untouched ones summed up in a single line. It also names the transport the phone last connected with — UDP, TCP or TLS. The settings are still edited where they were edited before; this tab only shows them. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **POS and floor.** The floor plan editor won’t let you place a table or a bed across a wall — in any venue, not just a hotel: an element cut by a wall or hanging half-way out of a room turns red and snaps back. Standing flush against a wall is still fine, and a room’s walls hold a bed just like the hall walls do. Read more: [Floor Plan](/en/docs/tables), [Hotel](/en/docs/hotel).
### 26 September 2026 (date from code) — The call card shows how often that number has called; the menu board can show photos
- **Telephony and calls.** In the record card, on the “Metrics” tab, a “records: N” counter now sits next to the other party’s number — how many records with that number are in the database over all time. You can see at once whether this person is calling for the first time or has been in touch before, without copying the number into the search box. Only records you are allowed to see are counted; for a number that has called very often it shows “records: ≥100” — all of them turn up if you type the number into the list search. The other side of the call has no counter: that is your own line, and the number of records with it tells you nothing. Internal extensions and withheld numbers are not counted — records cannot be searched by those at all. Read more: [Calls: recordings and speech analytics](/en/docs/calls).
- **Marketing and newsletters.** The menu board on an advertising screen can now show photos when its rows are picked by a RULE (“Where the items come from” → “By a rule”: category, badge, on sale). Until now photos were switched on by a tick next to each row, and a rule-driven board has no rows in the editor — the rule supplies them — so there was nothing to switch: such a board played as text and price only. The same block now holds a “Photos in the rows” toggle, and every supplied row inherits it. A new board built by the “Menu and prices” wizard from a rule gets photos straight away, exactly like a board whose items were picked by hand. Boards already playing on your screens do not change by themselves: they carry no answer and keep their look until you turn the toggle on. The “Price tags” layout never shows photos — it is a large price in a frame, meant to be read from a distance; photos belong to “List” and “Tiles”. An item with no photo in the catalogue stays a line of text. Read more: [Advertising Monitor](/en/docs/signage).
- **Platform.** Time fields — the schedule of a card on an advertising screen, the opening hours of a location, moving a booking — now carry a small clock on the right: press it and the time can be PICKED from a list, the hour and the minute separately, instead of being typed. Until now the field only accepted the keyboard: the browser’s native field had a button with a list of its own, but our field (it shows time in the location’s format — 24-hour or AM/PM, not the browser’s) had lost that door. Minutes in the list run in even steps — fives — and where the field has a step of its own (bookings five minutes, a schedule window a quarter of an hour) they follow it; a current minute that is off the grid, 09:07 say, is still in the list and highlighted, so picking never rounds anything silently. Typing still works exactly as before — the list replaces nothing: digits in the hour and the minute, ↑/↓ to step, pasting a whole “18:30”. In AM/PM format the list also spells out the half of the day (“9 PM”), while the value handed over stays 24-hour as it always was: the new way of choosing changes no data. Read more: [Advertising Monitor](/en/docs/signage), [Appointments](/en/docs/appointments).
### 25 September 2026 (date from code) — A request for workspace access reaches the owner in one click; Training now shows how to share the material
- **Account and access.** In the “Choose a workspace” window, a workspace an employee cannot open yet offers “Ask the owner”, which shows a ready-made request — and now “Send to the owner” sits next to it: the request goes to the owner as a direct message in the team chat, and the link then opens that very conversation. Until now you had to copy the text, walk over to “Team chat”, find the owner there and paste it. Copying and the door to the chat are still there: if the chat does not answer, the panel says so — “Couldn’t send” — and the old path is untouched. Access itself is still granted by the owner in “Staff”: the message changes nothing except that the owner learns about the request. Read more: [Team chat and guests](/en/docs/team-chat), [Staff & shifts](/en/docs/staff).
- **Help and training.** While the training material has not been built yet, the Training section now spells out the whole path to the employee — “add materials” → “address the course to staff” → “assign to particular people if you need to” — and offers two doors to the first step: “Add documents” and “Take a ready-made base” from the catalog. Until now the screen only said “upload and process at least one document first” and never said where to upload it: the library lives in the knowledge base, whose card is off by default, so the section is not in the menu. In the course list, the line under the “Addressed to staff” switch now says who sees the course right now: “Every employee with a login sees it” or “Only you see it”. Nothing changed about the rules themselves: sharing training still means switching that toggle on, and source documents are still not shown to employees. Read more: [Staff training](/en/docs/learning), [Knowledge Base](/en/docs/knowledge-base).
### 24 September 2026 (date from code) — Shift swaps warn about a busy day up front; the “external SIP” chip opens the extension settings
- **Staff and HR.** The shift-swap card under “Staff” → “Requests” now warns you UP FRONT when the person taking the shift already has an overlapping shift of their own that day: “Approval will not go through: the new person already has a shift that day — 14:00–22:00.” Previously you only found out after pressing “Approve”: the swap was not applied and the request went back to its author as “needs changes”, leaving you to work out why something you approved ended up there. The same warning appears in the “Swaps” panel for requests waiting for your decision. It is a hint, not a ban: the decision buttons stay where they are, so you can move the clashing shift in the schedule first and approve the swap afterwards. An overlap means the planned hours cross on the same day; back-to-back shifts (“08:00–16:00” and “16:00–24:00”) raise no warning. Read more: [Staff & shifts](/en/docs/staff).
- **Staff and HR.** In the employee cabinet (“Mine” → “Shift swaps”) a colleague’s offer and an open shift now say right away whether that day is already taken: “You already have a shift that day — 19:00–23:00.” If the hours cross your own shift, the line says plainly that you can’t take this one — until now you found that out only after pressing “Accept” or “Take the shift”, from the server’s refusal. The same line sits next to “Accept” in the “Swaps” panel. It is a hint, not a ban: if a second shift that day is deliberate, the buttons stay where they are. Back-to-back shifts (“08:00–16:00” and “16:00–24:00”) count as no overlap — but you still learn that the day is already taken. Read more: [Staff & shifts](/en/docs/staff).
- **Staff and HR.** In “Mine” → “My details” an employee can now describe their identity document in the same detail as the manager does in the HR file: pick the document TYPE — passport, ID card, residence permit, work permit or other — and fill in the number, issuing authority, issue date and “valid until”. There used to be a single field, the number, and the type was always assumed to be a passport: someone carrying an ID card submitted it as a “passport”, and once approved it took the place of the real passport in the HR file, while the expiry date had nowhere to go — so no document-renewal reminder was ever raised. The default type is still passport, so the familiar “type the number and send it” works as before; if the dates are filled in but the number is not, the form asks for the number instead of dropping what you typed. Read more: [Staff & shifts](/en/docs/staff).
- **Telephony and calls.** The “external SIP” chip in the row of an employee with a duplicated number opens the regular “Extension settings” window right on the “Provider” tab — just as clicking the number and name opens it on “Number and name”. The provider credentials and the registration status history are behind the “Open provider details” button on that tab. Read more: [Telephony: your own PBX](/en/docs/telephony).
### 23 September 2026 (date from code) — A shift clashing with someone's availability shows up at once, not at publish time
- **Staff and HR.** When you add a shift under “Staff” → “Shifts”, the shift window now tells you right away if the day or the hours clash with what the person declared in the “My availability” block of their own cabinet: “the employee does not work that day” or “outside the declared availability” — along with their declared hours (09:00–14:00, say) and their note for that date, if they left one. Previously this only surfaced when you published the schedule, with the whole week already filled in, so the fixing happened after the fact. The warning forbids nothing: you can save the shift as it is, because you may well have agreed with the person separately. If nobody filled anything in, there are no warnings: empty availability still means “available at any time”. Read more: [Staff & shifts](/en/docs/staff).
- **Staff and HR.** In the employee cabinet (“Mine” → “My details”), the contact phone and the emergency contact number are now entered as phone numbers: the country code on the left (pick it from a searchable list of every country or type it in), the number on the right, grouped into the digit blocks you are used to. The number is stored in international form, so it can be dialled from another country too. The familiar “8 990 …” form still means the same number — the field understands it, as well as a “+7 990 …” pasted from contacts. Numbers saved earlier as plain text are shown as numbers of your country, and if you do not touch them they are saved exactly as they were written. Read more: [Staff & shifts](/en/docs/staff).
### 22 September 2026 (date from code) — You can see whether an inherited number's channel is alive; a document clause tied to one answer; hold music can be heard before you pick it
- **Telephony and calls.** In the extensions list, a row with an INHERITED number (the phone lives at the telecom operator, not with us) now shows a connection dot in the “Channels and SIP” column: green — the trunk used to reach that person is registered with the provider; grey — there is no registration, or the PBX has not reported one yet; a “stop” square — the trunk was turned off by the owner. Hover the dot to read which trunk it is, what is going on with it and when that was observed. Previously such a row showed its connection state nowhere — it has no “online/offline”, because the phone does not register with us — and a dead trunk looked exactly like a live one. Softphones and duplicated numbers did not get an extra dot: their connection is already shown by the dot at the left of the same row. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Finance and documents.** A clause in a document template can now be switched on by ONE PARTICULAR answer to a questionnaire question, and the editor finally spells out how that is written. Select a paragraph, press “⑂ Optional section” — a choice question lists every answer (“Cash”, “Bank transfer”), and each button shows the ready-made tag that goes into the body: {{#if payment=cash}} … {{/if}}. The “plus an ‘otherwise’ branch” checkbox adds the second half — the text for the other answers. Before, the button only knew “the question got any answer at all”, and nothing in the interface said how to write “if the answer is this one”. Read more: [Documents](/en/docs/documents).
- **Telephony and calls.** Hold music can now be listened to without changing anything. Next to the tune list — in the “Default hold music” block above the numbers, in a number’s row, in the provider form, in the ring-group editor and in the employee hold-music window — there is a new “♪ Listen & choose” button. It opens a window with every tune at once: each has its own ▶, the first row is “Inherit” with whatever plays when you pick nothing, then your own tunes and the catalogue. Only the “Choose” button changes the setting; while you are just listening, callers keep hearing the previous tune. Before, only the tune ALREADY selected could be played: comparing two tracks meant assigning first one and then the other — and both reached the PBX on the way — and while “Inherit” was set there was nothing to listen to at all. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** You no longer have to reach the phone first to check it: the device card (click the equipment tag in the extension row) now has a “Call this phone” button on the “Check” tab. The PBX rings that phone itself, shows “Line check” on its screen and, once you pick up, tells you that you may speak and plays your own voice back. The measured numbers land in the same list as a hand-dialled *43. Why, if *43 already existed: it checks the road FROM the phone, while a call from the PBX checks the road TO the phone — that is, the most common complaint “the dot is green but incoming calls do not ring”. You still pick up the handset yourself; if the extension has several devices, one of them rings, and an inherited carrier number has no button. The button is only shown when your PBX can place such a call — otherwise the old *43 is there. Read more: [SIP Phone Setup](/en/docs/sip-phones).
- **Telephony and calls.** Every setting in the “Advanced SIP settings” window now has a “More about this setting” disclosure (“Calls” → “Settings” → the PBX block, and the same button in an extension row). It holds three parts: “When you need it” — whether you should touch it at all; “What changes” — what happens if you turn it on or off and what it costs you (“call recording and live prompts disappear: the PBX no longer hears that audio”); “How to check” — what to press or dial to see the result with your own eyes (“dial *43 from the phone — the echo test must play your voice back”, “press Call this phone — it must ring”, “open PBX connection history”). Before, a setting had only a title and sometimes a single line of hint — and 18 settings out of 30 did not even have that — so working out whether you needed the setting, and what to check afterwards, meant reading SIP manuals. The explanations are collapsed, so the list of settings did not get any longer. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **CRM and counterparties.** A task's due date in a client record no longer has to be picked in the calendar. Write it inside the task text — “call back tomorrow”, “invoice by 25.12”, “on Friday”, “in 3 days”, “December 25” — and the Activity tab shows a “Set due date 25/12/2026” button next to the field. Press it and the date lands in the field and is saved with the task; ignore it and nothing changes. The hint only fills an EMPTY field: a date you picked yourself is never overwritten, and text without a date gets no button. Previously the due date could only be set in the calendar, even though the task itself almost always spells it out. Read more: [Clients (CRM)](/en/docs/counterparties).
### 21 September 2026 (date from code) — Change a free table's waiter with a single tap on the badge, a collapsible order total in checkout
- **POS and floor.** On the floor plan in the POS Hall panel you can now change or clear the waiter of a free table: tap the waiter's circle on the table and the table card opens with the list of waiters already expanded, with a “Start order” button next to it. Before, the card opened only for an occupied or reserved table, and tapping a free table handed it straight to the till, so a waiter once assigned could not be changed. Tapping the table itself works as before: a free table goes to the till with a single tap. Read more: [Hall Panel](/en/docs/hall-panel).
- **Website and storefront.** In the storefront checkout the lines that make up the total — subtotal, taxes, tip, delivery, discounts — are now folded under the “Total” row, so the bottom panel with the “Place order” button no longer takes a third of the screen while you fill in the form. Tap “Total” to expand or collapse the breakdown; once you scroll the form to the bottom it expands on its own. The total itself and the buttons stay in view at all times.
### 19 September 2026 (date from code) — The phone uptime chart — for any period you like
- **Telephony and calls.** The phone uptime chart (device card → “Uptime”) is no longer limited to a day, a week or a month: move the window earlier and later, zoom out, jump back to now, type an exact “from… to…” — or simply drag across the bar to look at a piece of it up close. The period on screen is spelled out under the list, so yesterday's outage no longer looks like today's. Read more: [Telephony: your own PBX](/en/docs/telephony).
### 18 September 2026 (date from code) — Search for sections in the sidebar, table booking that works like the Hall panel, a compact checkout footer, a Hall panel that survives a reload
- **Platform.** The sidebar now has a search bar you can show or hide: click the magnifier in its header and start typing a section name — sections in collapsed groups and in your own folders are found too, with a hint showing where they live. The arrow keys and Enter open a section from the keyboard, clicking the magnifier again hides the bar, and your choice is remembered on this device.
- **Website and storefront.** When booking a table from the storefront, the guest now sets the booking the same way you do in the Hall panel: the fields come in the same order — date and time first, then duration and party size — and the sheet opens at the next full hour, which late in the evening means tomorrow. A time that has already passed is not accepted and the sheet says so under the field, so a request for last night can no longer reach you. Read more: [Table Reservations](/en/docs/reservations).
- **Website and storefront.** The bottom panel with the “Place order” button on the storefront no longer covers half the screen: the promo code and gift card fields and the display currency picker have moved into the form itself, just below the order notes, leaving only the total and the buttons at the bottom. When the total has many lines, the panel scrolls instead of growing.
- **POS and floor.** The Hall panel on the POS no longer closes when you reload the page: F5 keeps you in the panel instead of taking you back to the till. The browser's Back button closes the panel and returns you to the till, and from the till it opens the panel again — seat a guest, take the order and get back to the floor with one click. You can bookmark the till with the panel open: the panel opens if the staff member at the till can see the Hall button. Read more: [Hall Panel](/en/docs/hall-panel).
- **Delivery and pickup.** The “Pick point on map” map in the storefront's delivery checkout now opens on your venue instead of a map of the whole world: a guest without geolocation and without a typed address immediately sees the streets around you and a marker for your venue to find their home from. If the venue point was not set in the delivery settings, the coordinates from the location card are used, and if those are missing too, its address.
### 17 September 2026 (date from code) — Reservations at a glance, delivery zones without leaving the page
- **POS and floor.** Reservations in the Floor plan window are grouped by day: every day has its own header with a count of bookings and guests, times line up in their own column, and each row now has a single bright button — the next step for that booking (“confirm”, then “seat”, then “complete”). Read more: [Table Reservations](/en/docs/reservations), [Floor Plan](/en/docs/tables).
- **Delivery and pickup.** Delivery zones on the map are now visible and editable right where you set the delivery fee and the radius — in the website settings and in the online-order hub. The block says how many zones are set and what they are called, and the button opens the very same map as the Courier screen, so there is no third section to go to for polygons. Read more: [Own delivery](/en/docs/delivery), [Orders](/en/docs/orders).
- **POS and floor.** Guests who book a table now get emails that talk about a table booking instead of “You are booked”: right after booking — “Table booking request received” with a note that the booking is awaiting your confirmation, and once you confirm it — “Table booking confirmed”. The emails now show the party size and the table. Read more: [Table Reservations](/en/docs/reservations).
- **POS and floor.** A reservation can now be edited right at the POS, in the Hall panel: the Edit button on a reservation moves the date and time, makes the reservation longer or shorter, and changes the party size, table, name, phone and comment. Each reservation row now shows the window the table is held for the guest — for example “11:00–13:00”. A table that is already taken at the new time cannot be saved. Read more: [Hall Panel](/en/docs/hall-panel), [Table Reservations](/en/docs/reservations).
- **POS and floor.** A reservation can now release itself when the guest does not turn up: in the POS Hall panel, on the “Reservations” tab, the “⏱ Auto no-show” button switches the rule on and sets how long to wait after the reservation starts (15 minutes by default). While the clock runs it is shown right in the row; when the time is up the reservation goes to “no-show”, the table is free again and the POS says which table it was. The rule is off by default — running late is not the same as not coming — and a reservation with a paid deposit is never released automatically: a member of staff closes it, because the status decides what happens to the guest’s money. Read more: [Hall Panel](/en/docs/hall-panel), [Table Reservations](/en/docs/reservations).
- **Delivery and pickup.** A courier's route now takes a single pick. On the Couriers screen, in the route panel above the map, there is a new “🛵 Courier route…” list: choose a courier and every order they have taken lines up into one trip, calculated from where that courier is right now. No more ticking orders one by one with “Include in route” — and you can still add another order to the built route with the same checkbox. Read more: [Own delivery](/en/docs/delivery).
- **Website and storefront.** When booking a table from the storefront, the guest now picks how long the booking lasts — 1, 1.5, 2, 3 or 4 hours, 2 hours by default — instead of typing a second clock time: the same list you use to edit a reservation in the Hall panel. Below the list the sheet says until when the table is held, for example “Until 21:00”, and a booking that runs past midnight is worked out for you. Read more: [Table Reservations](/en/docs/reservations).
- **Requests.** The “Requests” menu item now shows an orange badge with a number — how many requests arrived since your last visit to the section, across all your locations at once. No more checking “just in case”: open the section and the badge clears, and the section opens on the location where something is new. Read more: ["Requests: a single inbox"](/en/docs/leads).
- **POS and floor.** The hall floor plan now shows who serves each table: the waiter is a clear circle in their colour with their initials at the table's corner, and hovering over it (a tap on a tablet) shows their name. This works on the “Now” and “Scheme” tabs of the Hall panel, in the POS table picker and on the hall monitor. Read more: [Hall Panel](/en/docs/hall-panel).
### 10 September 2026 — HR records, fixed assets and ring groups
- **Staff and HR.** HR records for a small team: an employee has a manager, requests go for approval, people edit their own card, and HR events are dated — on termination access is revoked reliably. Read more: [Staff & shifts](/en/docs/staff).
- **Staff and HR.** Leave is calculated by the rules of the country (Georgia, Russia, Turkey, Albania, Kazakhstan): the balance, a ledger of movements and the entitlement ladder by length of service — with no spreadsheet. Read more: [Staff & shifts](/en/docs/staff).
- **Staff and HR.** An employee confirms their own timesheet, orders certificates themselves and signs documents with a code from an e-mail — no walking to the manager. Read more: [Staff & shifts](/en/docs/staff), [Documents](/en/docs/documents).
- **Staff and HR.** No-shows, sick leave and unpaid leave are now first-class entities: they are deducted in payroll and included in the accounting export. Read more: [Staff & shifts](/en/docs/staff), [1C:Accounting](/en/docs/onec).
- **Finance and documents.** A new “Assets” section: a register of fixed assets and equipment with accounting and tax depreciation, repairs and upgrades, a statement and QR labels. Read more: [Finance](/en/docs/finance), [Hardware: what connects](/en/docs/hardware).
- **Telephony and calls.** Ring groups became extensions: a group has its own number, a second-by-second ring plan, personal hours for members, hold music and “music instead of ringback”. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** Line quality can be checked from the phone itself — the service number `*43`; the result lands in the call log, and the PBX log shows the routing trace of a call. Read more: [Telephony: your own PBX](/en/docs/telephony), [SIP Phone Setup](/en/docs/sip-phones).
- **Chat and messengers.** @-mentions in the composer, announcements with read confirmation, a pinned-message bar and quiet hours driven by the shift schedule. Read more: [Chat with Guests](/en/docs/chat).
### 4 September 2026 — The partner cabinet, “Open now” widgets and ready-made call analyses
- **Partner programme.** The partner programme now has a cabinet: a partner signs up on their own, manages their clients, invoices them and sees the settlement with the platform. Read more: [Partner program](/en/docs/partner-program).
- **Partner programme.** A partner network: a partner can have sub-partners, the mark-up is calculated from the difference in rates, and sub-partners get invoiced. Read more: [Partner program](/en/docs/partner-program).
- **“My website” widgets.** The “Open now” status on an external site follows the location's schedule; links and QR codes for an action — order, booking, call — arrived, along with an 18+ age gate. Read more: [My Website](/en/docs/site-widgets), [Multibutton](/en/docs/multibutton).
- **“My website” widgets.** The site can show a popup with the nearest free booking slots and a progress bar saying how much is left until free delivery. Read more: [Appointments](/en/docs/appointments), [My Website](/en/docs/site-widgets).
- **“My website” widgets.** A quiz on your site can score the answers, branch to different outcomes and act as a calculator — the visitor gets an answer, not just “thank you”. Read more: [My Website](/en/docs/site-widgets), [Attention](/en/docs/attention).
- **Telephony and calls.** “Ready-made analyses” — a small set of industry conversation reviews that work without any setup; next to it there is now a control for analysis quality. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** The call recordings list scrolls infinitely, a column filter is entered right in that column's header menu, and the list holds video as well as audio. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Website and storefront.** Every legal document on the site now has a help note: whether it is mandatory in your country, what it contains and what you risk without it. Read more: [Website legal documents](/en/docs/legal-docs).
## August 2026
### 31 August 2026 — A knowledge base built from websites, and an assistant that knows your till
- **AI assistants.** The knowledge base ingests a whole website: folders mirror the URL structure, the queue comes from the sitemap, a crawl can be stopped halfway, and auto-refresh can be switched on. Read more: [Knowledge Base](/en/docs/knowledge-base).
- **AI assistants.** The open knowledge-base document is now in the page URL — you can send a colleague a link to the exact article. Read more: [Knowledge Base](/en/docs/knowledge-base).
- **AI assistants.** The assistant answers with action links: a click opens the right section, tab or the exact setting instead of leaving you to find it. Read more: [Help Center](/en/docs/help-center).
- **AI assistants.** The assistant knows specific till models and sees the hardware at your workstation: “the till says SEND GRA SEVER” now gets an answer instead of advice to call a service centre. Read more: [Hardware: what connects](/en/docs/hardware), [Cenaly Hardware Bridge](/en/docs/hardware-bridge).
- **Hardware.** “Receipt not printed” now comes with a reason and next steps instead of the raw text from the till driver. Read more: [Fiscalization](/en/docs/fiscal), [Cenaly Hardware Bridge](/en/docs/hardware-bridge).
- **Hardware.** Discovered hardware can be disabled and deleted — and the deletion sticks: the device doesn't come back on the next scan. Read more: [Hardware: what connects](/en/docs/hardware).
- **Marketing and newsletters.** Promo codes with validity dates: the table shows active, expired and upcoming codes separately, with no manual date checking. Read more: [Commerce](/en/docs/commerce), [Loyalty Program and Coupons](/en/docs/loyalty).
- **Menu and catalogue.** AI autofill for a product card now works in the Russian environment too, on the models and search available from Russia. Read more: [Product Features](/en/docs/product-features), [AI Catalog Import](/en/docs/catalog-import).
### 28 August 2026 — Your own PBX for real, and guests inside the team chat
- **Telephony and calls.** Your own PBX: call recording really records, inbound routing rules really execute, and an inbound line can be set up and tested right in its card. Read more: [Telephony: your own PBX](/en/docs/telephony), [Connecting a provider number to the PBX](/en/docs/sip-trunks).
- **Telephony and calls.** Outbound calls: a line of their own for each employee, line-selection rules by number pattern, and dialling either through the carrier trunk or with the device's own SIP account. Read more: [Telephony: your own PBX](/en/docs/telephony), [SIP Phone Setup](/en/docs/sip-phones).
- **Telephony and calls.** SIP over TLS on the dedicated machine and an external reachability probe: “the machine is configured” no longer means “calls actually reach it”. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** A daily minute cap, an alert on abnormal traffic and a real retention period for recordings — the phone bill finally has a brake. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Chat and messengers.** Guest chat moved into the team chat: guests, the AI secretary and digital workers now live in the same feed as the team, and messages can be reacted to with emoji. Read more: [Chat with Guests](/en/docs/chat).
- **CRM and counterparties.** Global search on Ctrl/Cmd+K, a “My day” screen, bulk actions on cards, CSV export and duplicate detection. Read more: [Clients (CRM)](/en/docs/counterparties).
- **POS and floor.** A floor monitor — a full-screen table plan for a TV or tablet, with panning and zoom to cursor. Read more: [Floor Plan](/en/docs/tables), [Hall Panel](/en/docs/hall-panel).
- **Platform.** The open tab of a section now lives in the page URL across 23 sections: refresh, the browser Back button and a link to a colleague finally work as expected. Read more: [Account and location settings](/en/docs/settings).
### 24 August 2026 — Pay an invoice by link, gift cards and country-aware payroll
- **CRM and counterparties.** An invoice can be paid by link: it gets its own page showing the outstanding amount, the e-mail carries a “Pay” button, and the incoming payment is allocated automatically. Read more: [Clients (CRM)](/en/docs/counterparties), [Payments](/en/docs/payments).
- **CRM and counterparties.** Recurring invoices: a “Repeat…” control in the document card and a dedicated register tab — subscription invoices go out without manual work. Read more: [Clients (CRM)](/en/docs/counterparties), [Documents](/en/docs/documents).
- **POS and floor.** The till learned gift cards and “on account” payment: a certificate can be sold and accepted as a tender, and the debt is settled within a per-location limit. Read more: [POS](/en/docs/pos), [Loyalty Program and Coupons](/en/docs/loyalty), [Corporate Accounts](/en/docs/corporate-accounts).
- **Delivery and pickup.** Courier services on demand: the delivery price is shown to the guest at checkout, a courier can be called with a button, or automatically when the order is accepted. Read more: [Own delivery](/en/docs/delivery).
- **Staff and HR.** Payroll is calculated by the rules of the country: packages for Russia, Turkey and Kazakhstan with their taxes and contributions, and one payslip format for every country. Read more: [Staff & shifts](/en/docs/staff).
- **Marketing and newsletters.** An “Audience” section: guests with tags and segments, CSV export, and the same segment as the recipient filter for a newsletter. Read more: [Customers](/en/docs/customers), [Email campaigns](/en/docs/newsletter).
- **Marketing and newsletters.** Double opt-in, a preference centre for the subscriber, and ready-made letter sequences you switch on with a toggle. Read more: [Email campaigns](/en/docs/newsletter), [On-Site Engagement Campaigns](/en/docs/campaigns).
- **Finance and documents.** Files can be attached to a document, its PDF can be sent by e-mail or into a chat, and the covering letter is composed in the recipient's language. Read more: [Documents](/en/docs/documents).
### 18 August 2026 (date from code) — Missed-call rescue, loyalty points, guest Wi-Fi and till video control
- **Telephony and calls.** A “Call back” tab — a missed-call rescue queue: the system spots the missed call, queues the number and sends an e-mail so the guest doesn't go to a competitor. Read more: [Telephony: your own PBX](/en/docs/telephony).
- **Telephony and calls.** A “phone in money” summary on the dashboard and a “call → order or booking” trace: you see what the phone earned, not just how many calls there were. Read more: [Telephony: your own PBX](/en/docs/telephony), [Analytics and Reports](/en/docs/analytics).
- **Marketing and newsletters.** A points loyalty programme: points accrue at guest checkout, there is a till panel for accrual and redemption, and the guest sees the balance in their account. Read more: [Loyalty Program and Coupons](/en/docs/loyalty).
- **Marketing and newsletters.** Guest Wi-Fi: a splash page with sign-in, support for MikroTik and UniFi, and the guest's contact details land in the customer directory. Read more: [Customers](/en/docs/customers).
- **Hardware.** Video control over the till area: a camera is attached to a location in “Hardware”, and every risky operation gets a video clip with a configurable retention period. Read more: [Loss Control and Cash Risks](/en/docs/loss-control), [Hardware: what connects](/en/docs/hardware).
- **Marketing and newsletters.** Reputation: “Platforms” and “External reviews” tabs, monitoring of reviews on external sites, and AI-drafted replies you only need to check. Read more: [Guest Reviews and Reputation](/en/docs/reviews).
- **POS and floor.** POS: per-guest items on the ticket, a “split by guest” bill and the guest number on the kitchen screen. Read more: [POS](/en/docs/pos), [Kitchen (KDS)](/en/docs/kds).
- **Platform.** Migrating a venue from GloriaFood — bringing the storefront styling across, not just the menu. Read more: [Switch to us](/en/docs/migrate).
### 11 August 2026 (date from code) — A panel that fits your work, mailboxes and the text editor
- **Account and access.** The sidebar can be tailored to you: hide the items you don't need, reorder the rest and switch on a ready-made panel profile for your kind of work. Read more: [Account and location settings](/en/docs/settings).
- **Mail.** A mailbox on your own domain arrived — shared across all locations, with a signature, an auto-reply and message flags.
- **Website and storefront.** The text editor: a slash menu instead of a button bar, tables of any size, callouts, markdown paste from the clipboard, a media library and draft auto-save. Read more: [Articles & Pages (CMS)](/en/docs/cms).
- **AI assistants.** AI in the editor writes the alt text for an image, translates the selected fragment and changes the tone of a passage without rewriting the whole article. Read more: [Articles & Pages (CMS)](/en/docs/cms).
- **Menu and catalogue.** Product collections: collection axes, collection shelves on site pages, and the open collection in the URL — the link can be sent to a customer. Read more: [Product Collections](/en/docs/collections).
- **Website and storefront.** A gallery of store themes: try a theme on the live site first and apply it only after you like it. Read more: [Venue Website Builder](/en/docs/website-builder), [Online Store](/en/docs/shop).
- **Stock and purchasing.** Stock-taking right inside “Menu”: a recount mode and filters by item kind, so you don't have to hunt for products across sections. Read more: [Inventory](/en/docs/inventory).
### 4 August 2026 (date from code) — Newsletters, “My website” and hardware without driver hunting
- **“My website” widgets.** A new “My website” section: every widget for an external site lives in one place, and each has its own gear that opens exactly that widget's settings. Read more: [My Website](/en/docs/site-widgets).
- **Marketing and newsletters.** E-mail newsletters: campaigns to your own subscriber list, open statistics and one-click unsubscribe straight from the letter. Read more: [Email campaigns](/en/docs/newsletter).
- **“My website” widgets.** A form builder: assemble the fields, put the form on your site, and answers land in the panel under “Leads”. Read more: [My Website](/en/docs/site-widgets), [Commerce](/en/docs/commerce).
- **Hardware.** The bridge installs the vendor drivers for ATOL and SHTRIH-M tills itself and recognises connected hardware over USB — no more hunting for drivers on vendor sites. Read more: [Cenaly Hardware Bridge](/en/docs/hardware-bridge), [Hardware: what connects](/en/docs/hardware).
- **Online booking.** Online booking: staff schedules, location opening hours, buffers between services, guest-initiated rescheduling and an “Add to calendar” button. Read more: [Appointments](/en/docs/appointments).
- **Website and storefront.** Website pages are assembled from sections that can be hidden or reordered, and the important pages can be pinned to the site's main menu. Read more: [Articles & Pages (CMS)](/en/docs/cms).
- **Website and storefront.** Legal documents for the site are available in all 45 interface languages, with a live cookie declaration that updates from the scan results. Read more: [Website legal documents](/en/docs/legal-docs), [Cookies & Consent (CMP)](/en/docs/cookie-consent).
- **Marketing and newsletters.** Your own Google Tag Manager container is connected with a single field in the tracking codes and honours the visitor's choice in the consent banner. Read more: [Analytics and Reports](/en/docs/analytics), [Cookies & Consent (CMP)](/en/docs/cookie-consent).
## July 2026
### 28 July 2026 (date from code) — Guest chat, knowledge base and a faster catalogue
- **Chat and messengers.** Guest chat got a real operator inbox: private notes, labels, snooze, priorities, ban, and AI suggestions right inside the conversation. Read more: [Chat with Guests](/en/docs/chat).
- **Chat and messengers.** New chat channels: e-mail, Facebook, Instagram and a public API — every conversation in one inbox. Read more: [Chat with Guests](/en/docs/chat), [WhatsApp Integration](/en/docs/integration-whatsapp).
- **Chat and messengers.** Chat can now work on its own: event-driven automation rules, reply macros, auto-tagging, and escalation when a guest has been waiting too long. Read more: [Chat with Guests](/en/docs/chat).
- **AI assistants.** A new “Knowledge base” section: your own documents, search across them and questions; a whole website can be loaded — the crawler walks the pages for you. Read more: [Knowledge Base](/en/docs/knowledge-base).
- **AI assistants.** The chat bot and the phone bot search products and dishes by meaning: a guest asks for “something not spicy” and the bot answers from your catalogue. Read more: [Chat with Guests](/en/docs/chat), [Knowledge Base](/en/docs/knowledge-base).
- **Website and storefront.** The catalogue moved onto a database index: the storefront opens faster and products load as you scroll instead of waiting for the whole page. Read more: [Product Collections](/en/docs/collections), [Online Store](/en/docs/shop).
- **Platform.** Migrating a store from another platform is now visible in the “Migration” section: what has moved, what is in progress and where it got stuck. Read more: [Switch to us](/en/docs/migrate), [AI Catalog Import](/en/docs/catalog-import).
### 21 July 2026 (date from code) — Store front and the on-site designer
- **Website and storefront.** A new “Store studio” section — a single hub where the storefront, pages and styling are configured. Read more: [Online Store](/en/docs/shop), [Articles & Pages (CMS)](/en/docs/cms).
- **Website and storefront.** The product page now works like in big stores: two columns, photo swatches for options, accordions for description and delivery, and a sticky buy button. Read more: [Product Features](/en/docs/product-features), [Online Store](/en/docs/shop).
- **Website and storefront.** Product and collection URLs now look familiar to shoppers: `/products/` and `/collections/`. Read more: [Online Store](/en/docs/shop), [SEO & Storefront Promotion](/en/docs/seo).
- **Website and storefront.** Product reviews now show customer photos, and long lists are paginated. Read more: [Guest Reviews and Reputation](/en/docs/reviews).
- **Website and storefront.** The on-site designer: the panel docks to the screen edge and auto-hides, there is a phone/browser preview, and the “Properties” button takes you from a picked element straight to its settings. Read more: [Venue Website Builder](/en/docs/website-builder), [Articles & Pages (CMS)](/en/docs/cms).
- **Menu and catalogue.** Menu printing: ready-made design presets, a price-list mode, three-column layout, a QR code and category selection. Read more: [Print Menu](/en/docs/print-menu).
- **Stock and purchasing.** Purchasing: supplier price history, partial goods receipt, matching a photo of the delivery note against the order, and purchase cost per product. Read more: [Inventory](/en/docs/inventory), [Clients (CRM)](/en/docs/counterparties).
- **Menu and catalogue.** A guest can filter the menu by allergens on the storefront and save a diet profile — the filter is reapplied on the next visit. Read more: [Allergens and Nutrients](/en/docs/allergens).
---
## Related articles
- [How to get help](/en/docs/support) — the AI assistant, this help centre and live support
- [FAQ](/en/docs/faq) — short answers about plans, countries, devices and data
- [App store](/en/docs/app-store) — where to switch on the capabilities you do not have yet
- [Subscription and plans](/en/docs/subscription) — what is included in your plan
- [First day](/en/docs/first-day) — launch checklists by business type
- [Troubleshooting](/en/docs/troubleshooting) — if something behaves oddly after an update
- [Glossary](/en/docs/glossary) — what the words in the panel and in these notes mean
---
# Orders — Dine-in, delivery, takeaway
## Overview
The Cenaly ordering system supports all key restaurant business scenarios:
| Order type | Description | Ideal for |
|-----------|-------------|----------|
| **Dine-in** | Table order via QR code | Restaurants, cafés, bars |
| **Delivery** | Delivery to the customer's address | Restaurants with delivery |
| **Takeaway** | Pickup (customer picks up themselves) | Cafés, fast food, bakeries |
| **WhatsApp** | Order via messenger | Latin America, Middle East |
| **Telegram** | Order via Telegram Mini App | CIS, Georgia |
The admin panel has dedicated work screens for handling orders:
- **[POS](/en/docs/pos)** — order entry by a waiter, table binding via QR;
- **[Kitchen (KDS)](/en/docs/kds)** — kitchen display: queue, statuses, stations;
- **[Courier](/en/docs/delivery)** — own-delivery screen with a map and routes;
- **[Floor Plan](/en/docs/tables)** — table map, waiters and reservations.
---
## Dine-in — Table ordering
### How it works
1. The guest scans the QR code on the table
2. The menu opens linked to the table number
3. The guest selects items, add-ons, and adds notes
4. Taps **Order**
5. The order instantly appears for staff (on the kitchen screen / waiter's tablet)
6. The waiter confirms the order → the kitchen starts cooking
7. The guest receives a status notification
### Setup
1. Turn ordering on for the location: **Locations** → the location → the **WEB** tab. The same fields are gathered in one place under **My website** → the **Online ordering** card → **Configure** → the **Delivery & pickup** section.
2. Configure the floor plan in the **Floor Plan** section: tables, zones, bar counter (see [Floor Plan](/en/docs/tables)).
3. Bind QR codes to tables in the same **Floor Plan** section — after that a table order is recognised automatically.
> There is no "Dine-in" tab in Settings, and no "Settings → Orders" page with ordering toggles either. The **Settings → Orders** tab is about something else: status automation, the guest blocklist and refund reasons (see "Order settings" below).
### Table management
- Visual floor plan with drag & drop
- Table statuses: free / occupied / reserved
- Automatic release after payment
### Call a waiter
The guest taps **"Call a waiter"** in the menu and picks a reason: bring water, the bill, help with the menu, or "other".
The call travels the same path as an order itself — a signal to the server and from there to the staff in real time:
- a **bell in the Orders section** — with the table number and reason, with sound (the sound can be muted with a button);
- the **"Calls" tab in the [Hall panel](/en/docs/hall-panel)** — the same list, next to the scheme and the queue;
- the **"Acknowledged"** button clears the call on both screens.
Separately from calls there is an **addressed "order ready" push to the waiter**: if a waiter is assigned to the table (see [Floor plan](/en/docs/tables), "Waiters" mode), the readiness notification goes to them rather than to the whole shift.
---
### Pre-order slots
If your kitchen can't absorb arbitrary "at 13:07" requests, turn on **pre-order slots** in the location settings. Then, for a scheduled order, the guest picks a **slot** rather than a free time:
| Setting | What it defines |
|---|---|
| Slot length | 15 / 30 / 60 minutes — the grid step |
| Slot capacity | how many orders to accept per slot (0 — unlimited) |
| Lead time | the minimum notice for accepting an order |
| Horizon | how many days ahead slots are opened (1–7) |
The values can be set globally and **overridden separately for pickup and delivery** — their loads differ.
The guest sees the nearest slots taking opening hours into account; **full slots are greyed out**. Slot occupancy is counted from orders already accepted and updates automatically.
> The slot quota is **soft**: it is drawn for the guest and discourages overbooking, but there is no server-side "slot is full" rejection yet. If two guests pick the last slot at the same time, both orders go through.
---
### Pay-at-table — the guest pays from the table
At a QR table the guest gets a floating **"Bill"** button: it opens the table's current bill (items, quantities, total) and lets them pay it online.
The button only appears when both conditions hold: the QR code is bound to a table and online payment is enabled for the location. After payment a webhook marks the order paid — the till and the Orders section see it as usual.
The guest can pay the bill **in full** or **their own share**: the bill sheet offers a choice between “split evenly” (they say how many people are sharing) and “by items” (they tick their own dishes, quantities can be split fractionally). A tip can be added on top of the share. Each share goes through as its own payment and the bill stays open until it is fully covered, with the amount due recalculated on the fly: if a neighbour has already paid their part, “pay in full” takes only the remainder rather than the whole bill again. Two guests paying at the same time will not overlap — a share is reserved on the server.
> While an order is being taken at the till, an **upsell prompter** works: after an item is added, "suggest with this" chips appear — dishes most often bought together with it. The prompt adds nothing by itself; the waiter decides.
---
## Delivery — Delivery
### Setting up delivery zones
1. Open the **Couriers** section — polygon zones, the venue point and courier settings live there (the order settings hub links to it as "Delivery zones on the map, couriers and the courier network")
2. Draw zones on the map or set a radius from the venue
3. For each zone specify:
- Delivery fee
- Minimum order amount
- Estimated delivery time
General delivery terms (fee, free-from, minimum amounts, radius, notes) are set on the location: **Locations** → the location → **WEB**, or **My website** → **Online ordering** → **Delivery & pickup**. Details — [Delivery](/en/docs/delivery).
### Ordering flow
1. The customer opens the menu (via link, from social media, from packaging)
2. Selects **Delivery** → enters the address
3. The system determines the zone and shows the terms
4. The customer places the order → pays online or on delivery
5. The manager sees the order → assigns a courier
6. The customer tracks the status: accepted → preparing → on the way → delivered
### Courier management
In-house delivery has its own **Courier** screen (see the [guide](/en/docs/delivery)):
- The courier sees the queue: preparing → ready for pickup → out for delivery → delivered
- "Take order" assigns the order to the courier, "Delivered" records the handover time
- A map with the route to the customer and the courier's location
- The payment method in the card: cash/card on delivery, online
---
## Takeaway — Pickup
### How it works
1. The customer opens the menu → selects **Takeaway**
2. Places the order → selects pickup time
3. Pays online or chooses pay on site
4. Receives confirmation with the order number
5. Picks up the order at the scheduled time
### Setup
1. **Locations** → the location → the **WEB** tab (or **My website** → **Online ordering** → **Configure** → **Delivery & pickup**)
2. Enable takeaway
3. Set the pickup terms: minimum amount and a note for the guest
4. Configure minimum prep time (e.g., 15 minutes)
There is no separate "Settings → Takeaway" page: delivery and pickup are enabled by the same location fields.
---
## WhatsApp orders
A popular ordering channel in Latin America, the Middle East, and Asia.
### Setup
1. **Locations** → the location → the **WEB** tab (or **My website** → **Online ordering** → **Configure** → **Delivery & pickup**)
2. Turn on **Accept orders via WhatsApp**
3. Enter the WhatsApp number in international format. Leave it empty to use the WhatsApp number from the location contacts
There is no "Settings → WhatsApp" page — the toggle and the number live in the storefront ordering block.
### How it works
1. The guest builds a cart in the menu
2. Taps **Order via WhatsApp**
3. A WhatsApp chat opens with a pre-filled message (item list, quantity, total)
4. The manager confirms the order in chat
---
## Telegram orders
### Setup
1. Create a bot via [@BotFather](https://t.me/BotFather) in Telegram
2. In the admin panel → **Integrations** → **Telegram**
3. Connect the bot to your location
4. The menu will automatically become available as a Telegram Mini App
More details: [Telegram Mini App — guide](telegram)
---
## Order management
### Orders panel
All orders from all channels (dine-in, delivery, takeaway, WhatsApp, Telegram) are displayed in a single panel:
- **New** — just received, awaiting confirmation
- **In progress** — confirmed, kitchen is preparing
- **Ready for pickup** — the kitchen finished; the order waits for the courier or the guest
- **Out for delivery** — a courier took the order (for own delivery)
- **Completed** — customer received the order
- **Canceled** — order canceled
### Notifications
Staff receive notifications about new orders:
- 🔔 Sound notification on tablet/computer
- 📱 Push notification on phone
- 🖨 Automatic kitchen ticket printing (when a printer is connected)
**The guest gets an e-mail confirmation.** The checkout form has an optional “E-mail” field (entered once — the address is remembered in the browser and pre-filled next time). When an address is given, a confirmation e-mail goes out with the order contents, the total and a link to its status, followed by a digital receipt once the order is paid. Letters come from the venue, in the guest's language. The order settings give the field three modes: **hidden**, **optional** (the default) and **required** — the last one makes sense where a receipt is always needed, for instance with online payment for takeaway. A consent checkbox for the venue's news can be shown next to the field: without it, the address is used only for this order and its receipt.
### Kitchen Display System (KDS)
The **Kitchen (KDS)** screen in the admin panel shows the order queue (see the [KDS guide](/en/docs/kds)):
- Dish order by time received, timers
- Item statuses: queued → preparing → ready; bump and recall
- Stations — filtering by menu categories
- All-day summary and a sound alert for new orders
### Voice order management
With the AI assistant, you can manage orders by voice:
| Command | Example |
|---------|---------|
| Open the order list | "Show orders", "Open orders" |
| Open a specific order | "Open order 42" |
| Accept an order | "Accept order 15" |
| Mark as ready | "Order 42 ready" |
| Mark as paid | "Mark order 5 as paid" |
| Cancel an order | "Cancel order 7" |
All commands that change status require confirmation. More details — in the [voice assistant documentation](/en/docs/voice-input).
---
## Order settings
Settings live in two places — worth knowing so you don't look in the wrong one.
**Ordering terms** belong to the location: **Locations** → the location → the **WEB** tab. The same things are gathered on one screen under **My website** → the **Online ordering** card → **Configure**, as an accordion of four sections:
| Section | What it configures |
|----------|-------------|
| Delivery & pickup | Fees and free-from, minimum amounts, radius, notes, accepting orders via WhatsApp |
| Payments | Card payments online (your own provider account) and payment methods offered on delivery |
| Checkout | Checkout fields and the guest e-mail, scheduled pre-orders, checkout upsell |
| Fiscal receipts | Where receipts for online orders are issued |
The same hub links out to related sections: delivery zones and couriers, promo codes, loyalty, order automation rules, service charge and tips, taxes on the receipt.
**The "Settings → Orders" tab** is about handling orders that have already been placed:
| Block | What it does |
|----------|-------------|
| Automation | Auto-cancel unpaid orders after N hours and auto-complete handed-over/delivered ones. Checked hourly; cancellation goes through the normal flow (stock, notifications) and is reversible from the order card |
| Guest blocklist | Phone numbers, e-mails and IPs whose orders are not accepted |
| Refund reasons | Your own list of reasons the staff picks from when issuing a refund |
Payment methods visible on the order card: cash, card on delivery, online, corporate account, charge to room (hotel) and **On credit** — the order was closed at the till into the debt ledger (see [POS](/en/docs/pos)).
---
## 7. Floor plan and table management
### Floor plan editor
1. Open the **Floor Plan** section — it is its own sidebar item, not a Settings tab
2. Drag and drop elements: tables (round, square, rectangular), chairs, walls, doors
3. Specify the number and capacity of each table
4. Create multiple zones: main hall, terrace, VIP, bar counter
Details — [Floor Plan](/en/docs/tables).
### Table statuses
| Status | Color | Description |
|--------|------|-------------|
| 🟢 Free | Green | Table is ready for seating |
| 🟡 Occupied | Yellow | Guests are at the table |
| 🔵 Reserved | Blue | There is a reservation for this time |
There are no separate "awaiting payment" or "service" table statuses. On the POS floor scheme two extra signals are highlighted on top of the status: **waiter call** and **order ready**.
### Linking QR codes to tables
- Each table gets a unique QR code
- When scanned, the system identifies the table number
- The order is automatically linked to the table
- The waiter sees which table the order came from
---
## 8. Reservation system
### Reservations for guests
Guests can reserve a table:
1. Via the QR menu → **"Reserve a table"** button
2. Via the venue website
3. Via a Telegram bot
4. By phone (manager enters it manually)
### Reservation setup
- **Time slots**: reservation duration
- **Guest limit**: minimum and maximum per table
- **Deposit**: require a prepayment for the table — a fixed amount or per guest; separately you choose what happens to the deposit if the guest doesn't show up (forfeited or refunded)
- **Waitlist**: the guest joins a queue, and the invitation to a freed table is valid for a limited time
- **Confirmation**: automatic or manual
All parameters and their defaults — in [Reservations](/en/docs/reservations) and [Floor Plan](/en/docs/tables).
### Notifications
- The guest receives confirmation (email / Telegram)
- The manager sees all reservations in the calendar
---
## 9. Room Service (in-room dining)
For hotels, hostels, and apartments:
### Setup
1. **Locations** → the location → the **Business type** field → **Hotel**. Business type sets the terminology and default presets of the location; it does not limit any features
2. In the **Floor Plan** section switch to **Rooms** mode and create rooms (101, 102… or names) instead of tables
3. Place a QR code in each room
### Ordering flow
1. The guest scans the QR in the room → sees the menu
2. Selects dishes → places an order
3. Enters the room number and delivery time
4. The kitchen receives the order → prepares → staff deliver to the room
### Additional options
- Ordering additional services (towels, pillows, cleaning)
- Breakfast schedule with dish selection
- Mini-bar: consumption tracking
- PMS (Property Management System) integration
---
## 10. Split Bill
The bill is split **at the till**, by a waiter or cashier:
- **by items** — each guest picks their dishes and pays only for them;
- **equally** — the total is divided by the number of guests.
Each part is closed with its own payment method (cash, card, corporate account), and the order counts as paid once all parts are closed. Details — [POS](/en/docs/pos).
> **Guests can split the bill too** — with the "Bill" button at a QR table (pay-at-table, above): evenly or by items, with a tip on top of the share. Till-side and guest-side splitting compute the same shares and do not conflict: the till sees the parts guests have already paid and closes only the remainder.
---
## 11. Kitchen Display System (KDS) — detailed setup
### Hardware
KDS works on any device with a browser:
- **Tablet** (10–12 inches) — recommended for small kitchens
- **Smart TV** (32–55 inches) — for large kitchens
- **Monitor with a PC** — for large venues
- **Multiple screens at once** — each shows its own station
### Multiple kitchen screens: station presets
There is no screen builder in the admin panel — a screen is configured **on the kitchen screen itself**. The number of screens is unlimited, and each one is locked to its own station.
#### How to connect
1. Open the **Kitchen (KDS)** section
2. In the **Stations** panel tick the menu categories this screen should see (the hint says exactly that: "Show only dishes from selected categories")
3. Press **Save current as preset** and name it (for example, "Grill")
4. Take **Copy link** or the **QR** of the saved preset and open it on the kitchen tablet, TV or monitor
5. The screen locks to that station — a "This screen is locked to a station" note appears
Presets are stored on the account, so the same link can be opened on several devices.
> If the link was saved and the preset was later deleted or renamed, the screen says so honestly: "Unknown station link — showing all orders".
#### Example layout for a restaurant
| Preset | Menu categories | Device |
|-------|---------|--------|
| Hot kitchen | Hot dishes, sides, soups | Smart TV 43" |
| Cold kitchen | Salads, appetizers, desserts | Tablet 10" |
| Bar | Drinks, cocktails, fresh juices | Tablet 10" |
| Pizza | All pizzas | Smart TV 32" |
| All orders | no filter (assembly / handoff) | Monitor 24" |
#### How an item reaches the right screen
Routing is done by the **screen's menu-category filter**, not by a field on the dish card: neither a menu category nor a menu item has a "KDS station" property. Whatever is ticked in the "Bar" preset is what the bar screen sees.
The only "station → hardware" link is the **station printer**: the same Stations panel defines which bridge printer prints that station's ticket and which one is its backup (see [Kitchen printing](/en/docs/kitchen-printing)).
### Order queue board for guests
The guest-facing screen is a separate thing, not a "KDS screen type". The public **Order queue board** shows order numbers that are being prepared and ready.
It is enabled on the location: **Locations** → the location → the integrations section → **Order queue board**. The same card holds the "Show delivery orders" toggle (off = counter orders only), the public link, a QR code and an "Open board" button. All that is left is to open the link on a TV in the dining area or at the pickup counter.
### Station setup
A station is a saved set of menu categories:
| Station | What it shows |
|---------|---------------|
| Hot kitchen | Hot dishes, sides |
| Cold kitchen | Salads, appetizers, desserts |
| Bar | Drinks, cocktails |
| All orders | No filter — for assembly and handoff |
### Time color indication
- 🟢 **< 10 min** — within normal range
- 🟡 **10–15 min** — needs attention
- 🔴 **> 15 min** — critical, priority
The thresholds (10 and 15 minutes by default) are set in the KDS appearance settings and are **shared by every kitchen screen of the account** — there is no per-station threshold.
### Managing orders on KDS
- **Tap a dish** → "Preparing", tap again → "Ready"
- **Start** — take the whole ticket into work
- **Bump** — the ticket is assembled and goes to handoff; the waiter is notified
- **Sound alert** for new orders and when time is exceeded
- **All day** — how many identical items are in progress in total
There are no swipe gestures and no bump-bar support on the kitchen screen — everything is done with taps and buttons.
### KDS offline mode
If the internet goes down:
- KDS keeps showing the last known state — the orders and appearance settings already loaded
- The screen reconnects on its own; orders missed meanwhile are fetched from the server once the connection is back
- Statuses sync automatically
---
## 12. Order cancellations and refunds
### Cancellation policy
| Order status | Cancellation possible? | Refund |
|--------------|------------------------|--------|
| New | ✅ Yes (automatically) | Full refund |
| Accepted by kitchen | ⚠️ With manager approval | Partial/full |
| Preparing | ❌ Manager only | At manager's discretion |
| Ready | ❌ No | No (if picked up) |
| Out for delivery | ❌ No | Upon claim |
### Refund process
A refund is **not** issued from the Orders section: the order card only displays the refund status. There is no "Refund" button there right now — it is in the works.
1. The guest contacts the manager
2. The manager opens **POS** → **Receipts**, finds the sale receipt and issues the refund against it
3. Selects items to refund (full or partial) and the refund method
4. Retail-vertical orders with a submitted refund request are visible in the **Returns** section
Details — [Receipts and refunds](/en/docs/receipts) and [Returns](/en/docs/returns).
---
## What you need to get started
- **At least one order channel**: the QR storefront, the POS, the Telegram shop, an order widget on your site, or a manual order created by a manager.
- **An understanding of the "guest order needs confirmation" setting.** By default an order placed by a guest reaches the kitchen, the POS and the courier board only after an operator accepts it here; the location setting switches back to "straight to work" — for points where there is nobody to accept orders manually.
- **Employee roles** — access to the section and to "My orders" is governed by permissions ([Staff](/en/docs/staff)).
- **Configured order types** — dine-in, pickup, delivery: each has its own guest fields and its own rules.
---
## Limitations
- **The order-acceptance setting is per location.** There is no bulk "switch on for all locations of the account".
- **Updates come over a websocket.** Without a connection the list does not refresh itself — reload the page manually ([If the internet goes down](/en/docs/offline)).
- **The time promised to the guest is static.** It comes from a location setting and is not computed from current kitchen load; there is also no automatic channel pause on overload.
- **Aggregator orders are verified on mocks.** There are no live partner connections to Wolt, Glovo, Yandex Eda or Deliveroo.
- **A WhatsApp order is a message to the owner**, not an order in the pipeline: the reply and the status are handled in the chat manually.
- **The only writer of an order is the server.** Edits arrive as separate signals, so a change does not land instantly and "direct editing of the order file" does not exist.
---
## Troubleshooting
**A guest's order did not reach the kitchen.** Most likely it is waiting for an operator to accept it: accept it here, or switch the location to "straight to work".
**The status does not update on screen.** Updates come over a websocket — reload the page if the connection dropped.
**A guest says the promised waiting time is wrong.** The promised time is static and set by a location setting — change it in the order settings.
**An order from an aggregator is missing.** There are currently no live marketplace connections.
**An order is "stuck" in a status.** Check that somebody further down the chain can move it: the kitchen display, the handoff screen or the courier board must be enabled and open.
---
# Attention
An ordinary dashboard shows numbers. This page shows **things to do**: "there are N things worth doing today", each with a single button.
Open **Admin Panel → Attention** (`admin.cenaly.com/attention`). A location filter sits at the top.
When there is nothing to do, the page says so: "All under control ✅".
---
## The eight sections
| Section | What lands here | Where the button leads |
|---|---|---|
| **Callback requests** | requests left by guests on the storefront over the last 7 days | a phone call |
| **Unconfirmed reservations** | reservations in "pending" status for today and tomorrow | the reservation card — floor plan or appointment book, depending on type |
| **Overdue B2B invoices** | overdue amounts from the counterparty aging report | the counterparty card |
| **Quotes awaiting an answer** | quotes with no response, with their expiry date | the quote document |
| **CRM tasks due today** | open tasks due today or overdue | the tasks tab of the clients section |
| **Fresh negative reviews** | rating 3 or below, unresolved, within 14 days | the reviews section |
| **Cash risks** | fired loss-control rules | the risky-operations stream |
| **Large guest debts** | balances from the debt ledger | the guest directory |
Each section shows a handful of top rows rather than the whole list — the page stays a to-do list, not a report.
---
## Cash risks
The **"Cash risks"** block stands apart — it is the only one that comes from rules rather than from people: void series, discount spree, cash discrepancy, consumption above norm, purchase price spike. How they work and how the thresholds are set — [Loss control](/en/docs/loss-control).
---
## Limits
The page is assembled **from existing sources** and stores nothing of its own. Two consequences follow:
- if a source is unavailable (for example CRM isn't connected yet), its block simply isn't shown and a soft warning appears at the top saying the list may be incomplete — the page doesn't break;
- callback requests have no "handled" flag: the button places the call, but there is nowhere to close the request in this version.
---
## Related sections
- [Loss control](/en/docs/loss-control) — the rules behind the "Cash risks" block
- [Table reservations](/en/docs/reservations) — confirming and seating reservations
- [Reviews and reputation](/en/docs/reviews) — handling negative feedback
- [Returning guests](/en/docs/customers) — guest history and debts
- [Clients (CRM)](/en/docs/counterparties) — invoices, quotes and tasks per counterparty
---
## FAQ
### How is this different from a dashboard?
A dashboard answers "how are things going", this page answers "what should I do right now". There are no charts here, only rows with buttons.
### Why are some sections missing?
A section is hidden when it has nothing to show, or when its source is unavailable (the relevant module isn't connected). In the second case a warning appears at the top.
### Is the data live?
The page collects everything when you open it. Cash risks are recalculated on the server on a schedule; the other sources are read as of load time.
### Can I mark a callback request as handled?
Not in this version. The request leaves the list by itself once it falls outside the 7-day window.
---
# Payments — Online Payments and Integrations
## Overview
Cenaly supports many payment methods tailored to the requirements of different countries and markets.
### Supported payment methods
| Method | Regions | Fee |
|--------|---------|-----|
| **Stripe** | 40+ countries | 2.9% + $0.30 |
| **Apple Pay** | All countries | Via Stripe |
| **Google Pay** | All countries | Via Stripe |
| **iyzico** | 🇹🇷 Türkiye | Provider's tariff; supports instalments (taksit), whose fee the guest pays on top of the order total |
| **Pay on delivery** | All countries | 0% |
| **Cash** | All countries | 0% |
### Local payment systems
| System | Country | Description |
|---------|--------|----------|
| **Kaspi** | 🇰🇿 Kazakhstan | QR payments via Kaspi |
| **LiqPay** | 🇺🇦 Ukraine | Card payments, Apple/Google Pay |
| **MoMo** | 🇻🇳 Vietnam | Mobile payments |
| **VietQR** | 🇻🇳 Vietnam | QR payments via banks |
| **MercadoPago** | 🇦🇷🇲🇽 LATAM | Cards, QR, installments |
| **GCash** | 🇵🇭 Philippines | Mobile wallet |
| **GoPay** | 🇮🇩 Indonesia | Mobile payments |
| **SumUp** | 🇪🇺 Europe | Card terminal |
---
## Connecting Stripe
### Step 1. Create a Stripe account
1. Go to [stripe.com](https://stripe.com) and sign up
2. Verify your business information
3. Get your API keys
### Step 2. Connect to Cenaly
1. In the admin panel → **Settings** → **Payments**
2. Select **Stripe**
3. Click **Connect Stripe** — you will be redirected to Stripe
4. Log in and confirm the connection
5. Done — guests can pay for orders online
### What's supported via Stripe
- Bank cards (Visa, Mastercard, AmEx)
- Apple Pay
- Google Pay
- iDEAL (Netherlands)
- SEPA Direct Debit (Europe)
- Bancontact (Belgium)
- Przelewy24 (Poland)
- and other local methods
---
## Pay on delivery
If online payment is not connected or the guest prefers to pay on site:
1. In **Settings** → **Payments** → enable **Pay on delivery**
2. The guest selects this method at checkout
3. Payment is made in cash or by card upon receiving the order
---
## Online tips
Guests can leave tips during online payment:
1. In **Settings** → **Tips**
2. Enable online tips
3. Configure options: 5%, 10%, 15%, 20%, custom amount
4. Tips are added to the payment total
---
## Security
- All payment data is processed via **Stripe** (PCI DSS Level 1)
- Cenaly **does not store** bank card data
- The connection is protected with **SSL/TLS** encryption
- Compliance with **GDPR** and local regulations
---
## Fiscalization
For countries with mandatory fiscalization, Cenaly generates data to be sent to tax authorities:
| Country | System | Status |
|--------|---------|--------|
| 🇹🇷 Turkey | E-Dönüşüm | Integration |
| 🇷🇺 Russia | 54-FZ / OFD | Integration via iiko/1C |
| 🇫🇷 France | NF 525 | Certification |
| 🇩🇪 Germany | TSE (KassenSichV) | Integration |
| 🇦🇹 Austria | Registrierkassenpflicht | Integration |
| 🇮🇹 Italy | Scontrino elettronico | Integration |
---
## Payment reports
In the **Analytics** section, you have access to:
- Total revenue for the period
- Breakdown by payment methods
- Average check
- Tip statistics
- Export to Excel/CSV for accounting
---
## 8. Multi-currency
### Setup
1. **Location settings** → **Currency** → select the primary currency
2. Add additional currencies for display
### Supported currencies
GEL (₾), USD ($), EUR (€), GBP (£), TRY (₺), RUB (₽), UAH (₴), KZT (₸), AED (د.إ), ILS (₪), PLN (zł), CZK (Kč), and others — 50+ currencies.
### How it works
- Prices are stored in the venue's primary currency
- Exchange rates update automatically (daily)
- The guest sees prices in the currency of their choice
- Payment is processed in the currency of the connected payment system
- Different locations in a chain can use different currencies
---
## 9. Split Bill
Guests at the same table can split the payment:
- **Equally**: total amount ÷ number of guests
- **By items**: each person marks their dishes
- **Custom**: each person enters their amount
Each guest pays their part via phone. The order is closed when all parts are paid.
---
## 10. Fiscal printers and receipts
### Supported hardware
| Type | Models |
|-----|--------|
| Thermal printers | Epson TM-T20III, Star TSP143III, ATOL 30F |
| Fiscal registrars | ATOL (Russia), Checkbox (Ukraine), EFTPOS (Turkey) |
| Cloud cash registers | Kontur.Market, Poster POS, Checkbox |
### Connection
1. **Settings** → **Hardware** → **+ Add printer**
2. Select the connection type: USB, Wi-Fi, Bluetooth, cloud
3. Specify the IP address or MAC address
4. Print a test receipt
### Receipt templates
- Customizable template: logo, QR code, thank-you text
- Auto-print when an order is created / closed
- Separate kitchen receipt (without prices)
### Fiscalization by country
| Country | Requirement | Solution in Cenaly |
|--------|-----------|---------------|
| 🇹🇷 Turkey | ÖKC / Yeni Nesil | Integration with EFTPOS |
| 🇷🇺 Russia | 54-FZ online cash register | ATOL, Evotor, Kontur |
| 🇺🇦 Ukraine | RRO / PRRO | Checkbox |
| 🇫🇷 France | NF 525 | Certified software |
| 🇩🇪 Germany | TSE (KassenSichV) | TSE module |
| 🇮🇹 Italy | Registratore Telematico | RT integration |
| 🇬🇪 Georgia | RS.ge | Integration with RS.ge |
---
## 11. Refunds and disputes
### Full refund
Manager → **Orders** → select an order → **Refund** → confirm. Funds are returned to the card (1–5 business days).
### Partial refund
Select specific items to refund — only the cost of the selected dishes is returned.
### Reporting
All refunds are recorded in analytics → **Refunds** section — reasons, amounts, frequency.
---
# Connecting Stripe
Accept online payments via Stripe: cards, Apple Pay, Google Pay.
---
## 1. Overview
**Stripe** is a global payment platform. In the Cenaly registry Stripe is offered for connection in **46 countries**. The Cenaly + Stripe integration allows you to:
- 💳 **Accept payments** by card (Visa, Mastercard, AmEx)
- 📱 **Apple Pay / Google Pay** — one-tap payments
- 💰 **Receive payouts** to your bank account
- 🔄 **Process refunds** from the admin panel
- 💵 **Tips** — the guest adds a tip during checkout
- 📊 **Reports** — full financial analytics
---
## 2. Requirements
- ✅ Cenaly account (plan **Basic** and above)
- ✅ Stripe account (free signup at stripe.com)
- ✅ Bank account for payouts (in your country's currency)
- ✅ Verification documents (passport / ID, company documents)
### Supported countries
Stripe is offered for connection in 46 countries:
| Region | Countries |
|--------|----------|
| Europe (EEA) | Austria, Belgium, Bulgaria, Croatia, Cyprus, Czechia, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Liechtenstein, Lithuania, Luxembourg, Malta, Netherlands, Norway, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden |
| Europe (non-EEA) | United Kingdom, Switzerland, Gibraltar |
| Americas | USA, Canada, Mexico, Brazil |
| Asia | Japan, Singapore, Hong Kong, Malaysia, Thailand, India, Indonesia |
| Middle East | UAE |
| Oceania | Australia, New Zealand |
> **Georgia and Türkiye are not on this list** — Stripe does not open merchant accounts there, so for a location with such a country the Stripe card will not appear in the panel. For Georgia connect **Bank of Georgia (iPay)** or **TBC Bank**, for Türkiye — **iyzico**, for the Middle East — **PayTabs**; the global alternative that works almost everywhere is **PayPal**. If Stripe is already connected to your legal entity in another country, it stays in the list and keeps working.
---
## 3. Creating a Stripe account
### Step 1. Sign up
1. Go to [stripe.com](https://stripe.com) → **Start now**
2. Enter your email and create a password
3. Confirm your email
### Step 2. Business verification
Stripe will request:
| Document | Description |
|----------|-------------|
| Business type | Sole proprietor, LLC, individual |
| Name | Legal name and trading name |
| Address | Company legal address |
| TIN / Tax ID | Tax identifier |
| Director's document | Passport or ID card |
| Bank details | IBAN or account number |
| Business description | "Restaurant / cafe / food delivery" |
Verification usually takes **1–3 business days**.
### Step 3. Get API keys
1. In the Stripe dashboard: **Developers** → **API keys**
2. Copy:
- **Publishable key** (pk_live_...)
- **Secret key** (sk_live_...)
> ⚠️ **Important**: for testing, use keys from **Test mode** (pk_test_..., sk_test_...).
---
## 4. Connecting to Cenaly
You connect **your own** Stripe account: the guest's money goes straight to your Stripe balance, Cenaly never holds it.
Open **App Store → “Finance” category → Stripe card → “Configure”** — the connection block opens as a modal right in the store. The familiar path also works: **Locations → location card → “Payments” tab** (the “Guest payment” section), then **“Connect”** on the Stripe card.
### Connection wizard (recommended)
A step-by-step wizard (≈10 minutes) walks you through the whole process, showing where to click in the Stripe dashboard:
1. **Choose the mode** — test or live. The mode in Stripe and the “Test / Live” toggle in Cenaly must match.
2. **Copy your API keys** — **Developers → API keys**: the Secret key (`sk_test_…` / `sk_live_…`) is required, the Publishable key (`pk_…`) is optional.
3. **Add a webhook endpoint** — **Developers → Webhooks → Add endpoint**, and paste the Cenaly webhook URL that the wizard offers with a “Copy” button into the Endpoint URL field. Without a webhook Stripe won't tell Cenaly that the order was paid, and the order may stay “pending”.
4. **Select the events to send** — under “Select events” add `checkout.session.completed` (required — this is what confirms a paid order), and for delayed payment methods also `checkout.session.async_payment_succeeded` and `checkout.session.async_payment_failed`. Then click “Add endpoint”. Without these events the webhook exists but reports nothing.
5. **Copy the Webhook signing secret** (`whsec_…`) — an optional field, but it enables signature verification of the notifications.
6. **Connect** — the entered values go to the secure backend.
### Short form
If you already know your way around Stripe, open the inline connection form and fill in the same fields: Secret key, Webhook signing secret (optional), Publishable key (optional), plus the mode toggle.
> **Stripe Connect is not used.** Cenaly is not an intermediary platform: you enter the keys of your own account instead of granting Cenaly access to it over OAuth.
---
## 5. Setting up payment methods
### Bank cards
Enabled automatically when Stripe is connected:
- **Visa** / **Mastercard** — all countries
- **American Express** — most countries
- **Diners Club** / **Discover** — selectively
### Apple Pay
1. **Settings** → **Payments** → **Apple Pay** → **Enable**
2. Add and verify your domain in the Stripe Dashboard:
- **Settings** → **Apple Pay** → **Add new domain**
- Upload the verification file
3. Apple Pay will appear as an option on iOS/Safari
### Google Pay
Enabled automatically when Stripe is connected. Works on Android and in Chrome.
### Other methods
Via Stripe you can enable:
| Method | Countries | Description |
|-------|--------|----------|
| **iDEAL** | Netherlands | Bank transfer |
| **Bancontact** | Belgium | Bank transfer |
| **SEPA Direct Debit** | EU | Bank account debit |
| **Przelewy24** | Poland | Online payments |
| **giropay** | Germany | Bank transfer |
| **EPS** | Austria | Bank transfer |
| **Boleto** | Brazil | Payment voucher |
Enable the required methods in Stripe Dashboard → **Settings** → **Payment methods**.
---
## 6. Tips
### Setup
1. **Settings** → **Payments** → **Tips**
2. Options:
| Parameter | Description |
|----------|-------------|
| Suggested amounts | Presets are filled in by the venue's country: 18/20/25 % for the USA, 15/18/20 % for Canada, 10/15/20 % for Georgia; in Japan, China and Korea the tip block is hidden |
| Custom amount | Guest enters their own amount |
| Default tip | None (guest chooses) |
| Distribution | To waiter / shared pool / proportional |
### What the guest sees
At checkout after selecting items:
```
Your order: 45₾
Add a tip?
[ 10% (4.50₾) ] [ 15% (6.75₾) ] [ 20% (9.00₾) ] [ Other amount ]
[ No tip ]
TOTAL: 49.50₾ [Pay →]
```
### Tip reports
**Analytics** → **Tips**:
- Total tips for the period
- Average tip %
- Tips by employee
- Trend (up/down)
---
## 7. Payouts to your account
### How Stripe pays out funds
```
Guest pays → Stripe holds → After T+2 days → Funds in your account
```
| Parameter | Value |
|----------|----------|
| Standard payout | T+2 (in 2 business days) |
| Accelerated payout | T+1 (available in some countries) |
| Instant payout | Instant Payouts (within an hour, for an additional fee) |
| Minimum payout | 1€ / 1$ / 1₾ |
### Schedule setup
In Stripe Dashboard → **Settings** → **Payouts**:
- **Daily** (recommended)
- **Weekly** (specific day of the week)
- **Monthly**
---
## 8. Stripe fees
| Region | Fee | Example |
|--------|----------|--------|
| Europe (EEA) | 1.5% + 0.25€ | Order 50€ → fee 1.00€ |
| United Kingdom | 1.5% + 0.20£ | Order £50 → fee £0.95 |
| USA/Canada | 2.9% + $0.30 | Order $50 → fee $1.75 |
| International cards | +1.5% | Extra for cards issued in another country |
| Currency conversion | +1% | If card currency ≠ account currency |
> 💡 Cenaly does not charge any additional fee on top of Stripe.
---
## 9. Refunds
### Full refund
1. **Orders** → select an order → **Refund** → **Full**
2. Funds are returned to the guest's card within 5–10 business days
3. Stripe returns the fee (in most cases)
### Partial refund
1. **Orders** → order → **Refund** → **Partial**
2. Enter the amount or select items
3. The guest receives a partial refund
### Automatic refunds
Configure rules in **Settings** → **Payments** → **Refunds**:
- Cancel before cooking starts → automatic full refund
- Cancel after cooking starts → requires manager approval
---
## 10. Security
### PCI DSS
- Cenaly **does not store** card data — everything is processed by Stripe
- Stripe is certified as **PCI Level 1** (highest level)
- Card data is encrypted and tokenized
### 3D Secure
- Automatic 3D Secure checks for EU cards (SCA/PSD2)
- Reduces fraud and chargebacks
- For the guest: confirmation in the bank app
### Radar (fraud protection)
Stripe Radar automatically blocks suspicious transactions:
- Unusual purchase patterns
- Cards from blacklists
- Geolocation anomalies
---
## 11. Testing
Before enabling in production, test:
### Stripe test cards
| Card number | Result |
|-------------|-----------|
| 4242 4242 4242 4242 | Successful payment |
| 4000 0000 0000 3220 | 3D Secure |
| 4000 0000 0000 9995 | Declined (insufficient funds) |
| 4000 0000 0000 0069 | Card expired |
CVV: any 3 digits. Date: any future date. ZIP: any.
### How to test
1. **Settings** → **Payments** → **Mode: Test**
2. Use test keys (pk_test_..., sk_test_...)
3. Create a test order → pay with a test card
4. Check: receipt, order status, analytics
5. Switch to **Mode: Live** when everything works
---
## 12. Alternative providers
For countries without Stripe or as an add-on:
| Provider | Countries | Description |
|-----------|--------|----------|
| **BOG iPay** | 🇬🇪 Georgia | Bank of Georgia, popular in Georgia |
| **TBC Pay** | 🇬🇪 Georgia | TBC Bank |
| **İyzico** | 🇹🇷 Turkey | Local payment provider |
| **PayTR** | 🇹🇷 Turkey | Alternative to İyzico |
| **Adyen** | EU, global | Enterprise solution |
| **Square** | US, UK, EU | POS + online |
Connecting any provider: **App Store** → **“Finance”** category → the provider's card → **“Configure”**, or via the familiar path **Locations** → location card → **“Payments”** tab.
---
## 13. FAQ
### When will I receive the money?
In 2 business days after payment (T+2). The first payout may take 7–14 days (while Stripe verifies the account).
### A guest wants to pay cash — what should I do?
Cenaly supports mixed payments. Mark the order as "Cash payment" — a fiscal receipt will be generated, but Stripe won't be involved.
### Can I connect both Stripe and BOG iPay?
Yes. In payment settings you can enable multiple providers. The guest chooses the convenient one at checkout.
### Stripe blocked the account — what should I do?
1. Check your email — Stripe sends the reason
2. Usually additional verification is required
3. Contact Stripe Support: support.stripe.com
4. While blocked, you can use an alternative provider
### How can I minimize fees?
- Encourage payments with EU cards (1.5% instead of 2.9%)
- Use SEPA for large amounts (fixed 0.35€)
- With high volume (>100K€/month) — request a custom rate from Stripe
---
## 14. Support
- **Stripe:** support.stripe.com
- **Cenaly:** support@cenaly.com → subject "Stripe / Payments"
- **Stripe Status:** status.stripe.com (service status check)
---
# Fiscalization
Connecting fiscal printers and online cash registers to comply with tax legislation.
---
## 1. Overview
**Fiscalization** is a legal requirement in many countries: every financial transaction must be registered in the tax system and confirmed with a fiscal receipt.
Cenaly supports fiscalization for:
| Country | System | Status |
|--------|---------|--------|
| 🇬🇪 Georgia | Revenue Service (RS.ge) | ✅ Supported |
| 🇹🇷 Turkey | e-Dönüşüm / ÖKC | ✅ Supported |
| 🇩🇪 Germany | TSE (Technische Sicherheitseinrichtung) | ✅ Supported |
| 🇦🇹 Austria | Registrierkassenpflicht (RKSV) | ✅ Supported |
| 🇮🇹 Italy | Registratore Telematico (RT) | ✅ Supported |
| 🇪🇸 Spain | VeriFactu / TicketBAI | ✅ Supported |
| 🇵🇱 Poland | Kasa fiskalna online — own fiscal printer (POSNET Thermal) via the bridge | ✅ Supported |
| 🇵🇱 Poland | Kasa fiskalna online — API of a third-party certified cash register (CRK) | 🛠 In development: cannot be connected yet |
| 🇰🇿 Kazakhstan | Cloud OFD gateway (Webkassa) | 🛠 In development: cannot be connected yet |
| 🇬🇷 Greece | myDATA (ΑΑΔΕ) | 🔜 In development |
| 🇭🇷 Croatia | Fiskalizacija | 🔜 In development |
| 🇷🇴 Romania | SAF-T / E-factura | 🔜 In development |
---
## 2. How it works
```
Guest pays for the order
↓
Cenaly generates a fiscal document
↓
The document is sent to the fiscal device / cloud cash register
↓
The device registers the transaction with the tax authority
↓
Guest receives a fiscal receipt (printed or electronic)
```
### Two fiscalization options
| Option | Description | For whom |
|---------|----------|----------|
| **Physical printer** | Fiscal printer on premises (Epson, Star, Atol, Datecs) | Dine-in, takeaway |
| **Cloud cash register** | Cloud fiscalization service (no physical printer needed) | Delivery, online orders |
---
## 3. Connecting a fiscal printer
### Supported printers
| Manufacturer | Models | Countries |
|--------------|--------|--------|
| **Epson** | TM-T88VI, TM-T88VII, TM-m30II | All |
| **Star Micronics** | TSP100IV, mC-Print3 | All |
| **Datecs** | FP-700X, FP-2000 | Georgia, Bulgaria |
| **Atol** | 30F, 55F, 77F | Russia, Kazakhstan |
| **Custom** | K3 FIT, KUBE II F | Italy |
| **Bixolon** | SRP-350plusIII | All (receipt) |
If the venue has no receipt printer at all, the **guest bill (pre-check) is printed by the fiscal register itself** — the line width is asked from the device so that the amounts column is not cut off. Daisy, ATOL and Shtrikh-M can do this; Polish Thermal registers do not print free text and refuse honestly. Only the test print and the pre-check go to a fiscal register — kitchen tickets and receipt copies do not.
### Step-by-step connection
#### Step 1. Connect the printer to the network
- **Ethernet**: cable from the router to the printer
- **Wi-Fi**: configure via the printer utility
- **USB**: via Cenaly Print Agent (PC application)
The printer and the device running Cenaly must be on the **same local network**.
#### Step 2. Configure in Cenaly
1. **Settings** → **Fiscalization** → **+ Add printer**
2. Select connection type:
- **Network** → enter the printer IP address
- **USB** → install [Cenaly Print Agent](https://cenaly.com/downloads/print-agent) → the printer will be detected automatically
3. Select country and tax regime
4. Enter company details (Tax ID, legal entity name, address)
5. **Test receipt** → verify printing
6. **Save**
#### Step 3. Configure tax rates
| Parameter | Example (Georgia) | Example (Germany) |
|----------|-------------------|-------------------|
| Standard VAT | 18% | 19% |
| Reduced VAT | — | 7% (takeaway food) |
| No VAT | Exempt | — |
1. **Settings** → **Fiscalization** → **Taxes**
2. Set rates for your country
3. Assign the rate to categories (food, drinks, alcohol)
---
## 4. Country-specific setup
### 🇬🇪 Georgia — Revenue Service
**Requirements:**
- Register the cash register on rs.ge
- Fiscal module in the printer (Datecs FP-700X recommended)
- Tax ID (საიდენტიფიკაციო ნომერი)
**Setup:**
1. Register the cash register at [rs.ge](https://www.rs.ge)
2. Obtain the cash register identifier
3. In Cenaly: **Fiscalization** → **Country: Georgia** → enter the cash register ID
4. Each receipt is automatically registered in RS
### 🇹🇷 Turkey — e-Dönüşüm / ÖKC
**Requirements:**
- Online ÖKC (Yeni Nesil Ödeme Kaydedici Cihaz)
- Registration with GİB (Gelir İdaresi Başkanlığı)
- VKN (Vergi Kimlik Numarası)
**Setup:**
1. Connect an ÖKC printer (Ingenico, Profilo, Beko)
2. In Cenaly: **Fiscalization** → **Country: Turkey**
3. Enter VKN and the ÖKC serial number
4. e-Fatura / e-Arşiv Fatura are generated automatically
### 🇩🇪 Germany — TSE
**Requirements (KassenSichV):**
- TSE module (Technische Sicherheitseinrichtung)
- Certified TSE provider: fiskaly, Swissbit, Epson
- Register the cash register with the Finanzamt
**Setup:**
1. Purchase a TSE module (recommended: fiskaly Cloud-TSE)
2. In Cenaly: **Fiscalization** → **Country: Germany** → **TSE provider**
3. Enter the TSE ID and API key
4. Each transaction is signed by the TSE
5. The receipt contains a QR code for verification
**DSFinV-K export**: Cenaly generates DSFinV-K files for tax audits: **Settings** → **Fiscalization** → **Export DSFinV-K** (for a period).
### 🇦🇹 Austria — Registrierkassenpflicht
**Requirements (RKSV):**
- Signature certificate (AES or HSM)
- Registration on FinanzOnline
- QR code on every receipt (for BMF verification)
**Setup:**
1. Obtain a signature certificate (A-Trust, PrimeSign)
2. Register the cash register on [FinanzOnline](https://finanzonline.bmf.gv.at)
3. In Cenaly: **Fiscalization** → **Austria** → upload the certificate
4. Each receipt is signed and includes a QR code
### 🇮🇹 Italy — Registratore Telematico
**Requirements:**
- RT (Registratore Telematico) — certified device
- Registration with Agenzia delle Entrate
**Setup:**
1. Connect an RT printer (Custom, Epson)
2. In Cenaly: **Fiscalization** → **Italy** → RT serial number
3. Receipts are automatically transmitted to Agenzia delle Entrate
### 🇪🇸 Spain — VeriFactu / TicketBAI
**Requirements:**
- VeriFactu (nationwide, from 2025) or TicketBAI (Basque Country)
- Electronic signature certificate (FNMT)
**Setup:**
1. Obtain a certificate at [FNMT](https://www.sede.fnmt.gob.es)
2. In Cenaly: **Fiscalization** → **Spain** → upload the certificate
3. Specify the region (TicketBAI for the Basque Country, Navarre, Álava)
4. Documents are signed and sent to AEAT/Hacienda Foral
### 🇵🇱 Poland — Kasa fiskalna online
**Requirements:**
- Online fiscal cash register
- Registration in Centralnym Repozytorium Kas (CRK)
**Setup:**
1. Connect your own fiscal printer that speaks the POSNET Thermal protocol (Posnet, Emar, Innova, Torell, Elzab Mera) to the point-of-sale computer
2. Add it in **Hardware** as a fiscal register — the bridge on that computer drives it
3. Data is transmitted to CRK by the cash register itself
The second path — fiscalizing through the **API of somebody else's certified cash register** — is 🛠 in development: the gateway is written, but its backend is not deployed and there is no adapter for a specific certified model yet, so no connection card is shown in the location integrations.
---
## 5. Cloud fiscalization
For online orders (delivery, pre-orders) without a physical printer:
### Supported cloud services
| Service | Countries | Description |
|--------|--------|----------|
| **fiskaly** | Germany, Austria | Cloud-TSE, API-based |
| **ATOL Online** | Russia, Kazakhstan | Cloud cash register |
| **Checkbox** | Ukraine | Cloud RRO |
| **Facturify** | Spain | Cloud VeriFactu |
### Cloud cash register setup
1. **Settings** → **Fiscalization** → **Cloud cash register**
2. Select a provider
3. Enter the API key
4. Choose which channels to fiscalize:
- ✅ Dine-in (if there is no physical printer)
- ✅ Delivery (online orders)
- ✅ Takeaway (pickup)
---
## 6. What is printed on the receipt
A standard fiscal receipt contains:
```
╔══════════════════════════════╗
║ RESTAURANT NAME ║
║ Address: 1 Example St. ║
║ Tax ID: 123456789 ║
╠══════════════════════════════╣
║ Khinkali (5 pcs) x5 25₾ ║
║ Adjarian khachapuri x1 18₾ ║
║ Lemonade x2 8₾ ║
╠══════════════════════════════╣
║ TOTAL: 51₾ ║
║ VAT (18%): 7.76₾ ║
║ Payment: card ║
╠══════════════════════════════╣
║ Receipt #: 00001234 ║
║ Date: 10.03.2026 14:32 ║
║ Cashier: Giorgi ║
║ [QR code for verification] ║
╚══════════════════════════════╝
```
### Configuring receipt content
**Settings** → **Fiscalization** → **Receipt template**:
- Logo (optional)
- Additional header/footer text
- Venue Wi-Fi password
- QR code to the menu or loyalty program
- "Thank you for your visit!" message
---
## 7. Electronic receipts
In addition to paper receipts, Cenaly sends electronic ones:
- **Email receipt**: to the guest's email (if provided)
- **SMS receipt**: a link to the receipt
- **QR receipt**: the guest scans a QR code on the screen
Benefits:
- Saves paper
- The guest can always find the receipt
- Meets requirements (e-receipt)
---
## 8. Accounting reports
### Z report (end of day)
Automatic or on demand: **Fiscalization** → **Z report**
Includes:
- Number of receipts for the day
- Amount by payment type (cash, card, online)
- VAT by rate
- Refunds
- Total revenue
### X report (current)
Interim report without closing the shift.
### Data export
- **CSV/Excel**: for the accountant
- **XML**: for 1C, SAP
- **DSFinV-K**: for the German tax authority
- **SAF-T**: for international audit
- **API**: for automated export to an accounting system
---
## 9. FAQ
### Is fiscalization mandatory?
In most EU countries — **yes**. Penalties for operating without fiscalization range from €500 (Georgia) to €25,000 (Germany).
### Can we operate without a physical printer?
Not today: the cloud fiscalization gateways for Kazakhstan (Webkassa) and Poland (kasa online over API) are not open for connection yet, so every supported country needs your own device. In Russia a physical cash register is required by law anyway, but it can be driven from the cloud through the **Cash register API** section — the computer with the register stays in one place while receipts are sent to it by your website or 1C.
### What to do if the printer breaks?
1. Cenaly switches to **fallback mode** — receipts are saved
2. After replacing the printer, accumulated receipts are sent automatically
3. Some countries require notifying the tax authority about downtime
### How to connect multiple printers?
One printer for the dining area + one for the bar + one for takeaway — each is configured in **Fiscalization** → **+ Add printer** with the zone specified.
---
## 10. Support
- **Cenaly:** support@cenaly.com → subject "Fiscalization"
- For cash register registration questions, contact your country's tax authority
- List of certified printers: cenaly.com/fiscal-printers
---
# Analytics and Reports
## Overview
The analytics section provides a complete picture of your venue's performance — from dish popularity to staff efficiency. All data is available in real time and can be exported to Excel/CSV.
---
## Dashboard
The main analytics page displays key metrics:
- **Revenue** — total amount for the period (day/week/month)
- **Number of orders** — total count and trend
- **Average check** — average order amount
- **Popular items** — TOP 10 most ordered
- **Menu views** — how many times guests opened the QR menu
---
## Sales Reports
### General report
- Revenue by days, weeks, months
- Trend charts
- Comparison with previous periods
- Filtering by categories, items, order channels
### Menu ABC analysis
Classification of items by profitability and popularity:
| Group | Description | Action |
|--------|----------|----------|
| **A — Stars** | High profit + high popularity | Promote, keep in a prominent place |
| **B — Workhorses** | Average profit, stable demand | Optimize margin |
| **C — Outsiders** | Low profit and/or low demand | Update or remove from the menu |
### Profitability report (COGS)
- Cost of goods for each item
- Margin in % and absolute numbers
- Food cost by categories
- Optimization recommendations
---
## Staff KPIs
### Waiter metrics
- Number of tables served
- Average check per waiter
- Average service time
- Total tips received
- Number of upsells (additional sales)
### Kitchen metrics
- Average order preparation time
- Number of orders processed
- Returns and complaints
- Hourly workload
---
## Channel Report
Comparison of order channel effectiveness:
| Channel | Metrics |
|-------|---------|
| Dine-in | Orders, average check, service time |
| Delivery | Orders, average delivery time, zones |
| Takeaway | Orders, average check |
| WhatsApp | Orders, conversion |
| Telegram | Orders, new users |
---
## Menu Analytics
### Item popularity
- TOP most viewed items
- TOP most ordered
- Items that are viewed but not ordered (possibly the price is too high)
### Heatmap
- What categories are popular at what time of day
- Peak order hours
- Seasonal trends
### Menu engineering
A dedicated tab in menu statistics lays dishes out on the **Kasavana & Smith matrix** (stars, plowhorses, puzzles, dogs) and gives a recommendation for each: keep it featured, raise the price, move it up the menu, or take it off. The same tab shows margin by channel with aggregator commissions taken into account.
Details — [Menu engineering](/en/docs/menu-engineering).
---
## Financial Reports
### P&L (Profit and Loss)
- Revenue
- Cost of goods sold (COGS)
- Gross profit
- Operating expenses
- Net profit
### Cash Flow
- Cash inflows by day
- Breakdown by payment methods
- Ending balances for the period
---
## Data Export
All reports are available for download:
- **Excel (.xlsx)** — for analysis in Excel / Google Sheets
- **CSV** — for import into accounting systems
- **PDF** — for printing and reporting
---
## Accounting Integration
Analytics data can be automatically transferred to:
- **1C** (Russia)
- **iiko** (CIS)
- **MoySklad** (Russia)
- Other systems via **API** / **Webhooks**
---
## Tips for Working with Analytics
1. **Check the dashboard daily** — spot trends and anomalies
2. **Use ABC analysis** once a month — update the menu based on data
3. **Compare periods** — to see growth or decline
4. **Export to Excel** — for detailed analysis and reporting
5. **Track staff KPIs** — for motivation and training
---
## 8. Inventory Management and Cost of Goods
### Ingredient tracking
1. **Inventory** → **Ingredients** → add all products with purchase price
2. Link ingredients to menu items (recipe cards)
3. The system will automatically calculate the **cost** of each dish
### Recipe card (recipe)
For each dish, specify:
- List of ingredients with exact weight (grams / ml)
- Processing loss percentage (shrinkage, boil-down)
- Finished dish yield
### Food cost calculation
| Metric | Formula | Benchmark |
|-----------|---------|-------|
| Food cost % | Cost ÷ Selling price × 100% | 25–35% |
| Markup | Selling price ÷ Cost | 2.5–4x |
| Margin | (Price - Cost) ÷ Price × 100% | 65–75% |
### Stock control
- **Auto write-off**: when an order is closed, ingredients are written off automatically
- **Low stock**: push notification when the minimum is reached
- **Stocktaking**: reconcile actual stock with system stock
- **Discrepancy report**: actual/system deviations to control theft
### Purchasing
- The system suggests a purchase list based on the sales forecast
- Auto-order from suppliers when minimum stock is reached
- Purchase history with prices to track inflation
---
## 9. Demand forecast
The forecast lives in Inventory, on the **"Forecast"** tab, and is computed from sales history with no AI at all — from two explainable statistics: the median sales of a dish on this weekday over 8 weeks, and how that demand is spread across dayparts.
What comes out of it:
- a **prep plan** for the shift — with recipes exploded (including nested semi-finished items) and a "be ready by" hour;
- a **supplier order draft** for a chosen coverage horizon;
- a **"runs out around 19:00" risk** corrected for today's pace.
Details, including the limits, — [Demand forecast](/en/docs/demand-forecast).
---
## 10. Automated Reports
### Mailing setup
1. **Analytics** → **Report schedule**
2. Choose: daily, weekly, monthly
3. Specify recipients (email)
4. Select report sections
### Auto-report contents
- Revenue and average check
- TOP 10 items
- Comparison with the previous period
- Stop list for the period
- Staff KPIs
---
# Menu engineering
**Menu engineering** answers a question revenue reports never show: *what to do with a specific dish*. One dish is ordered often but barely feeds the business. Another has an excellent margin but nobody notices it on the menu. A third does neither and simply takes up a line.
Open **Admin Panel → Menu → Statistics** (`admin.cenaly.com/menu/statistics`) and switch to the **"Menu engineering"** tab.
The method is the classic **Kasavana & Smith matrix** (1982): two dimensions, four quadrants, one recommendation per quadrant.
---
## How the quadrants are calculated
Every dish is compared **inside its own menu category**, not against the whole menu: comparing a dessert with a main course is meaningless — they have different prices and different order frequencies. A "Whole menu" toggle lets you look at the cross-category view as well.
**Popularity threshold.** If demand were even, each of the N dishes sold in a category would take a `1/N` share. A dish counts as popular if it reaches at least **70 % of that bar** — i.e. its share in units is ≥ `0.7 × (1/N)`. That is the method's canonical factor.
**Margin threshold.** A dish's margin here is its **unit contribution margin**: average selling price over the period minus portion cost. The bar is the category's **quantity-weighted** average margin, not a plain arithmetic mean: otherwise one expensive dish sold twice would raise the bar for the whole category.
**Portion cost** comes from the dish recipe (components × purchase prices — see [Inventory](/en/docs/inventory)).
> **Dishes without a complete portion cost do not get a quadrant.** If there's no recipe, or some ingredients have no purchase price, the dish is flagged "no cost data" and stays out of the matrix. This is deliberate: a "remove from the menu" decision based on an invented margin is far too expensive.
Besides the table, the tab draws a **scatter plot**: popularity on one axis, unit margin on the other, both thresholds shown as dashed lines. You see not only which quadrant a dish is in, but how far it is from the border.
---
## The four quadrants
| Quadrant | Popularity | Margin | Recommendation |
|---|---|---|---|
| ⭐ **Stars** | high | high | **Keep it featured** — don't touch quality or portion size, put it at the top of its section and into recommendations |
| 🐴 **Plowhorses** | high | low | **Raise the price or cut the cost** — guests love it, so it will absorb a modest price increase; the alternative is reworking the recipe |
| ❓ **Puzzles** | low | high | **Move it up the menu** — rename it, add a photo, suggest it in the room and at the till; demand is limited by visibility, not by the dish |
| 🗑 **Dogs** | low | low | **Take it off the menu** — nobody orders it and it doesn't feed you, while its ingredients still occupy stock |
The "What to do" column is filled in automatically from the quadrant — it is a fixed rule of the method, not an AI suggestion.
Rows inside a category are sorted by total margin over the period (what actually feeds you comes first), and categories by revenue.
---
## Margin by channel
A dish with an average in-house margin can go negative in an aggregator that takes 30 %. That's why there is a **"Margin by channel"** block under the matrix:
| Column | What it is |
|---|---|
| Channel | own channel, Wolt, Glovo, Yandex Eda and so on |
| Gross | channel revenue before the platform's cut |
| Commission | the cut: a percentage of revenue plus the allocated share of the per-order fixed fee |
| Net | what actually reaches your till |
| Margin | net minus the cost of goods sold |
Commission rates are set **per location + channel pair** in the location's integrations (see [Finance](/en/docs/finance)). Until they are filled in, commission counts as zero and net equals gross — an optimistic picture.
Channel cost is computed **only from dishes with a complete recipe**, while revenue counts all of them; how many of the channel's dishes are left without cost is shown as a separate number.
---
## What the matrix needs to appear
1. **Sales for the period.** The period uses the same selector as the statistics tab: 7 / 30 / 90 days, 12 months, "All time".
2. **Dish recipes** with purchase prices filled in for the ingredients — without them a dish has no cost and therefore no quadrant.
3. **Channel commissions** — only for the "Margin by channel" block; the matrix itself works without them.
If not a single dish has a complete cost, the tab says so plainly instead of showing an empty table.
The **⇩ CSV** button exports the whole matrix — handy for discussing the menu with your chef in a spreadsheet or attaching it to a price-review record.
---
## Limitations
- **Without cost of goods the matrix cannot be built.** You need recipe cards with purchase prices; if not a single item has a full cost, the view says so honestly instead of showing an empty table.
- **On a short period the quadrants are unstable.** A couple of sales move a dish from "puzzles" to "stars" and back — look at 30 or 90 days.
- **Channel commissions are estimated rates** from your settings, not the marketplaces' actual deductions; the "Margin by channel" block is only as accurate as those rates.
- **There is no single metric glossary yet** — revenue in Finance, in Statistics and at the POS may be computed differently, so compare identical periods and identical slices.
- **The section is computed on the analytics database of the AWS contour** — on the Russian brand sales statistics falls back to computing from orders.
---
## Troubleshooting
**The view is empty.** There are no sales for the period, or not a single item has a full cost of goods.
**A dish is missing from the matrix.** It has no recipe card with ingredient prices, so it has no margin — there is nothing to measure.
**A quadrant looks implausible.** Check the period: 7 days is too small a sample. And check ingredient prices — a stale purchase price distorts margin more than anything else.
**The numbers do not match the Finance section.** Compare the period and the slice: there is no single "truth about the number" between sections yet.
---
## Related sections
- [Menu statistics](/en/docs/analytics) — sales per dish, ABC, trend and "frequently bought together"
- [Inventory](/en/docs/inventory) — recipes and purchase prices behind the portion cost
- [Finance](/en/docs/finance) — channel commissions and net margin for the whole venue
- [Demand forecast](/en/docs/demand-forecast) — how many of this dish will sell tomorrow
---
## FAQ
### Why is a dish in no quadrant at all?
Either it had no sales in the selected period, or it has no complete portion cost: the recipe is missing, or some ingredients have no purchase price. In both cases the dish stays in the table with a flag but without a quadrant.
### Can I change the 70 % popularity threshold?
Not in the interface — the canonical factor of the method is used. What you can change is the grouping: compare dishes inside a category (default) or across the whole menu.
### The matrix says to remove a dish, but we need it on the menu "for the range". What now?
The recommendation is a consequence of two numbers, not a verdict. A dish that doesn't feed you but keeps guests coming (a kids' item, a vegetarian alternative, "that one dish" for regulars) can stay on the menu deliberately. The matrix is useful here precisely because it shows the price of that decision.
### Why does the channel margin differ from the matrix margin?
The matrix computes margin from the gross selling price; the channel block computes it from revenue **after** the platform's cut. The difference between the two is the price of the channel.
---
# Loyalty program and coupons
The loyalty engine runs **three programs on one guest ledger**: stamps, points and a regular-guest discount. The ledger is kept per guest and per location, and only the server writes earnings and redemptions into it — a balance cannot be forged from the browser.
Switch it on in **Location settings → Loyalty**. While the engine is off, none of the three programs run and no files are created.
The guest is identified by **phone number**; for a signed-in guest the ledger may be kept under their account.
---
## Stamps (stamp card)
The classic "every sixth coffee is free" card.
| Setting | What it defines |
|---|---|
| Stamps per order | how many stamps one qualifying order gives (usually 1) |
| Reward threshold | how many stamps are needed |
| Reward type | a **free item** (you pick the dish) or a **percentage discount** |
| Minimum order amount | below it no stamp is given (0 — always give one) |
| Program name | shown to the guest; translated into your menu languages |
Stamps are credited when an order reaches a realised status, and **exactly once per order**: reprocessing does not double the balance. The reward is applied by the cashier as an ordinary discount marked "loyalty"; redemption is idempotent too, and the balance never goes negative.
---
## Points
The second program on the same ledger.
| Setting | What it defines |
|---|---|
| Earn percentage | what percent of the paid check comes back as points |
| Redemption cap | what share of a check (%) can be covered by points. Not set — **50 %** |
| Excluded categories | categories that earn no points (alcohol being the classic) |
| Minimum check amount | below it no points are earned |
Exclusions are set **by category**: there is no pinpoint list of items in the interface yet (the engine understands such a field, but it cannot be filled in from the settings).
**1 point = 1 currency unit**, points are whole numbers. The cap is not accidental: uncapped redemption is a straight hole in revenue.
The till shows the cashier exactly the number of points the server will later deduct: the calculation at the till and on the server is one and the same formula.
---
## Regular-guest discount
The third and simplest program: if a guest has made at least the configured number of completed orders, the till **suggests** a discount of the configured percentage.
It is a suggestion — applying it or not is the cashier's call. The order count comes from the guest directory ([Returning guests](/en/docs/customers)).
> The guest directory only lives on AWS brands (`cenaly.com`, `cenaly.com` and others). In the Russian contour (`cenaly.ru`) there is nothing to count a guest's orders with, so the regular-guest suggestion does not appear at the till yet. Stamps and points do not depend on it and work everywhere.
---
## The loyalty panel at the till
The till has a "Loyalty" panel (it appears only when the engine is on). Given the guest's phone number it:
- shows the **stamp and point balances**;
- lets you **apply a stamp reward**;
- lets you **redeem points** within the cap;
- **suggests the discount** for a regular guest.
A redemption turns into an ordinary discount on the ticket — the till's money math is not forked.
> **Redeeming points on a cash or pay-the-courier order happens at the till.** At online checkout the guest redeems points themselves, but only when paying online: cash and "pay the courier" go through the till, and so do the points.
---
## What the guest sees
- a **checkout teaser** — a loyalty block with the balance and the option to redeem points when paying online;
- **progress on the order screen** — how many stamps are collected and how many are left; the screen is public, so no private API is needed.
---
## Coupons and promo codes
Coupons are a separate tool, unrelated to the loyalty ledger.
| Type | What it does |
|---|---|
| **Percent** | a percentage discount, with an optional maximum amount |
| **Amount** | a fixed discount in currency |
| **Free shipping** | zeroes out delivery |
| **BOGO** | "buy one, get one" under a configurable rule |
Every coupon can carry: a scope (whole cart / specific products / a collection), a minimum order amount, a total usage limit and a per-guest limit, a validity window, whether it stacks with other coupons, and customer conditions (for example, new guests only). Every application is written to a redemption ledger, so the limits are enforced honestly.
**Location promo codes** (the "Promo codes" block in the location settings) also have a **validity window** — a "Valid" column with "from" and "to" dates. As soon as the table holds scheduled or expired codes, a filter appears above it — **"Active / Scheduled / Expired / All"** with counters; active ones are shown by default. If every promo code of a location has expired, the storefront does not open the code field to the guest at all.
More on commercial tools — [Commerce](/en/docs/commerce).
---
## Limits: what the program does not do
An honest list, so you don't plan around things that don't exist:
- **points do not expire** — there is no validity period;
- **there are no tiers** (bronze/silver/gold) — earning is the same for every member;
- **there is no referral program.** There is a separate tool — an **affiliate program** for site owners and bloggers (a commission on referred orders) — but it is not "invite a friend" for guests;
- **there is no QR stamping at the table** — a stamp is only given for a paid order.
---
## Related sections
- [Returning guests](/en/docs/customers) — the guest directory, history, segments and debts
- [POS](/en/docs/pos) — the loyalty panel and applying a reward
- [Commerce](/en/docs/commerce) — coupons, gift cards, memberships, affiliate program
- [Engagement campaigns](/en/docs/campaigns) — pop-ups, wheel of fortune and coupon reveals on the storefront
- [Reviews and reputation](/en/docs/reviews) — collecting reviews and handling negatives
- [Email newsletters](/en/docs/newsletter) — letters to guests
---
## FAQ
### Can I enable only stamps or only points?
Yes. The programs are enabled independently inside the shared engine: you can run stamps only, points only, or both.
### Why doesn't the guest see their points?
Check three things: the loyalty engine is on for this location, the points program is on, and the guest left a phone number with the order. Without a phone number (or a sign-in) there is nothing to attach the balance to.
### Do points accrue on alcohol?
Not if you added the alcohol category to the exclusions. By default there are no exclusions.
### Can a guest redeem points when paying cash?
Yes, but the cashier does it at the till. At online checkout redemption is available only for online payment.
### Do points expire after 90 days?
No. There is no expiry for points right now — they sit on the guest's account until spent.
---
# Allergens and nutrients
## Why this is needed
In the European Union, the United Kingdom, Saudi Arabia, and many other countries, it is **legally required** to provide guests with information about allergens in dishes. Fines for non-compliance can reach **tens of thousands of euros**.
Cenaly makes it easy to label allergens and nutritional values — the information is displayed directly in the digital menu.
---
## 14 main allergens (EU)
According to **Regulation (EU) No 1169/2011**, the following allergens must be labeled:
| # | Allergen | Icon | Examples |
|---|----------|--------|---------|
| 1 | **Gluten** | 🌾 | Wheat, rye, barley, oats |
| 2 | **Crustaceans** | 🦐 | Shrimp, crabs, lobsters |
| 3 | **Eggs** | 🥚 | Chicken eggs and products made from them |
| 4 | **Fish** | 🐟 | All types of fish |
| 5 | **Peanuts** | 🥜 | Peanuts, peanut butter |
| 6 | **Soy** | 🫘 | Soy sauce, tofu, soy milk |
| 7 | **Milk** | 🥛 | Milk, cheese, butter, yogurt |
| 8 | **Nuts** | 🌰 | Almonds, hazelnuts, cashews, walnuts |
| 9 | **Celery** | 🥬 | Stalks, root, seeds |
| 10 | **Mustard** | 🟡 | Mustard, mustard oil |
| 11 | **Sesame** | ⚪ | Sesame seeds, tahini |
| 12 | **Sulfur dioxide** | 🧪 | Sulfites (>10 mg/kg), wine |
| 13 | **Lupin** | 🌿 | Lupin flour, seeds |
| 14 | **Molluscs** | 🦪 | Mussels, oysters, squid |
This is the list of **regulatory requirements**, not the list of what can be flagged on an item today — see the next section.
---
## How to label allergens in Cenaly
### Step 0. Turn the card fields on
The dish-flags block and the nutrients block are **off by default** — without this step you won't find them on the item card. There are two equivalent ways to enable them:
- in the header of the item card — the **"Visible Fields"** gear, toggles **"Dish Flags"** (allergens, diets, special tags) and **"Nutrients"** (calories, protein, fat, carbs);
- in the **App Store** — the cards **"I mark allergens and dietary info on dishes"** and **"I indicate nutritional values for dishes"**.
The onboarding wizard pre-selects dish flags for the cafe, restaurant, bakery and canteen concepts, and nutrients for cafe, fast food and canteen. In every other case turn the fields on manually.
### Step 1. Flag the item
1. Open the menu item for editing — the **"Info"** tab.
2. In the **dish flags** block select everything present in the dish.
3. The card saves itself — the icons appear next to the item in the menu.
### What can be flagged on an item
The card's flag dictionary is **fixed**, and since September 2026 its "allergens" group holds **all 14 EU allergens** — plus the "Gluten Free" dietary claim:
| Flag | Icon | What it covers |
|------|------|----------------|
| Contains Gluten | ⚠️ | Wheat, rye, barley, oats |
| Crustaceans | 🦐 | Shrimp, crab, lobster |
| Contains Eggs | 🥚 | Eggs and products made from them |
| Fish | 🐟 | All kinds of fish |
| Peanuts | 🥜 | Peanuts, peanut butter |
| Contains Soy | 🌱 | Soy and soy products |
| Contains Dairy | 🥛 | Milk and dairy products |
| Contains Nuts | 🌰 | Almonds, hazelnuts, cashews, walnuts |
| Celery | 🥬 | Stalks, root, seeds |
| Mustard | 🌭 | Mustard, mustard oil |
| Sesame | 🌰 | Sesame seeds, tahini |
| Sulphur Dioxide | 🧪 | Sulphites (>10 mg/kg), wine |
| Lupin | 🌿 | Lupin flour, seeds |
| Molluscs | 🐚 | Mussels, oysters, squid |
| Gluten Free | 🌾 | A dietary claim, not an allergen |
There used to be seven flags: peanuts were not separated from nuts, molluscs from crustaceans, and fish, celery, mustard, sesame, sulphur dioxide and lupin had no flag at all. Items marked with the old set keep working exactly as before: "Contains Nuts" still means nuts, "Crustaceans" still means crustaceans. If a dish contains a non-standard allergen (coriander, say), state it **in the dish description** — the description is visible to the guest on the card and is translated into every menu language.
The icon library in the **Labels** section (`/labels`) holds **29** standard labels — all 14 EU allergens plus 15 dietary and special ones — and you can add your own there. But the library defines **icons and translations**, not the choice list on an item: only the flags from the table above can be selected on a dish card. See [Dish labels](/en/docs/labels).
> There is no separate bulk screen, but you can flag many dishes at once **by voice** in the "Voice assistant" section: "mark all soups as containing gluten", "set nuts on everything with chicken", "remove the gluten allergen from all drinks". The assistant asks for confirmation and applies the flags to every matching item. The **AI card check** speeds labelling up too: among other things it suggests dish flags (diets and allergens) from the same dictionary, and you accept them in one click.
---
## Display for guests
### In the digital menu
- Allergen icons are displayed next to each item
- On the dish card the **allergen name in the guest's language** is printed next to the icon — no need to guess from the picture
- A **dish-label filter** is available — the guest picks dietary labels (vegetarian, vegan, halal, gluten free…) and sees only matching items; the choice is remembered and survives a page reload
- An **"exclude allergen" filter** is available too — the guest ticks what they must avoid and those items disappear from the menu. Its list is built from the allergens actually present in your menu: the codes are derived from the flags set on the dish cards, so nothing has to be filled in separately. "Gluten Free" never enters that list — it is a dietary claim and lives in the dietary-label filter
### Display example
```
🍝 Pasta Carbonara ₽650
Spaghetti, bacon, parmesan, egg, cream
🌾 🥚 🥛
[Calories: 520 kcal | Protein: 22g | Fat: 28g | Carbs: 45g]
```
---
## Nutritional value (nutrients)
For each item, you can specify:
| Parameter | Unit |
|----------|---------|
| Calories | kcal |
| Protein | g |
| Fat | g |
| Carbohydrates | g |
Nutrients are set not only for the dish as a whole, but also **per variant** (portion size, dough type) and **per add-on** — the guest sees the figures for the option they picked. There are no "fiber", "sugar" or "salt" fields on the card.
### Country requirements
| Country | Requirement |
|--------|-----------|
| 🇪🇺 EU | 14 allergens required (Reg. 1169/2011) |
| 🇬🇧 UK | 14 allergens + "Natasha's Law" for pre-packed |
| 🇸🇦 Saudi Arabia | Allergens + calories required (SFDA) |
| 🇺🇸 USA | Top 9 allergens (FALCPA + FASTER Act) |
| 🇦🇺 Australia | 11 allergens (FSANZ) |
---
## Additional labels
In addition to allergens, you can label items as:
| Label | Icon | Description |
|-----------|--------|----------|
| Contains Gluten | ⚠️ | The only way to flag gluten on a dish |
| Vegetarian | 🥬 | No meat |
| Vegan | 🌱 | No animal products |
| Gluten-free | 🚫🌾 | No gluten |
| Halal | ☪️ | Meets halal requirements |
| Kosher | ✡️ | Meets kashrut requirements |
| Spicy | 🌶 | Spiciness level (1–3) |
| Chef's recommendation | ⭐ | Bestseller / recommendation |
---
## Tips
1. **Don't skip allergens** — it's not only caring for guests, but also a legal requirement
2. **Update when the recipe changes** — if the ingredients changed, update the labeling
3. **Train staff** — employees should know the ingredients and be able to inform guests
4. **Use the filter** — show guests that your establishment cares about safety
---
# Dish Labels
**Labels** are visual badges shown next to a dish in the digital menu: "spicy", "vegan", "new", "chef's recommendation", and so on. Open **Admin Panel → Labels** (`admin.cenaly.com/labels`).
> Labels are about the **visual signal** for the guest. If you need legally significant allergen and nutrient labeling (EU Regulation 1169/2011 and similar requirements), see the separate [Allergens & Nutrients](/en/docs/allergens) section.
---
## Standard label library
A ready-made set of labels in three categories ships out of the box:
| Category | Examples |
|---|---|
| **Allergen** | peanuts, celery, crustaceans, tree nuts, gluten, milk, lupin, molluscs, mustard, egg, fish, sesame, soybeans, sulphur dioxide |
| **Dietary** | organic, vegetarian, vegan, halal, gluten-free, sulfite-free |
| **Special** | sold out, chef's suggestion, home cooked, new, chef's specialty, "I love", local product, spicy, fresh frozen |
Standard labels are **always shared across all locations** and protected from editing or deletion — this guarantees important badges (like allergens) can never be accidentally lost.
---
## Custom labels
Beyond the standard set, you can create your own label:
1. Click "Add label".
2. Set a name (with translations into the languages you need, via a translatable field).
3. Give it an icon — three ways to choose from:
- **upload** your own file;
- **pick from the account's media library**;
- **generate with AI** — the model draws a pictogram in the menu's single "flat" style: **✨** for the first generation, **🔄** to redraw it if you don't like the result.
4. Choose a category — allergen, dietary, or special.
Custom labels are fully yours — they can be edited and deleted at any time, unlike standard ones.
> A custom label is assigned to a dish just like the built-in ones: open the **"Dish labels"** block on the item card — your own labels are grouped there under **"My labels"**. The guest sees the label in their own language and with your icon.
---
## Scoping a label to locations
If you have multiple locations, a custom label can be made **local** instead of shared: pick the locations in the scope selector. A label with no explicit scoping (or an empty location list) stays shared across the whole chain — this is the default, backward-compatible behavior for existing labels.
Location scoping is useful, for example, if a "chef's signature dish" label only makes sense for one venue in the chain, not all of them. That label's icon syncs only to the guest-facing site of the scoped locations.
---
## Related sections
- [Allergens & Nutrients](/en/docs/allergens) — legally significant allergen and nutrient labeling
- [QR Menu](/en/docs/qr-menu) — categories, dishes, photos, where labels are shown to guests
- [Multi-location](/en/docs/multi-location) — managing a chain of venues
---
## FAQ
### How do labels differ from allergens and nutrients?
Labels are visual badges on the menu for the guest (including for allergens) — their names, translations and icons. There is no separate "Allergens & Nutrients" screen in the panel: allergens and nutrients are fields on the same dish card, and the regulatory side is covered in the [Allergens and nutrients](/en/docs/allergens) article.
### Can I delete a standard label, like "spicy"?
No: the name, the category and the label itself are fixed — you can only create your own labels in addition to them. The one thing you can change on a standard label is its **icon**: upload your own (📷) or generate one with AI (✨) and the guest sees exactly that on the menu. Changed your mind — upload another one (there is no button that brings the factory icon back).
### How do I assign a label to a specific dish?
The dish editor in the [Menu](/en/docs/qr-menu) section has a **"Dish labels"** block — first turn it on with the **"Visible Fields"** gear in the card header, then tick the labels you need. The picker has three built-in sections (allergens, diets, special tags — 20 values) plus a **"My labels"** section with your own labels from this page. The 29 standard labels stay read-only — they cannot be renamed or deleted, but you can give them your own icon.
### Is a label's name only shown in one language?
No, a label's name can be translated into every language you use in your menu — the guest sees the label in their own language.
---
# Chain Management — Multi-Location and Franchises
## Overview
If you have multiple venues—a restaurant/café chain or a franchise—Cenaly lets you manage them from a single admin panel.
---
## Capabilities
### Centralized management
- **Unified menu** for the entire chain with the option for local changes
- **Different prices** by regions/locations
- **Unified customer database** with a shared loyalty program
- **Centralized analytics** — reports for the whole chain and for each venue
### Flexibility
- Each location can have **unique items** (local specialties)
- **Different currencies** for venues in different countries
- **Different languages** — each location selects its own languages
- **Different opening hours** — configured per location
---
## Chain structure
```
Company (your brand)
├── Location 1: Restaurant "Name" — Tbilisi
│ ├── Menu (inherits the base + its own items)
│ ├── Prices (GEL)
│ └── Staff
├── Location 2: Restaurant "Name" — Batumi
│ ├── Menu (inherits the base + its own items)
│ ├── Prices (GEL, seasonal)
│ └── Staff
└── Location 3: Restaurant "Name" — Istanbul
├── Menu (inherits the base + its own items)
├── Prices (TRY)
└── Staff
```
---
## Managing the chain menu
### Base menu
1. Create a **base menu** at the company level
2. All locations inherit it automatically
3. Changes to the base menu propagate to all locations
### Local changes
Each location can:
- **Hide** items (temporarily or permanently)
- **Change the price** (for its region)
- **Add** unique items (local specialties)
- **Edit the description** (e.g., different ingredients)
### Synchronization
- Changes in the base menu → automatically updated in all locations
- Local changes → are not affected when the base menu is updated
- Conflicts → local changes take priority
---
## Access management
### Roles
| Role | Access |
|------|--------|
| **Owner** | Full access to all locations and settings |
| **Chain administrator** | Menu management, analytics, staff across the entire chain |
| **Location manager** | Full access to their location |
| **Staff member** | Order taking, working with the menu (no settings) |
### Assigning staff
1. **Settings** → **Team** → **+ Add staff member**
2. Enter email, role, and location
3. The staff member will receive an invitation and access to their part of the system
---
## Chain analytics
### Chain dashboard
- Total chain revenue
- Revenue by location
- Location ranking by metrics
- Location-to-location comparison
### Reports
- **Revenue by location** — period comparison
- **Average check** — per location
- **Popular items** — what sells best in each location
- **Staff KPIs** — across the whole chain
---
## Franchise
### Franchise-specific features
- The franchisor creates the **base menu and standards**
- The franchisee gets **access to their location** with limited permissions
- The franchisor sees **analytics for the entire chain** and controls quality
- Access levels are configured individually
### Whitelabel
For large chains, the **whitelabel** feature is available:
- Your branding instead of Cenaly
- Custom domain (menu.yourband.com)
- Custom colors and logo
---
## 7. Staff management
### Creating staff accounts
1. **Settings** → **Staff** → **+ Add staff member**
2. Specify: name, email, role, locations
3. The staff member will receive an email invitation
### Role and permission breakdown
| Permission | Owner | Administrator | Manager | Staff member |
|-------|----------|---------------|----------|-----------|
| Account management | ✅ | ❌ | ❌ | ❌ |
| Create locations | ✅ | ✅ | ❌ | ❌ |
| Edit menu | ✅ | ✅ | ✅ | ❌ |
| Order management | ✅ | ✅ | ✅ | ✅ |
| View analytics | ✅ | ✅ | ✅ | ❌ |
| Financial reports | ✅ | ✅ | ❌ | ❌ |
| Staff management | ✅ | ✅ | ❌ | ❌ |
| Configure integrations | ✅ | ✅ | ❌ | ❌ |
| Stop list | ✅ | ✅ | ✅ | ✅ |
| Refunds | ✅ | ✅ | ✅ | ❌ |
### Staff KPIs
Track for each staff member:
- Number of orders served
- Average check
- Service speed (from order to close)
- Tips (amount and % of revenue)
- Guest rating
---
## 8. Custom domain and branding
### Connecting a domain
1. **Settings** → **Domain** → enter your domain (menu.yourrestaurant.com)
2. Add a CNAME record in DNS: `menu.yourrestaurant.com → cname.cenaly.com`
3. The SSL certificate is issued automatically (Let's Encrypt)
4. The domain will be active in 5–15 minutes
### Branding
- **Logo**: displayed in the menu header
- **Colors**: primary color, accent color, background
- **Favicon**: browser tab icon
- **Welcome text**: on the menu home page
- **QR code style**: colors, shape, logo
---
## 9. Offline mode and PWA
The digital menu works as a **Progressive Web App (PWA)**:
- A guest can **add the menu to the phone's home screen**
- The menu is **cached** — works even with poor internet
- With no connection at all, the last loaded version is shown
- Auto-update when the connection is restored
### For staff
- The admin panel caches critical data
- Orders are saved locally and synced when the connection is restored
- KDS continues to show active orders offline
---
# Print Menu — the PDF builder
## What is it?
**Print Menu** is a builder in the admin panel that turns your digital menu into a
print-ready document: with the style, languages, background and layout you choose. The result
is visible right away in a paginated preview, and the output is **a printout or a PDF file**
(plus a PNG of a single page if you need an image for social media).
The paper menu is always built from **current** data: change a price or remove an item and the
next printout already reflects it — nothing has to be laid out again.
### Features
- 🎨 **10 ready-made styles** — background, fonts and layout in one click
- 📋 **Menu or price list** — two layout modes
- 🌍 **33 languages** — in any order, on separate lines or with a separator
- 🖼 **Backgrounds** — presets, your own file or AI generation
- 📐 **8 paper formats** and both orientations
- 🔳 **QR block** — a link to the digital menu right on the sheet
- 📄 **PDF export**, printing, "Share" and a PNG of a page
---
## How to open it
Three equivalent entry points — the builder is the same:
1. **Marketing → 🖼️ Print** (`/print`) — the print hub: printing the menu for the location you
need and materials for individual dishes.
2. **Menu** — the print button above the item list. If a custom menu filter is on
(a bar list, for example) or a **collection** is selected, that exact menu is printed.
3. **Locations** — the 🖨 button next to a location or inside its settings.
The builder opens **full screen** (the address looks like
`/print-menu?location=&menu=
`) → "Update File".
4. Open the site and press "Check installation".
⚠️ Edits to the **parent** theme's files are lost when the theme is updated — the WordPress documentation warns about this too. A code-insertion plugin or a child theme survives updates. If a caching plugin is installed (W3 Total Cache, WP Rocket and the like), purge the cache, otherwise the check will see an old copy of the page.
💡 You don't need a separate widget plugin: one tag brings all widgets in. The **Cenaly Consent** plugin is a different story — it installs the cookie-banner tag only (see [Cookies and consent](/en/docs/cookie-consent)).
### Tilda
1. In the project list open **"Site Settings"** of the right site (project settings, not page settings).
2. Section **"More"** (in some accounts it is labelled "Code Injection") → the field **"HTML code for the head section"**.
3. Paste the line and save.
4. **Republish all pages** of the project — otherwise the code stays in the editor only.
5. Open the live site and press "Check installation".
💡 If you need the tag on a single page only, the same field exists in "Page Settings" → "Additional"; then republish that page.
### Wix
1. The site must be **published** and the domain **connected**: that is Wix's own condition for custom code.
2. **Settings** → **Development & integrations** → **Custom Code**.
3. **"+ Add Custom Code"** → paste the line, give the snippet a clear name.
4. Apply to **All pages**, load once, placement — **Head**. Save.
5. Press **Publish**, open the live site and press "Check installation".
⚠️ Wix code snippets are tied to the domain: assign another domain to the site and the snippets are deleted — the tag has to be pasted again.
### Shopify
1. Shopify admin → **Online Store → Themes**.
2. On the theme "…" → **Duplicate**: the copy is your way back.
3. There as well: "…" → **Edit code**.
4. On the left, the **Layout** folder → the **`theme.liquid`** file → paste the line before the closing `` (or before ``) → **Save**.
5. Open the storefront and press "Check installation".
⚠️ The edit belongs to the **theme**, not to the shop: switch or re-create the theme and you must paste the tag into the new one, otherwise the widgets disappear with the old theme. Shopify checkout pages are closed to arbitrary theme scripts — the widgets are meant for the storefront.
### Webflow
1. **Site settings** of the project → the **Custom code** tab.
2. The **Head code** field → paste the line and save. Only the script itself goes there: no `html`, `head` or `body` wrapper tags.
3. Press **Publish** — custom code does not run in the editor or in preview.
4. Open the published site and press "Check installation".
⚠️ Custom code fields in Webflow site settings are available on a paid Site plan. If you need a widget on one page only, a page has its own code fields in its settings.
### Squarespace
1. Site panel → **Website → Website Tools → Code Injection**.
2. The **Header** field (it goes into the `
` of every page) → paste the line → **Save**.
3. Open the live site and press "Check installation".
⚠️ The Code Injection panel is available on the Core, Plus and Advanced plans and on some legacy Squarespace plans. A page Code Block is not a replacement: it puts the code inside one page, while widgets are needed across the whole site.
The steps are checked against the platforms' official help. If a platform renames a menu item, trust its help centre rather than us — and tell us, we'll fix it.
---
## Twelve widgets
Every widget is a separate card with a toggle and a settings gear. The data the widgets collect ends up in the usual sections of the admin panel — there is no need to set up a separate "inbox for the site".
| Widget | What the visitor sees | Where the data goes | Documentation |
|---|---|---|---|
| 🍪 **Cookies and consent** | A consent banner with categories and a settings screen | Consent log, cookie declaration | [Cookies and consent](/en/docs/cookie-consent) |
| 💬 **Chat: AI assistant and operators** | A chat bubble on the page | The "Guests" section of "Team chat" — together with WhatsApp, Telegram, email, Messenger/Instagram | [Chat with guests](/en/docs/chat) |
| 💡 **Popups and forms** | Promos, exit offers, email capture, timers | Campaigns and their statistics | [Popups on your own site](/en/docs/engage) |
| 📅 **Table reservation** | The "Book a table" button | The "Tables" section — reservations and the floor plan | [Table reservations](/en/docs/reservations) |
| 🗓️ **Online booking** | The "Book now" button: service → specialist → time | The "Appointments" section | [Appointment book](/en/docs/appointments) |
| 🛒 **Online order** | The "Order" button, a cart and checkout on top of your own site | The "Orders" section | [Online ordering on your own site](/en/docs/order-widget) |
| 📚 **Support center** | A "?" button with published help articles | Articles go to "Articles and pages" (the "Help" group), help analytics — to the "Knowledge base" | [Support center](/en/docs/help-center) |
| ⚖️ **Legal documents** | Links to, or the text of, your privacy policy, terms and the like | Pages on our hosting; re-publishing updates the site by itself; configured right in the widget panel, without a wizard | [Legal documents](/en/docs/legal-docs) |
| 📞 **Call from the site** | The "Call" button — a conversation straight from the browser, with no number to dial | The "Calls" section: recording and analysis just like an ordinary call | [Call from the site](/en/docs/webcall) |
| ☎️ **Callback** | A "Call me back" form with a choice of a convenient time | The callback queue: the system dials the manager and the guest by itself; requests go to "Requests" and to the "Callbacks" tab of the "Customers" section | [Callback](/en/docs/callback) |
| ➕ **Multibutton** | A single floating button holding every contact channel at once | Wherever the chosen channel leads; in the admin panel — click statistics by channel | [Multibutton](/en/docs/multibutton) |
| 📈 **Live storefront** | Badges with the number of orders, reservations and appointments over a period, and the average rating | Shows anonymized aggregates of your own events and reviews | [Live storefront](/en/docs/proof) |
The load order is not accidental: **the cookie banner loads first among our widgets**. The single asynchronous loader reads the settings first and cannot get ahead of analytics that the site has already started. If you need blocking before the trackers start, install the separate `consent/v1.js` tag first in `
`, without `async` and `defer`, as described in the [article on consent](/en/docs/cookie-consent). The **multibutton** comes after the aggregated widgets, and the **"Live storefront"** comes last: its badges take into account the buttons in the same corner.
The cookie banner on `cenaly.ru` has limitations: the consent log and CSV are not collected yet, the cookie scanner is unavailable, and the declaration is maintained manually. When the config is unavailable, the current version lifts the tracker block; after installation, check the banner and the page's actual requests. The full terms are in [Cookies and consent](/en/docs/cookie-consent).
**The support center** shows published articles, which you need to prepare in the "Articles and pages" section or publish from the knowledge base. The button does not create articles by itself. In help analytics, page events inside this panel belong to the "site" source; the "widget" source denotes the help tab in the chat.
**Legal documents** must first be published on our hosting. The widget shows the published versions as links, in a window, or as text on the page; re-publishing them in the admin panel updates them. This is not automatic tracking of changes in legislation.
**The multibutton** is not just a list of links: it has an inviting bubble ("Got a question?"), display conditions (on which pages, after how many seconds, on phones only or everywhere), a prepared first message for messengers, and its own click statistics by channel.
**The "Live storefront"** shows social proof based on your own data — orders, reservations and appointments — and does it honestly: there are no names or phone numbers in the badge, the events are aggregated, and stale ones stop being shown according to the venue's calendar (a venue that was closed yesterday does not "sell" yesterday's orders).
The **"Popups and forms"** card has a **"✨ Create from template"** button next to the toggle and the gear: it opens the same widget settings window, but straight to a gallery of ready-made scenarios — and saves nothing until you press "Done".
The **"Legal documents"** panel no longer sends you into a five-step wizard: the country, the set of documents, the questions about your business, your legal details and the language all sit on a single screen, autofill and preview are collapsed, and at the bottom there is a "Documents to publish: N" counter. An option that contradicts the answers you have already given is locked, with an explanation of exactly why.
Open hub windows live **in the page address**: a widget's gear writes `?widget=`, and the installation code window writes `?panel=install`. That means a link to a particular widget's settings can be sent to a colleague, and it survives F5 and the "back" button.
A toggle alone is not enough for every widget — some also need content:
- **Online booking** appears on the site once the menu has at least one item of the "Service" type and booking is enabled (the same switch as for table reservations);
- **The support center** turns on with the toggle right away, but without published articles it opens an empty help page — the widget settings show how many articles are published.
**Reservation limitations.** Right now the table reservation widget converts the chosen date and time in the guest's browser time zone. For a visitor from a different zone the time in the log may differ from the venue's expected time — check it when confirming. A message that the request has been sent also does not always mean that the server has already confirmed the reservation. If online booking reports a delay in confirmation, check the appointment book first: a repeat attempt may create a duplicate.
**Verifying that it is off.** After turning a widget off, check the site and reopen the settings once the data has refreshed. In the current version the toggle may go dark locally while the previous "on" state is kept on the server. If you need to stop a single widget urgently, remove its separate tag or contact support; removing the shared tag stops the whole set it was connecting at once.
Above the buttons of every card there are **mini-statistics for 7 days**: impressions, opens and a third number that depends on the widget (requests, orders, reservations, appointments, conversations, dialogues, clicks). "—" means there is no data at all yet, "0" means telemetry is there but there were no events; "More →" leads to the "Site widgets" dashboard.
The **online order** settings window has one more button for an external site — **"🔔 Notify when back in stock"**: you pick a product and a variant from your own catalog, mark up the button on the page of the sold-out product, and the guest leaves an email, confirms it via a link and receives a single message when the product is back in stock. We do not read someone else's catalog and do not take stock levels from someone else's page — the product is linked manually. More on this in the article [Online ordering on your own site](/en/docs/order-widget).
---
## Forms that already exist on your site
The **"📝 Forms that already exist on your site"** block under the grid of cards is for the case of "the request form is already on the site, and nobody is going to change it". We neither replace it nor delay it: the form is submitted to your backend just as before, and a copy of the request lands in the admin panel.
**A rule** is a CSS selector for the form, the addresses of the "name / phone / email" fields (the value can be either simply a field name, for example `phone`, or a selector, `input[name="tel"]`), optional page masks and a toggle. There can be up to 10 rules per location, one rule per form. A rule without a form selector, or without a phone or an email, cannot be enabled — there is nothing for it to collect. Every row has a **"Check"** button: the server reads the page and reports whether the form was found, which of the rule's fields it contains and what field names it has at all.
**What exactly is sent.** Exactly three fields — name, phone, email — plus the page address without parameters and anchor. Input before "Submit" is pressed is not read, we add no validation or delays of our own, and a form that has failed the browser's own validation creates no request. The server suppresses a repeat of the same form with the same contact within 10 minutes; with simultaneous submissions or a failure to write the marker a duplicate is possible. The forms of our own widgets are not listened to.
Interception sends a copy of the request without waiting for the server's reply. If the network drops or the browser blocks the request, the copy may not arrive: there is currently no delivery queue for when the connection is restored. A repeat with the same contact on the same page is likewise suppressed until the page is reloaded. A "sent" mark means an interception attempt, while the actual arrival should be checked in the inbox.
**Where to look.** The **"Requests"** section and the "Requests" tab of the contact center — as the group "Forms on the site: ". Every such request carries an honest note: we see the "Submit" press, not the fate of the data on your backend.
⚠️ The "Check" button parses HTML without a browser: it will not see a form that JavaScript draws — whereas interception in the guest's browser will. The panel says so directly.
---
## Action links and QR codes
The **“🔗 Action links and QR”** block under the card grid builds a link that opens **one specific action** on your site: `https://your-site/#cenaly=book` — the reservation form, `#cenaly=appointment:` — booking straight into a service, `#cenaly=order:` — the product card, plus chat, callback, the help centre, a document (`legal:`) and the multi-button fan. Such a link is usually printed as a QR code: on a table, on a receipt, on packaging, in offline ads.
How to build one: choose the action, optionally a specific object (a service or an item from the published menu, a published document) and “where you place it” — this sets the UTM tags for **your** analytics (`utm_source=qr&utm_medium=&utm_campaign=`; we do not read them). The output is a link with a “Copy” button and a QR code downloadable as PNG and SVG. The link's base is your site address; if none is set, our storefront. Every widget card has a short **“🔗 Link”** button with the action preselected.
Why a `#` hash rather than a `?` parameter: third-party CMSs, cache plugins and CDNs strip unknown parameters and change the canonical address, while a hash is never sent to the server by the browser — it is guaranteed to reach our code. It is executed by the **unified tag**: it reads the hash once on load, removes it from the address and opens the widget once it has come up. Standalone widget tags do not read the hash.
The block warns **before you print a batch**: the action's widget is off, or no install code was found on the site at the last check. The link does not switch on what is off and does not substitute a missing document — in that case it simply does nothing: on a third-party site that beats an error. The same link also works on our storefront of the business, including the help centre, documents and the multi-button — the sticker is printed once, and the site may change.
---
## The online booking widget in detail
Settings live in the **"Online Booking" card → gear icon**: button color, its text, the screen corner, and the language. Right below the settings there's a ready-made code line just for this widget, in case you're installing only this one.
**Language.** The default is **auto**: the widget speaks the language of the page it sits on and knows **45 languages**. Only the dictionary that's actually needed gets loaded, so this doesn't affect your site's speed. You can also pin one language in the list — for example, if the site is bilingual but you want bookings taken in just one language.
**Links to a specific service or specialist.** You can add attributes to the widget tag so the guest lands right on the step you need:
| Attribute | What it does |
|---|---|
| `data-service="service id"` | the service is pre-selected — a "Book" button next to the service's description on your site. The id is shown next to the item in the "Menu" section |
| `data-master="specialist id"` | the specialist is pre-selected — for a page about a specific specialist; the specialist's id is the same as the employee's id |
| `data-open="true"` | the booking panel opens on its own, with no click on the button — for a dedicated "Book now" page |
A stale id (the service was renamed, the specialist left) doesn't break the widget: it quietly shows the usual choice starting from the first step.
**Fewer steps to a booking:**
- a single service or a single suitable specialist — the extra screen isn't shown;
- the **"⚡ Nearest: today 17:30"** chip books in one tap, and the calendar opens on its own on the first day with free time;
- the name, phone, and email are remembered on the guest's device: on a repeat booking the fields are already filled in, and the "Not you?" link clears them;
- on a phone the panel opens full screen, and the booking button doesn't hide under the keyboard;
- the widget can be used from the keyboard and reads correctly with a screen reader.
**Email.** The email field is optional; if the guest leaves an address, they get a letter with the visit details and a "Manage booking" link that lets them move or cancel the visit themselves. Details — in [Appointment book](/en/docs/appointments).
**What the widget brought in.** In the appointment book, the **"🌐 Website widget"** button shows the funnel for 7, 30, or 90 days: how many times the button was seen, how many guests opened the panel, reached the contact step, and booked, and how many bookings were lost to a slot taken meanwhile. Bookings that came from the site carry a "From website" badge.
---
## Installation check
The **"Check installation"** button opens your site and reads the page's source HTML. Possible answers:
- **"Widget code found on the site"** — the single tag is in place;
- **"Only individual widget tags found"** — old individual snippets are working, there's no single tag;
- **"The code on the site belongs to a different location"** — the tag carries someone else's `data-domain` (a common mistake with several venues);
- **"No widget code on this page"** — no tag is visible.
⚠️ The check reads the **source** HTML of one page. If the tag is inserted in the browser by Google Tag Manager or another script, the check won't see it — that's not an error. What else stays outside the method is collected below in [“What the installation check does not see”](#what-the-installation-check-does-not-see).
**Once a week the same check re-runs on its own** — for locations that have a site address, at least one widget enabled and whose previous check found the tag. A tag dies silently — the site moved to a new theme, a contractor shipped a layout without the snippet, a cache plugin threw out the “extra” script — and before, the only way to notice was that the leads had stopped. Now the transition “tag was there → tag is gone” arrives as a card in the **team chat** (no more than once a week per location) and as a red third step in the “Your site” block. A site that did not open (timeout, server error) is not counted as broken — we will check again next week; a tag inserted through Google Tag Manager is never seen by the check, so there will be no false alarm for it either.
The same analysis is available **publicly, without signing in** — the [Site check](/en/tools/site-check) page: paste an address and it reads the page HTML and shows analytics and ad pixels by name, whether a consent banner is installed (ours, another vendor’s, or none), and whether our tag with its enabled widgets is visible. Handy for checking a site **before** connecting it, and for handing a link to a developer or a client.
Below the widget cards, the section has two more blocks: **"Storefront on your own code (Headless)"** — data, an API, and webhooks for when your own developer builds the site and doesn't need our widgets — and **"Advanced: a separate tag per widget"** with ready-made individual tags. So an individual tag isn't only something you "carry over from the past" — you can also take one right here.
### What the installation check does not see
The method is simple and honest: **one request for the source HTML of one address**, with no browser. We read what the server returned and look for `
```
The single tag reads the nonce of **its own** tag and passes it to every widget bundle it inserts — so they pass the `script-src` check. Requests, styles and embedded pages also need the permissions from the table below. The separate "Notify when back in stock" form has a limitation described below.
⚠️ A permanent value, the same in every response, is not a nonce: anyone who manages to inject code into the page will copy it into their own script. Generate it for every response, on the server.
### Option 2 — `'strict-dynamic'`
```
Content-Security-Policy: script-src 'nonce-r4nd0m...' 'strict-dynamic'
```
With `'strict-dynamic'`, the trust placed in our tag extends to the scripts it inserts, including the lazy parts of "Smart popups". This is an example of a directive for scripts: if `default-src`, `connect-src`, `style-src` or `frame-src` are restricted, add the corresponding permissions from the table below.
### Option 3 — a list of hosts
If a nonce is not available to you (this happens on website builders), allow our hosts explicitly:
```
Content-Security-Policy: script-src https://cdn.;
connect-src https://cdn. https://api. wss://ws. https://o.;
img-src https://cdn. https://i.;
frame-src https://cdn. https://your-location.;
style-src 'unsafe-inline'
```
A ready-made snippet with the hosts of your brand and your location already substituted is available in the admin panel: **Marketing → My site**, the **"A site with Content-Security-Policy?"** block under the installation code — the "Copy" button is there as well, along with a note on which widget needs each host.
What is needed and by whom:
| Directive | Who needs it |
|---|---|
| `script-src` | All widgets: bundles from our CDN |
| `connect-src` | All of them: requests, reservations, appointments, orders, telemetry; for the chat — the websocket and the signal bucket |
| `img-src` | The order: photos of products and dishes |
| `frame-src` | The order, the support center and legal documents: they open your storefront in an `