Hotel & In-Room Dining

HomeDocumentationHotel & In-Room Dining

Hotel & In-Room Dining

Overview: Configure hotel guest menus, In-Room Dining, Hotel Services, and Custom Locations for rooms, SPA areas, pools, and other service zones. This guide explains the core differences between Restaurant and Hotel contexts and how to leverage them for maximum operational efficiency.

What is Hotel mode?

Stolik Menu can serve both restaurant and hotel guest scenarios, but Hotel context does not automatically mean Hotel Services.

The hotel workflow is intentionally split into two different concepts:

  • In-Room Dining: Food and beverage content available to hotel guests.
  • Hotel Services: Non-food hospitality services such as housekeeping, extra amenities, transport, wellness, SPA services, turndown service, or other guest requests.

This separation is important because different Stolik editions expose different capabilities. In the Free edition, Hotel mode is designed primarily for In-Room Dining presentation. In Stolik Menu PRO, Hotel mode can be extended with Custom Locations, transactional ordering, payments, and Hotel Services.

ℹ️
Important: Hotel context describes where the guest is using the menu. It does not automatically enable Hotel Services, payments, ordering, or Charge to Room.
In-Room Dining Tab
Hotel Services Tab

PRO Custom Location view with separate In-Room Dining and Hotel Services channels.

Hotel Guests in the Free edition

The Free edition supports a simplified hotel guest experience. A Hotel Guests QR code opens the menu in a hotel context, but the available content is limited to In-Room Dining / food content.

The Free Hotel workflow does not enable:

  • Hotel Services
  • Virtual Tray ordering
  • Online payments
  • Waiter / Service Call transactional workflows
  • Charge to Room

This makes the Free edition suitable for hotels that want to provide a multilingual digital room-service menu without enabling full transactional workflows. Guests can scan the QR code, browse the available food and beverage menu, switch languages when available, and view the menu using the same responsive Stolik frontend.

Free Hotel = In-Room Dining presentation only.
Free Edition In-Room Dining Frontend
Free Edition QR Generator

Free Hotel Guests QR provides In-Room Dining access without PRO transactional features.

PRO Custom Locations

Stolik Menu PRO introduces Custom Locations Mode for hotels, resorts, serviced apartments, clubs, wellness venues, and other hospitality environments.

Instead of assigning a QR code only to a restaurant table, you can assign a unique QR identity to a specific hotel location. Examples include: Room 102, Suite 305, SPA, Swimming Pool, Lobby, Rooftop, Wellness Area, Beach Bar, Conference Room, Executive Lounge.

Each location receives its own QR code and its own persistent identity. When a guest scans the QR code, Stolik already knows which location the request belongs to. The guest normally only needs to provide their name or guest identifier. This avoids asking the guest to manually select a room or service location after scanning.

Custom Locations Admin UI

Custom Locations Mode lets each room or service area receive its own permanent QR identity.

📄 View Batch QR Print PDF Sample

Two guest channels in PRO

A valid PRO Custom Location can expose two separate guest channels.

1. In-Room Dining

Contains food and beverage items. Typical examples: breakfast, room-service meals, desserts, beverages, wine, snacks, late-night dining.

Guests can add supported items to the Virtual Tray and send an order to the hotel team.

2. Hotel Services

Designed for non-food guest requests and hospitality services. Typical examples: extra pillows, additional towels, housekeeping, evening turndown service, airport transfer, laundry, SPA treatment, wellness services, luggage assistance, room amenities.

Hotel Services items are kept separate from food content so staff can clearly identify what kind of request was submitted. A single hotel order may contain items from both channels. In that case, the Live Dashboard can identify the order as requiring coordination between departments.

In-Room Dining and Hotel Services are separate channels, but they can participate in the same guest workflow.
Hotel Services Admin
Live Dashboard Mixed Order

Mixed hotel orders are clearly identified in the Live Dashboard for staff coordination.

Ordering from a Custom Location

When PRO transactional features are enabled, a Custom Location QR can initialize the full hotel ordering workflow. A typical guest flow is:

  1. The guest scans the QR code assigned to a room or hotel location.
  2. Stolik resolves the Custom Location identity.
  3. The guest browses In-Room Dining and Hotel Services.
  4. Items are added to the Virtual Tray.
  5. The guest confirms their name.
  6. The order is sent to the Live Dashboard.
  7. Staff can review and acknowledge the request.
  8. The guest can see the active order status on the frontend.

The location is already known from the QR code, so the guest does not have to manually choose the room or service area.

Frontend Guest View
Virtual Tray Mixed Items
Live Dashboard Staff View

Guest flow: from frontend browsing, to Virtual Tray, directly into the staff’s Live Dashboard.

Custom Location identity

Each Custom Location has its own permanent QR identity. A QR assigned to Room 102 represents that hotel location. A QR assigned to SPA represents SPA. A restaurant Dedicated Table QR represents a restaurant table.

These identities must not be treated as interchangeable. For example:

  • A hotel room with internal numeric position 1 is not the same entity as Restaurant Table 1.

Stolik Menu PRO 1.6.0 explicitly separates Restaurant table identity from Hotel location identity. This prevents context from leaking between Restaurant and Hotel workflows. It also ensures that QR preview, Print QR Code, Print All, PNG export, and SVG export preserve the correct location identity.

Do not manually copy or modify QR query parameters between Restaurant and Hotel QR codes. Always generate the QR code from the correct Stolik mode.

Dedicated Tables Mode - Table 1
Custom Locations Mode - Room 102

Restaurant tables and Hotel Custom Locations use separate QR identities, even if their numeric positions are similar.

Permanent short QR links

Starting with PRO 1.6.0, transactional QR codes can use compact permanent QR identities. Instead of exposing the full signed service token in the browser URL, the QR can contain a compact identifier such as:

service_qr_id=68d98f3d49

Stolik resolves that identifier on the server and restores the validated transactional context. This results in:

  • less dense QR codes
  • easier printing
  • better scan reliability
  • cleaner browser URLs
  • no exposure of the full signed token in the visible URL

The compact ID should be treated as opaque. Do not decode it, edit it, or generate one manually.

Charge to Room

Charge to Room is a separate PRO hotel settlement workflow. Being in Hotel context does not automatically enable Charge to Room.

The option becomes available only when:

  • PRO is active,
  • the required hotel context is valid,
  • and the Charge to Room feature is enabled in plugin settings.

This distinction protects Restaurant workflows from accidentally inheriting hotel settlement capabilities. When enabled, eligible hotel guests can submit an order to the room account instead of completing an online card payment. When disabled, Charge to Room remains unavailable.

Hotel context alone is not sufficient to enable Charge to Room.

Charge to Room Enabled

Charge to Room Settings Enabled
Frontend showing Charge to Room option

Charge to Room Disabled

Charge to Room Settings Disabled
Frontend without Charge to Room option

Charge to Room remains controlled by the dedicated setting and valid Hotel Custom Location context.

Developer note: Restaurant, Hotel and content channels

For integrations and custom development, keep these concepts separate:

Business domain: restaurant | hotel
Entity: none | table | location
Service mode: base | universal | dedicated
Content channel: food | hotel_services

Restaurant / Hotel describes the business context. Food / Hotel Services describes the content channel.

A hotel guest may browse food content, which means:

  • domain = hotel
  • channel = food

This is valid and expected. Do not infer Hotel Services merely because the guest is in Hotel context. Likewise, do not infer Restaurant or Hotel identity from a numeric table_id alone. Transactional behavior should always rely on the validated public context generated by Stolik.

👨‍💻
Developer Tip: Treat service_qr_id as an opaque identifier. Do not depend on its current length or format. Do not infer domain or entity type from table_id. Use validated server-side context instead.