HiLucyHelp Center

How guests order — the two paths

HiLucy Team·Mis à jour 2026-04-26·4 min read

There are two ways a guest at your property can place a room-service order, and both end up in the same place: the kitchen sees an order, and the charge lands on their folio (or, when no folio is open, they get a secure Stripe link).

Path 1: Lucy in chat

Most guests land here naturally. They open the chat — from the guest portal, the WiFi splash, or WhatsApp — and ask anything food-related:

  • "What's on the room service menu?"
  • "I'm hungry, what can I get?"
  • "Anything vegan?"
  • "Send me a coffee."

Lucy fetches the menu for the listing the guest is at, presents items in a condensed bulleted list, and confirms with the guest before placing the order. When the order is placed, Lucy either replies "Done — added to your room" or sends a "Pay & confirm" link that opens Stripe checkout.

Path 2: The /room-service page

For guests who like to browse:

  1. They open /room-service from the dashboard quick-action card (it appears automatically once the listing context is set during arrival or via the chat).
  2. The menu loads grouped by category with photos, prices, and dietary tags.
  3. Tap an item to add to cart. A floating "View cart" pill at the bottom shows the running total.
  4. Open the cart sheet, adjust quantities or remove items, and tap Continue to confirm.
  5. The confirm dialog asks for room/location and any special requests, then Place order — $X.YZ sends it.

Guests see a green confirmation banner with the result message.

"On your room" vs "Pay link" — when each happens

The order endpoint chooses automatically:

  • Folio open + card on file → the charge is added to the open folio via Stripe's incrementAuthorization. Guest sees "Added to your room — staff notified." Settles at folio close.
  • Folio open but increment fails → falls back to a per-charge PaymentIntent on the same card. Same UX message, just a different Stripe object behind the scenes.
  • No folio open → a pending WooCommerce order is created and Stripe checkout URL is returned. Guest sees the "Pay & confirm" button (in chat) or a checkout link (on the SPA).

Menus & service hours

Properties can group their items into menus (Cafe Menu, Mini Bar, Dinner Menu) with their own service windows. Guests always see every menu — but a menu's items can only be ordered while it's in-window:

  • Each group header shows its current status, e.g. "Now serving · 7am–11am" (green) or "Closed · Opens at 5pm" (grey).
  • Items in a closed menu show a greyed-out Add button with a tooltip ("Available 5pm–11pm"). Tapping does nothing.
  • If a guest already has an item in their cart that has since gone out-of-window (the menu closed while they were browsing), the cart sheet flags it amber and the Place order button is disabled until they remove it.
  • The same rule applies to Lucy in chat — out-of-window orders return a clear "only available 5pm–11pm" message.

Menus that don't have a service window set are treated as always open, and items not assigned to a menu group stay always-orderable.

Allergens & prep time

Items can carry dietary tags (vegan, vegetarian, gluten-free, dairy-free, spicy, contains nuts) — they show as small pills under the description. Prep time, when set, shows next to the item ("8 min").

Guests with allergies can add them in the Special requests field on the confirm dialog. That note is sent through to staff in the kitchen notification.

Listing context — why the room-service entry point sometimes hides

The dashboard card and chat starter prompts only show when the SPA knows which property the guest is at. The listing id is set automatically:

  • When the guest completes the arrival flow at /arrive/[token]
  • When they hit /room-service?listing_id=… directly with a query string (deep link)
  • When staff sends them a magic link with the listing id encoded

If a guest reaches the dashboard with no listing context, the room-service card is hidden rather than nagging them with an empty CTA. Staff can fix this by sending them a fresh arrival link or by asking them to start the chat from the WiFi splash, both of which set the cookie.

Cet article vous a-t-il été utile ?