Hall panel
The Hall panel is the host's and manager's workstation inside the till. It opens with the 🗺 button in POS and takes over the whole screen.
Two conditions make that button visible. First, the role: it needs the hall management permission, so a waiter who switched at the till with a PIN will not see it. Second, the Hall panel chip toggle in POS appearance: restaurants and hotels have it on by default, while non-restaurant business types (retail, beauty, pickup point, e-commerce, services, corporate site, blog, widgets) have the panel off by default — switch the toggle on if you need it.
Eight tabs answer eight different questions, but they share one live data set: orders, calls and reservations arrive over a websocket, nothing has to be refreshed by hand.
The panel remembers that it is open. While it is on screen, the POS address carries ?panel=hall, so a page reload (F5) keeps you in the panel instead of taking you back to the till; after a reload the panel opens on its default tab. The browser's Back button closes the panel and returns you to the till, and from the till it opens the panel again — for example, you seat a guest, take the order and get back to the floor with one click. The ✕ still closes the panel as before. You can bookmark the till with the panel open: the panel opens only if the staff member at the till can see the Hall button (the same two conditions as above).
What you need to get started#
- Access to the POS. The hall panel is not a separate sidebar item: it opens with the "Hall" (🗺) button inside the POS.
- A drawn floor plan — rooms and tables are created in the Floor plan section; the panel only displays them.
- QR codes bound to tables — without the binding the "Calls" view stays empty and orders are not linked to tables.
- Booking switched on — for the "Reservations" view and deposit policies (Table reservations).
- Accumulated orders by table — the revenue and average-check heat map is built from them, and on empty history it is empty.
"Now"#
The first tab is a single screen showing the state of the venue this minute, as tiles:
| Tile | What it shows |
|---|---|
| Seats taken | taken / total, and how many tables that is |
| Bookings within the hour | who has to be seated in the next hour |
| Ready, not served | orders waiting for a waiter |
| Calls | active waiter calls |
| 🧹 Needs cleaning | tables waiting to be cleaned (see "Cleaning and closed tables" below) |
| ⛔ Closed | tables nobody is seated at right now |
| Rooms to clean | (hotels) |
| Guest requests | (hotels) |
| Overdue tasks | and how many of them have no assignee |
| Revenue today | the day's total |
Tapping a tile highlights the matching objects right on the floor plan — that is the difference between a dashboard and a list of numbers.
Empty tiles are hidden: a small café with no hotel and no tasks sees a living screen, not a table of zeros. When nothing needs attention, the tab says so.
"Waiting" — the waitlist#
The queue of guests for whom there was no free table.
A waitlist entry holds name, phone, party size, the wait time you quoted, and a comment. The phone is typed in the same country format as in a reservation, and the "Call" button in the queue row shows the number the same way. The party size defaults to two, and Quoted wait is prefilled with the wait estimate (the hint “≈25 min” under the fields); type your own number over it, or bring the estimate back with a link such as “estimate ≈25 min — use it”. Without a floor plan there is no estimate and the old default of 15 minutes is used. Every new entry gets a ticket number for the day (#1, #2…), shown in the row.
How the estimate works. It takes the tables on the plan that fit the party; parties ahead in the queue that would also fit those tables go first. A free table means “table free now”; an occupied one frees up after the usual time at a table minus how long the guests have already been sitting (the table timer from open checks). The usual time is the median of today’s closed checks at tables once there are at least three; until then it is the value from the waitlist settings (45 minutes by default). The estimate is rounded up to 5 minutes. It is a forecast, not a promise: tell the guest what you entered in Quoted wait. Queued rows show the estimate next to the time waited; it is recalculated every minute.
Editing an entry. “✎ Edit” opens the same fields inside the row — name, phone, guests, quoted wait, note. Saving does not move the guest in the queue: a party changed from 2 to 4 keeps its place; only the table match and the estimate change.
Ticket. “🧾 Ticket” prints a slip for the guest: number, name, party size, wait (the quoted one, or the estimate if nothing was quoted) and the time they joined. With a receipt printer connected through the bridge it prints there; otherwise the browser print window opens.
Waitlist settings for the location. “⚙ Settings” in the tab header: the no-show window after an invite (1–120 min, 10 by default); “Mark ‘no-show’ automatically when the window runs out”; “Not invited for longer than, min — mark ‘left’” (0 — off); “Show reservations starting within, min” (0 — hide, 60 by default); “Usual time at a table, min” — the basis of the wait estimate. Automatic marks are off by default. When on, they run every minute while the Hall panel is open and right when it opens; the closing time is set to when the window ran out, not when the panel noticed. Such entries are marked “auto” in history, and guests taken off the queue show as “Left”. Use “Back to queue” in history to return a guest to their original place. The POS “⏳ Waitlist” counter no longer counts guests who left. The settings belong to the location and apply on every device.
Reservations next to the queue. Above the queue the tab lists reservations starting within the window set in the waitlist settings (60 minutes by default), and ones that started up to 15 minutes ago whose guests have not arrived: time, name, party size, table — so the host does not seat the queue at a table that is about to be taken.
Statuses: queued → invited → seated; terminal ones are no-show and cancelled (left on their own). Once invited, a no-show timer starts ticking.
How to invite. There are exactly two channels, and both are real:
- Phone call — a
tel:link right in the row, nothing to configure; - Telegram — after Invite, the panel searches for an existing guest conversation by phone number. Send on Telegram appears only when a Telegram thread is found and your account has access to the location’s guest chat. Staff also need permission to search contacts. If the guest has never messaged the bot, it cannot start the conversation.
SMS and WhatsApp are not supported in the waitlist yet.
Seating. When a table frees up, the panel suggests a matching party by itself: among those still queued who fit the table, it picks the one that leaves the fewest empty seats, and on a tie the one who has waited longest. Seating creates an ordinary reservation and hands the table to the till — the same path as seating a reservation from the scheme.
Which table is suggested. On Waiting, select Seat for a party. The panel highlights the smallest free table with enough known seats. If none fits, it may suggest a table with no capacity entered: check that it can seat the party yourself. This suggestion does not reserve the table or choose it for you.
The suggestion also skips a free table that a reservation will take before the party could finish: guests usually stay as long as the wait estimate assumes (today’s median check, or Usual time at a table, min from the wait list settings). Such a table carries a violet “booked 19:30” mark, and a line under the list explains why it was skipped — “Table 5 is not suggested: reserved at 19:30 (in 40 min), and guests usually stay ≈90 min.” If every fitting table is reserved soon, nothing is highlighted. You can still seat a party there by hand if they will leave before the reservation. Confirmed reservations and requests still awaiting confirmation both count; a reservation that has started while the guest has not arrived still holds the table.
The number of parties waiting is shown on the tab itself.
"Scheme", "Reservations", "Calls"#
Scheme — a live floor plan with table statuses: free, occupied, reserved, with separate waiter-call and ready-order markers. The waiter assigned to a table is shown right on the plan — a circle in their colour with their initials at the table's top-right corner; hover over it (tap it on a tablet) and a tooltip shows their name. Waiters are shown the same way on the "Now" tab's plan. Tapping an occupied or reserved table opens a card: open the order, seat a reservation, assign a waiter to the table (or change/clear the assignment). When a table has several reservations for today, the card lists them all by time — the nearest one first, and that is the one the “Seat” button takes; on the plan itself the table badge shows the nearest reservation plus “+N” for the rest of the day. For the plan, “today” runs to the end of the day, and from 06:00 it also covers the night until 06:00 the next morning: a 01:00 or 04:00 reservation made in the evening shows at its table right away — and at the new table after the guest is moved — not only after midnight. Reservations for later days are not drawn on the plan; they are on the “Reservations” tab. Tapping a free table does not open the card — it simply hands the table to the till so you can ring up the order right away. You can still change or clear the waiter of a free table: tap the waiter's circle on the table and the same card opens with the list of waiters already expanded (next to “Start order”); the circle works the same way on an occupied table. At a hotel a room on the plan is not a table: its card shows "🛏️ Check in" instead of "Seat" — it leads to the room check-in window on the "Floor plan" page (guest folio, room status, guest registration; see Reservations) — and there is no waiter row, since a room is not served by a waiter. 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, like a table.
Reservations — the same reservation list as on the floor plan page: create, edit, confirm, assign a table, change status. Each row shows the window the table is held for the guest — for example "Today 11:00–13:00". The "✏️ Edit" button opens a form right in place of the row: you can move the date and time, make the reservation longer or shorter, and change the party size, table, name, phone and comment. If the table is already taken at the new time, the changes cannot be saved; if the table was taken from another screen at the same moment and the server refuses, the row goes back to its previous values and the panel says the changes were not saved. A guest who left an e-mail gets a message about the new time. Availability is shown inside the form: for the chosen window a taken table is marked "· Occupied" and cannot be picked, an overlap is refused with "Overlaps another reservation on this table", and when every table is taken the form says "No free tables" (a reservation with no table can still be created — the table is assigned by hand). A time that has already passed is not accepted. The guest phone is written the way a number is written in the location's country — "+7 (912) 575-19-38": the grouping appears as you type, and an empty field shows an example number for the country. The number is shown the same way in the reservation row and in the table card on the floor plan. Not a single digit is changed, and free-form text such as "ext. 101" or two numbers separated by a comma stays as typed. Unconfirmed reservations show as a number on the tab — exactly the requests in the list. A request whose time has passed without being confirmed leaves the list (it is visible under "Show past") and is no longer counted. Moving a reservation to another time does not create a new one: the same record changes. The 🗺 button in POS carries the same number plus active waiter calls. At a hotel, rooms and beds are not offered in the reservation form or when moving a reservation — a room is booked by nights on the calendar (Hotel); a reservation that already sits on a room shows "🛏️ Check in" instead of "Seat": it opens the standard check-in window on the "Floor plan" page with the guest from the reservation, rather than just changing the status.
Automatic no-show release. The "⏱ Auto no-show" button in the tab header opens the setting right in place: a checkbox "Release the table if the guest does not turn up" and how long to wait after the reservation starts — from 5 to 240 minutes, 15 by default. It is off by default: running late is not the same as not coming, and releasing a real guest's table costs more than an empty table does. Once it is on, a confirmed reservation counts down in its row ("⏱ auto no-show in N min"), and when the time is up the reservation goes to "no-show", the table is free again and the panel shows a toast with the table name. Reservations released by the machine are visible under "Show past" marked "🤖 released automatically". This also works when the POS is closed — the server catches up on overdue reservations. What the machine will not do: it never touches reservations older than a day, never touches guests already seated or requests not yet accepted, and never releases a reservation with a paid deposit — a member of staff closes those with "No-show", because the status decides what happens to the guest's money. The same pair of settings lives in the "Guest journey" block of the appointments journal: the rule belongs to the venue, not to one screen. More in Table reservations.
Cleaning and closed tables#
Besides the computed statuses (free / occupied / reserved), a table can have a state that a person sets:
- 🧹 Needs cleaning — the guests have left and the table has to be cleaned. On the plan the table is blue with a 🧹 badge.
- ⛔ Closed — nobody is seated at the table right now: it is broken, moved for a banquet, or the area is closed. The table is grey with a ⛔ badge.
Setting a status. Tap a table on the "Scheme" tab — the card has a status row with "🧹 Needs cleaning" and "⛔ Close table" buttons. A table with a status no longer seats on tap; it opens the card instead, so nobody is seated at a dirty or closed table by mistake.
Clearing it. A table that needs cleaning has "✓ Cleaned — free" in its card, a closed table has "✓ Reopen table". You can still start an order at a closed table, but the POS asks first.
Cleaning after payment, automatically. A manager or the owner turns on the "“Needs cleaning” after payment" checkbox under the "Scheme" legend (off by default). Then, as soon as the last bill on a table is paid, the table turns "Needs cleaning" on its own — on every POS and on the hall monitor, together with the order closing — and stays that way until someone taps "Cleaned — free". A note in the card says the status was set automatically. If nobody marks the table, the automatic "Needs cleaning" goes out by itself 12 hours after the payment, so yesterday's tables do not light up in the morning.
Where else you see it: the "🧹 Needs cleaning" and "⛔ Closed" tiles on the "Now" tab (tapping one highlights the tables), badges and a legend on the hall monitor. A closed table is not offered to guests from the waitlist. Marks made on another POS reach your screen within 30 seconds.
In the apps. Cenaly POS for Android, Windows and Ubuntu and the waiter app on Android show the same badges and legend on the hall panel's scheme and read the same marks as the web POS. A table that needs cleaning or is closed opens the card with the status row and the same buttons. To mark a free table, open its card: long-press on Android, right-click on Windows and Ubuntu. The apps also ask before opening an order at a closed table. A regular waiter sees the statuses, but a manager or cashier changes them. The "“Needs cleaning” after payment" checkbox exists only in the web POS; the apps follow it. The iOS waiter app and Cenaly Team for Windows do not show the statuses yet.
Calls — waiter calls sent by guests from the QR menu (see Orders). A row with the table number and reason, an "Acknowledged" button, and a global sound toggle. The same bell is mirrored in the Orders section.
"Sections" — floor sections and shift layouts#
The "Sections" (🧩) tab is for splitting the floor between waiters by area rather than table by table: "Terrace", "Window", "Bar". It does three things.
Floor sections. A section is a set of tables with its own colour. Tap "+ Section", name it and pick a colour, then tap tables on the plan below the list — a table is added to the selected section or removed from it. A table belongs to one section only: tapping a Terrace table while "Hall" is selected moves it to "Hall". The section colour also shows on "Scheme" as a strip under the table.
Shift layouts. A layout says which waiter takes which section: for example, "Weekday" — the whole terrace is Anna's, "Evening" — terrace for Boris, hall for Vera. Tap "+ Layout", name it and choose a waiter for each section (or "No waiter"). Sections and layouts are saved with one button, "Save sections and layouts". Under each layout you see how many tables would change waiter if you applied it. "Apply" assigns the layout's waiter to every table of each section at once — the same assignments you set one by one on "Scheme": waiter badges on the plan, orders from table QR codes and the waiter app switch immediately. A section without a waiter in the layout is left unassigned; tables outside sections are not touched. The top of the tab shows which layout is applied and since when.
Break. In "Waiters on shift", tap "Break" next to an employee, optionally choosing a cover waiter. The break takes the waiter's tables at this location away: new QR orders are not bound to them, guest calls go to the cover waiter — or to the whole shift if there is no cover — and the waitlist does not suggest their tables. Even for an order bound to the waiter before the break, the call notification goes to the shift, not to them. "Back" returns the tables unless someone else was given them during the break. If a layout is applied during the break, the absent waiter's tables go to the cover and return together with the rest.
Who served which tables today. At the bottom there is a table by waiter: which tables and sections they served today, how many checks and for how much. The waiter comes from the order itself — table assignment, POS or the waiter app; cancelled orders are excluded.
The waitlist seating suggestion takes waiters into account too: among fitting tables it first offers a table whose waiter is present, and on a tie the waiter with fewer open tables right now; the table button shows the waiter's name.
Time at table: when guests need attention#
The optional “⏱ Time at table” feature is currently in beta in the web POS. It shows how long the table’s bill has been open and how long it has been since the last order or dish served.
- In POS, open the appearance gear → POS appearance → Bill features and enable “⏱ Time at table”. It is off by default.
- Under “Needs attention” after, min, choose 10, 15, 20, 30, 45 or 60 minutes; the default is 20.
- Return to Hall → Scheme or Now. Occupied tables with open bills show a timer badge. When the interval since the last order or served dish reaches the threshold, the badge turns red: check whether the guests need service.
The timer also appears in the ticket header and Open tabs. With several open bills at a table, seating time starts from the earliest bill; the attention interval starts from the most recent order or served dish across those bills. A conversation with a waiter does not reset it. For older orders without item timestamps, the timer uses the bill’s opening time.
Guest numbers on order lines#
To assign dishes to individual guests, enable Items by guest (bill split) under POS appearance → Bill features. Guest numbers on kitchen tickets and KDS, and splitting payment By guests, are described in POS and Kitchen printing.
"Day" and "Tasks"#
Day — who is on shift right now: today's planned-vs-actual roster grouped into "on shift", "on break", "shift left open", "expected", "finished" and "off schedule". Clock-in and clock-out happen from the shared till terminal: an owner or manager can mark anyone without a PIN, everyone else enters their own.
An employee can have only one open shift, so a forgotten clock-out (a shift open for more than 20 hours) goes into the "Shift left open" group: the row names the day of that shift and carries the "Clock out" button that closes it. While it hangs, the server refuses that employee's clock-in — and the tab says so in words, naming the date, instead of a generic error. Even a shift from the previous month, absent from the tab's list, can be closed: the refusal itself supplies the button. In the hotel vertical the tab adds a guest-requests block.
Tasks — a compact version of the shift tasks board: quick add, "open / doing / done" groups, tick to complete. The full kanban with tags and due dates lives on its own page. The number of open tasks is shown on the tab.
"Analytics" — the hall heat map#
Which square metres bring in money. The floor plan is coloured by a value — revenue or average check per table — with a table of numbers and a legend underneath.
Two honest limits:
- it covers today only — the tab works from the live 24-hour order cache and has no backend of its own; periods (week, month, revenue per seat) are not supported yet;
- a table with no QR code bound to it means "no data", not "zero revenue": orders are linked to a table through its code, and about a table without a code nothing can be claimed.
The host’s shift at the entrance#
Open the “Hall panel” for the correct location. Before seating guests, check free tables, reservations and assigned waiters so each party can be handed over to a specific employee.
Assign a waiter and check breaks#
- On “Scheme”, open a table and choose “Assign waiter”, or “Change” if one is already assigned. Select an employee and check their name at the table. The assignment belongs to the table and is used for orders from its QR code.
- On “Day”, check who is “On break” on the timesheet: employees mark “Break” and “Back to work” themselves in “My cabinet” during an open shift. That mark goes to the timesheet and does not take tables away.
- So that an absent waiter gets no calls or new guests, tap “Break” next to them on the “Sections” tab (optionally with a cover). Their tables go to the cover or the whole shift and return on “Back”.
To assign many tables at once, apply a shift layout on “Sections” or use Waiters mode on the Floor plan.
Seat a walk-in guest#
- On “Waiting”, select “Add guest”, enter the name and party size, and optionally a phone number and comment. “Quoted wait, min” already holds the wait estimate — check it, type your own number if needed, and select “Add”. Tell the guest their ticket number or select “🧾 Ticket”.
- When a table is ready, select “Seat” for the guest. Under “Seat at table”, choose a free table. Highlighting helps match the capacity, but the host makes the final choice. A guest can be seated immediately if a table is free, without inviting them first.
- Seating creates a reservation for now, closes the waiting entry as seated and passes the table to the POS. Check the table before taking the order.
- If the guest has stepped away, use “Invite”. Invited entries offer “No-show” and “Back to queue”. If the guest cancels the wait, select “Remove”; the entry remains in history.
If no tables are free, keep the party in the queue. After a save error, check whether a reservation was created: seating may have saved while closing the waiting entry did not. Retry saving the entry instead of creating a second reservation.
Seat or move a guest with a reservation#
On “Reservations”, find the booking, choose “Table”, then “Seat” for a confirmed reservation. To move it, change the table in the reservation row and wait for the save. If the table overlaps another booking at that time, choose a different table or review the time; an error means the move is not confirmed.
To cancel, select “Cancel”. “Cancel the reservation?” asks “Why is it cancelled? The reason is saved in the reservation history (optional).” Enter a reason if needed and confirm with “Cancel reservation”.
Limitations#
There is no separate VIP reservation flag.
A break on “Sections” and a break on the timesheet are different marks: the timesheet counts working time, “Sections” takes tables away. The “Break” mark in “My cabinet” does not take tables away by itself.
A shift layout is applied with a button; it does not switch on by schedule.
The wait estimate is a forecast from tables and table turn, not a table hold: it does not account for joined tables or for reservations whose table is still free. Automatic “no-show” and “left” marks work while the Hall panel is open (or the next time it opens); the server does not close the queue by itself.
The panel lives inside the POS — it has no address or menu item of its own.
Updates come over a websocket. Without a connection the views do not refresh themselves — you will have to reload manually.
Reservations offers a Timeline by table; the host still chooses where to seat the party.
A guest who has arrived but is waiting for a table is handled in the waitlist. Booking reminder channels and conditions are described in Table reservations.
Automatic no-show release is off by default and is switched on by the venue: running late is not the same as not coming. A reservation with a paid deposit is never released automatically.
Hall analytics counts by table — takeaway and delivery orders are by definition not shown on the heat map.
Troubleshooting#
| Symptom | Possible cause | What to do |
|---|---|---|
| No timer on an occupied table | The option is off, or no open bill has a valid opening time | Enable Time at table and check the table’s open bill |
| A table needs attention even though a waiter visited | The timer tracks orders and served dishes | Check service with the waiter; a visit alone is not recorded by the timer |
| No Telegram button | No matching conversation or insufficient chat access | Check the guest’s phone and chat permissions; use Call if needed |
There is no "Hall" button in the POS. The tables section is off for your venue type — switch it on in the App Store.
The "Calls" view is empty although guests are calling the waiter. That means the QR code is not bound to a table: rescan the code at the right table and the binding will move.
There are no tables on the plan. Check that the right room is selected — tables belong to a specific room.
No reservations are visible. Booking is switched off for the location, or you are looking at a different point of sale. The plan also shows only today’s reservations (in the evening — the night until 06:00 as well): look for a reservation on a later day on the “Reservations” tab.
The heat map is empty. There are no orders bound to tables for the selected period.
"Needs cleaning" / "Cleaned — free" say "Could not save the table status". The staff role has no access to the "Tables" (floor plan) section: table statuses are saved next to the waitlist. The owner grants the section in the role builder.
A table does not turn "Needs cleaning" after payment. The "“Needs cleaning” after payment" checkbox is off (a manager or the owner sees it under the "Scheme" legend), or the order was not bound to a table.
FAQ#
How is the Hall panel different from the "Floor plan" section?#
"Floor plan" is the editor: that is where you draw tables and halls and bind QR codes to them. The Hall panel is the work done on top of that plan during a shift: seating, the queue, calls, analytics. The waitlist and the heat map do not exist on the editor page.
How do I mark a table as cleaned?#
Tap the table with the 🧹 badge on the "Scheme" tab and press "✓ Cleaned — free". The table becomes free on your screen right away, and on other POS screens and the hall monitor within 30 seconds.
Can a guest join the waitlist by themselves?#
Not to the Hall panel waitlist: the host adds guests to that queue and invites them by a call or a message. But when the time a guest wants for an online reservation is taken, they can tap “Notify me if a slot frees up” — these requests belong to reservations, and the guest is notified automatically when the slot frees up. See Table reservations.
Why is a table empty in analytics?#
It has no QR code bound to it. Orders are linked to a table through its code, so without one there is no data for that table — and the panel honestly shows "no data" rather than zero.
Can I open the panel on a separate tablet at the entrance?#
Yes — it is part of the till app, so open POS on the host's tablet and keep the panel expanded.
Are waiter calls duplicated in "Orders"?#
Yes, it is the same signal: the bell in the Orders section and the "Calls" tab show the same active calls.
Related sections#
- POS — where the panel is opened from
- Floor plan — the plan editor and binding table QR codes
- Table reservations — booking, deposits, statuses
- Orders — the waiter call and where it goes
- Shift tasks board — the full board