Virtual Tray & Ordering (PRO)

HomeDocumentationVirtual Tray & Ordering (PRO)

Virtual Tray & Ordering (PRO)

Overview: The Virtual Tray is the guest-side ordering layer in Stolik Menu PRO. It allows patrons to select dishes, review their cart, submit orders, append additional items across multiple rounds, and follow fulfillment status in real time—all within a unified digital menu session.

🍽️
One continuous ordering session: The Virtual Tray handles the current unsent selection, while the Active Order preserves what has already been submitted to staff. Together, they allow patrons and hotel guests to order in multiple dining rounds without losing their table, room, or payment context.

Where Virtual Tray is Available

The Virtual Tray is engineered specifically for transactional PRO workflows. It activates automatically when guests scan a transactional QR code:

  • Restaurant Universal Mode: Patrons scan a shared dining room QR code, enter their name, and select their table number from a dropdown list.
  • Restaurant Dedicated Tables: Patrons scan a table-specific QR code. The table number is encoded cryptographically, so guests only provide their name.
  • Hotel Custom Locations: Guests scan a room or zone QR code (e.g., Room 102, SPA, Cabana 4, Poolside). The location is pre-authenticated, unlocking In-Room Dining and Hotel Services.
ℹ️
Important: The Base Menu QR mode is an informational browsing experience. It intentionally disables the Virtual Tray, tableside ordering, and payment controls.

Guest Ordering Flow

The complete end-to-end guest ordering journey operates as follows:

  1. The guest scans a valid transactional QR code with their smartphone camera.
  2. Stolik establishes the authenticated table or hotel location session.
  3. The guest browses categories and taps items to add them to their selection.
  4. The floating bottom bar updates dynamically with item quantities and pricing.
  5. The guest opens the Virtual Tray to review their unsent selection.
  6. The guest enters their name or pseudonym (if not already entered).
  7. The guest taps Send Order.
  8. The request appears instantly on staff’s Live Service Dashboard.
  9. Staff members review and click “I’m on it” to acknowledge the order.
  10. The guest’s phone updates with live confirmation and active order totals.
  11. The guest can continue browsing and append more items at any time.

Adding Items & Floating Summary

Guests add dishes and drinks using intuitive item-level buttons and quantity steppers (+ / -). While browsing across multiple categories, a sticky floating bar remains anchored at the bottom of the screen.

Menu with sticky floating Virtual Tray on mobile

The floating Virtual Tray keeps the current unsent selection visible while the guest browses the menu.

Tapping the floating summary opens the full drawer, displaying line-item prices, quantities, and the order submission trigger.

Selected Items vs Already Ordered Items

Understanding this architectural separation is fundamental to using Stolik Menu PRO:

State ContainerDefinitionPermitted Guest Actions
Virtual TrayUnsent items currently staged in the cart.Increase quantity, reduce, remove, or cancel before sending.
Active OrderItems already sent to the kitchen or hotel staff.View fulfillment status, review active bill, request check.
💡
Rule: Sending an order empties the Virtual Tray and moves all items into the Active Order. When guests add desserts or extra drinks later, only the newly selected items sit in the Virtual Tray.

Guest Identity Resolution

To ensure staff can match orders to physical patrons, the system prompts for a guest identifier upon order submission:

  • Universal Mode: The guest provides their Name and selects their Table number.
  • Dedicated Table / Hotel Room: The table or room coordinates are resolved automatically by the QR identity token; the guest only inputs their Name.
Guest Name Input Modal in Stolik Menu

Dedicated Table and Custom Location flows request the guest name while the QR automatically provides the location identity.

Sending an Order & Active Order Card

Upon tapping Confirm Request or Send Order, the payload is transmitted to the server. The interface seamlessly transitions into the Active Order view:

Active Order Card on Mobile showing submitted dishes and bill total

Submitted items move into the Active Order and remain visible separately from the next tray selection.

The Active Order card gives patrons transparent visibility into their cumulative tab, ordered quantities, itemized pricing, and request status.

Appending Additional Items

Guests are never locked out of ordering after their initial submission. If a table wants additional appetizers, drinks, or desserts, they simply browse the menu and stage new items in the tray.

Initial Active Order Card

1. First submission active in kitchen

Appending additional dessert and drink items to tray

2. Appending fresh items to tray

Guests can continue browsing and append new items without resubmitting previously ordered items.

Staff Acknowledgement Loop

When an order is placed, it immediately surfaces inside the Live Service Dashboard on the staff tablet or terminal.

Live Service Dashboard order card with I'm on it acknowledgement button

Submitted orders appear in the Live Service Dashboard for immediate staff acknowledgement.

Once staff clicks “I’m on it”, the guest’s mobile status changes from “Request sent. Awaiting confirmation…” to “Request accepted! We are on it.”

Restaurant & Hotel Ordering Modes

The Virtual Tray adapts its behavioral contract depending on the operational venue domain:

  • Restaurant Domain: Anchored to dining tables. Items ordered map to the kitchen/bar, and the session supports “Ask for Bill” triggers.
  • Hotel Domain: Anchored to rooms, suites, or resort facilities. The Virtual Tray handles both food items and hospitality requests.

Mixed Hotel Orders

In Hotel Custom Locations, a single Virtual Tray submission can combine items from both the In-Room Dining channel (e.g., King Prawns, Wine) and the Hotel Services channel (e.g., Extra Pillows, Turndown Service).

Virtual Tray containing mixed food and hotel service items

Hotel Custom Locations can combine In-Room Dining and Hotel Services in one guest ordering workflow.

When submitted, the Live Service Dashboard flags the order as a MIXED ORDER – Coordination required, allowing kitchen and housekeeping teams to coordinate dispatch seamlessly.

Payment & Charge to Room

Depending on your admin settings and QR context, the Virtual Tray provides flexible settlement options:

  • Mobile Stripe Checkouts: Guests can pay immediately tableside using Apple Pay, Google Pay, or Credit Card.
  • Charge to Room: Available exclusively in authenticated Hotel Custom Locations when toggled ON in plugin settings. Guests post order totals directly to their room folio.

Fresh QR Scan Precedence

Scanning a new physical QR code represents an explicit guest action that instantly establishes a new authoritative venue context:

Restaurant Dedicated Table 1 Scan

1. Guest at Restaurant Table 1

Hotel Custom Location Room 102 Scan

2. Guest scans Room 102 QR later

A fresh QR scan establishes a new authoritative venue context and prevents stale Restaurant/Hotel session identity from carrying over.

📌
State Rule: Stale browser cache or local storage from a previously scanned table will never override a freshly scanned room or table code.

Common Questions (FAQ)

Why did my tray reset after scanning a different QR code?

Scanning a fresh QR code establishes a new physical location context. The previous table or hotel room session is cleared intentionally to prevent misdirected orders.

Why are already ordered items not shown inside the Virtual Tray?

The Virtual Tray holds only unsent selections. Once submitted, items transfer into the Active Order view to prevent accidental duplicate orders.

Why is the Virtual Tray missing in Base Menu mode?

Base Menu mode is designed for non-transactional catalog browsing. Ordering requires Universal, Dedicated Table, or Custom Location QR modes in Stolik Menu PRO.

Why is the Charge to Room option missing at checkout?

Charge to Room requires three conditions: an active PRO license, the Charge to Room toggle enabled in Stolik Menu → Payments, and an authenticated Hotel Custom Location QR code.

Developer Integration Notes

Business domain: restaurant | hotel
Entity: none | table | location
Service mode: base | universal | dedicated
Content channel: food | hotel_services
  • Server-Side Validation: Never authorize ordering or payments purely from URL query parameters (e.g., table_id=1). All capabilities require server-validated token resolution.
  • Opaque Short IDs: Treat service_qr_id as an opaque identifier. Do not parse, modify, or assume fixed character lengths.
  • Locale Invariance: Changing languages (e.g., from /menu/ to /menu-pl-pl/) must modify only the presentation layer; it must never reset or alter the active table or room identity.