What happens when a customer walks in
Ten steps, from the guest sitting down to the bill paid. For each step: what the guest sees, what staff does, what Ordina does behind the scenes.
Ordina is not an app the guest downloads. It's not a POS either. It's the layer in the middle: between the hungry guest and the kitchen, between the till and the tax man. Here's a typical day at our Punta Ala venue, summer 2026, told step by step.
01
The guest arrives
- Guest
- Sits at the table the host pointed at, drops their keys, looks outside. Smells fresh bread.
- Staff
- Greets, walks them to the table, says 'tap your phone here for the menu' and points at the NFC tag on the table.
- Ordina
- Nothing yet. The table session opens at the first tap.
02
The NFC tap
- Guest
- Taps the phone on the tag on the table. Safari/Chrome opens with the restaurant menu. No app to download, no camera, no login.
- Staff
- Nothing. This is the guest's moment.
- Ordina
- Creates a BillSession for that table. Loads the menu in the browser language (Italian or English, falls back to Italian). If a confirmed booking exists for that table in the current slot, marks it 'arrived' automatically.
03
Browses the menu
- Guest
- Scrolls dishes by category. Taps one, sees a big photo, description, allergens, modifiers (e.g. 'gluten-free pasta', 'extra olive oil'). Adds to cart with one tap.
- Staff
- Keeps serving other tables.
- Ordina
- Whole menu is cached (ISR 60s) — instant load. Photos lazy-loaded. No server call until order submit.
04
Composes the order
- Guest
- Adds dishes, writes a free note ('no onion') in the text field, sees the total update. Taps 'Send order'.
- Staff
- Comes by only if the guest raises a hand (the 'Call waiter' button in the app — pg_notify to staff).
- Ordina
- Order payload is saved in localStorage until confirmed by the server. If the guest loses signal, the submit waits until the connection comes back.
05
The order goes out
- Guest
- Sees a tracker page: 'Order received, awaiting acceptance'. Timeline visible.
- Staff
- A new order card appears in the dashboard, with a beep and a soft tablet vibration. Big table number, compact content.
- Ordina
- Order insert in PG, pg_notify('orders'), SSE push to all clients subscribed to the tenant channel. Latency under 200ms.
06
Staff accepts
- Guest
- Sees 'Order accepted' with a 12-min ETA. No refresh — the page updates on its own.
- Staff
- Taps 'Accept' on the tablet. The order moves to the KDS in the kitchen, grouped by category (firsts, mains, sides).
- Ordina
- Updates OrderStatus → ACCEPTED, writes OrderStatusEvent, emits pg_notify for the customer tracker. AuditLog written.
07
Kitchen cooks
- Guest
- Waits. Drinks. Talks to whoever is at the table.
- Staff
- In the kitchen the young chef has the KDS in front. Sees the bundle of orders, marks 'in prep' at start, 'ready' at end.
- Ordina
- New states propagate to the guest. The timer for orders in IN_PREP feeds the average kitchen latency report.
08
Food arrives
- Guest
- Sees the 'Bon appétit' Caveat-red animation when the waiter taps 'Served'.
- Staff
- Carries the dishes, taps 'Served' on the floating cart.
- Ordina
- Final SERVED state. Order.foodCostMinor snapshot taken from Recipe.foodCostMinorCached at that moment — this is the real margin, not the estimated one.
09
Payment
- Guest
- Opens the order page, taps 'Pay'. Stripe Element offers Apple Pay (it recognises iPhone) or card. Tap, FaceID unlock, pays in 3 seconds. Leaves a 10% tip.
- Staff
- Nothing — the guest paid from the phone. A passive 'Table 7 has paid, all good' notice on the dashboard.
- Ordina
- Stripe PaymentIntent created server-side, 'payment_intent.succeeded' webhook flips paymentStatus to PAID. Tip tracked separately. Fiscal receipt (RT) issued by the provider chosen by the restaurant.
10
The guest leaves
- Guest
- Says goodbye, leaves. Ate in 45 minutes, paid in 3 seconds, said 'thank you' to a waiter who never asked them where the bathroom was.
- Staff
- Cleans the table, queues the next confirmed booking on screen.
- Ordina
- BillSession closed, table back in the pool, next bookings notified (t12 email to the guest if a table was assigned).
Want to see it live?
Ten minutes of remote demo. We'll have you drive the flow, from the fake table to the simulated kitchen. No commitment, no credit card.
Book the demo →