Orders / Menu
In this area you set up your agent to take orders: you enable the ordering function, decide when and how payment happens, maintain your menu (categories, items, prices, options), optionally configure delivery with fees and delivery areas, and track incoming orders live on an order board. Particularly suited to restaurants, takeaways, bakeries and anyone selling food/products for collection or delivery.
The area is split across two pages in the agent menu:
- "Menu" (menu item Ordering) — settings, OCR import and the menu editor.
- "Current orders" (menu item Orders) — the live order board for the kitchen.
A note on level of detail: Some fields appear only when Advanced mode ("Advanced") is switched on at the top of the dashboard. In simple mode you see only the most important fields; in advanced mode you additionally see Delivery, the Order playbook, option groups per item, as well as tax rate, prep time, allergens and currency per item. These places are each marked below with (advanced mode only).
Currency: One currency applies per company, set in the company settings. All prices automatically show the matching symbol (e.g. €). You always enter amounts in the main unit (e.g.
9.50); internally they are stored in the smallest unit (cents). The currency on an individual item is therefore read-only and cannot differ.
11.1 Enable ordering and basic settings ("Order settings")
These settings sit right at the top of the "Menu" page.
Step 1: Enable orders.
- "Accept orders" (ordering_enabled): The main switch. As long as it is off, the agent takes no orders, no matter how complete the menu is.
- Default: Off.
- Recommendation: Only switch it on once the menu, prices, opening hours and payment method are ready.
Step 2: Pause order intake briefly ("Order intake").
Directly below the main switch there is a separate pause control for stressful moments (order_paused_until). It is saved immediately, independently of the "Save" button.
- As long as it is not paused, it reads "Orders are being accepted."
- The buttons "Pause 30 min" and "Pause 1 hr" stop the intake of new orders for the chosen window; after that it automatically resumes. During the pause it reads "Paused until HH:MM", and you can reopen immediately with "Resume intake".
- Recommendation: Use this when the kitchen is overloaded — the running menu stays unchanged, only no new orders come in temporarily.
Step 3: Set the payment timing ("Payment").
- "Payment" (order_payment_timing): When the customer pays. Three options:
- "Pay on collection" (onsite) — payment on site/on delivery, no online payment needed.
- "Pay online in advance" (prepay) — the customer pays immediately online (via Stripe); the order only counts as received after payment.
- "Let the customer decide" (customer_choice) — the customer chooses between prepayment and on-site payment.
- Default: "Pay on collection" (onsite).
- Recommendation: For regular customers collecting, on site is enough. For delivery, prepayment is advisable (see 11.4) to avoid fake addresses.
Step 4: Offer collection.
- "Offer collection" (order_fulfillment_pickup): Allows customers to order for self-collection.
- Default: On.
- Recommendation: Leave it on. If you only deliver, switch it off and enable delivery (11.4).
Step 5: Set the default prep time.
- "Default prep time (minutes)" (order_prep_minutes_default): How long an order usually takes. From this the agent calculates the collection-time estimate for customers.
- Default: 20 minutes. Permitted range: 0 to 1440 (24 hours).
- Recommendation: Choose a realistic peak-time value, ideally a little generous. Individual items can deviate from this (see 11.3).
Step 6: Set a minimum order value.
- "Minimum order value" (order_min_total_cents): Below this value the agent takes no order. Entered in the main unit (e.g. 10.00).
- Default: Empty = no minimum value.
- Recommendation: For collection only often not needed; for delivery it makes sense (delivery additionally has its own minimum value, see 11.4).
Step 7: Link opening hours ("Order times"). - The order times are maintained not here, but in a separate area. The link "Manage opening hours →" takes you there. On closed days no orders are accepted; the AI tells the customer when ordering is possible again. - Recommendation: Be sure to maintain opening hours before you go live — otherwise the agent takes orders around the clock.
Step 8 (advanced mode only): Order playbook.
- "Order playbook" (order_intake_playbook): Free-text instructions on how the AI takes orders (e.g. "Always suggest a drink with the meal", "For pizza, ask how the customer wants it cut").
- Default: Empty. Maximum 8,000 characters.
- Recommendation: Keep it short and include only genuine special rules.
Step 9: Save. Click "Save settings". (The pause control from Step 2 saves separately and immediately.)
11.2 Import the menu quickly via photo/PDF ("Upload menu (OCR)")
Instead of typing in every item by hand, you can upload a photo or PDF of your existing menu. The area reads it out automatically (OCR/Vision) and creates a preview table that you check before applying.
Step 1: Upload the file. Drag the file into the field "Drag menu (image/PDF) here or click" or click to select. - Permitted formats: PNG, JPG, WEBP, HEIC, PDF, up to 20 MB.
Step 2: Check the detected items. After analysis a table appears with one row per item and the columns: - "Apply" — unticked = this item is not imported. - "Name" — directly correctable. If an item has detected options (e.g. size/toppings), a note appears below it "Options: … — editable after import". These option groups are imported along with it; you can fine-tune them afterwards in the editor (11.3). - "Category" — free text. A matching category is found automatically or created anew (case-insensitive). Empty = no category. - "Price" — in the main unit, correctable.
Step 3: Import. Click "Import {count} items". Only ticked rows with a name are applied; missing categories are created automatically in the process. With "Cancel" you discard the preview.
11.3 Maintain the menu ("Menu" editor)
Here you build the menu customers order from: categories → items → (optional) option groups.
Step 1: Create a category ("Add category").
- Enter the "Category name" (e.g. Starters, Pizzas, Drinks), then "Add category".
- Each category has in the list:
- an editable name field (click in, change, leave focus = saved),
- an "Active" toggle (is_active, Default: on) — switched off it does not appear for customers and is marked in the editor with the badge "Hidden"; the items are retained,
- a trash icon to delete (after confirmation; the items are then listed as "No category", not deleted).
- Items without a category automatically land in the "No category" block.
Step 2: Create an item ("Add item").
- "Name" (required, e.g. Pizza Margherita).
- "Category" — selection of existing categories or "No category".
- "Description" — short description for customers (optional).
- "Price" — in the main unit, e.g. 9.50. Maximum 100,000 (main unit) per item; minimum 0.
- Save with "Add item".
Step 3: Edit an item (pencil icon "Edit {name}"). In the dialog there are:
- "Name", "Description", "Category", "Price" — as above.
- "Currency" (advanced mode only) — read-only, derived from the company.
- "Tax %" (advanced mode only) (tax_rate_percent): VAT rate for this item. Default: 0, range 0–100. Shown in the item row as the badge "{rate}% tax".
- "Prep time (min.)" (advanced mode only) (prep_minutes): overrides the default time from 11.1 for this item. Default: empty (= the default applies), range 0–1440.
- "Photo URL" (photo_url): image next to the item. Either enter an https://… URL or upload an image (PNG/JPG/WEBP) via "Upload photo". Only http(s) URLs are permitted (protection against malicious links).
- "Allergens" (advanced mode only) (allergens): comma-separated, e.g. Gluten, Milk, Nuts. Default: empty. Often subject to mandatory labelling in the EU.
- "Available" (is_available, Default: on): Off = the item is (temporarily) not orderable and carries the badge "Unavailable". This toggle is also present directly in the item row — handy when something is sold out.
- Save with "Save".
- Use the trash icon in the row to delete the item (after confirmation).
Step 4 (advanced mode only): Maintain option groups / choices ("Options").
Via the "Options" button on the item row you open the dialog "Options for {name}". Option groups are selection blocks such as Size, Sauce or Extras.
- Create a group: enter a "Group name" (e.g. Size), "Add group".
- Configurable per group:
- "Min." (min_select): how many choices the customer must make at minimum. Default: 0 (= optional). A value ≥ 1 makes the group mandatory. Range 0–50.
- "Max." (max_select): how many choices are allowed at most. Default: 1. Range 1–50. Example Size: Min 1 / Max 1 (exactly one). Example Extras: Min 0 / Max 5 (any number up to 5).
- Create options within the group: "Option name" (e.g. Large) plus "Price change" (price_delta_cents) in the main unit — this is added to the item price (e.g. +1.50; 0 = price-neutral). Then "Add option".
- Each option has an "Available" toggle (Default: on) and a trash icon.
- Name, Min/Max and prices can be changed inline later (change the field, leave focus = saved).
- Tip: Options detected during OCR import (11.2) land here automatically and can be fine-tuned.
How the AI uses the menu: When taking orders the agent draws on the structured menu (items, prices, options, availability). Prices and totals are always calculated by the server based on this menu — the customer/AI cannot "pass along" prices. So that the AI can answer allergen or description questions, for example, clean, short descriptions help. (Pure questions outside the order are answered by the agent via the knowledge base; if an answer is missing, the "recall-fallback" applies there — see the knowledge chapter.)
11.4 Delivery, fees, minimum values and delivery areas ("Delivery") — advanced mode only
In advanced mode a separate block "Delivery" appears in the order settings (in addition to collection or instead of it).
Step 1: Enable delivery.
- "Delivery" toggle (order_fulfillment_delivery): Default: off. Only once switched on do the following fields appear.
Step 2: Require prepayment for delivery (optional).
- "Delivery only with prepayment" (order_delivery_requires_prepay): Delivery orders must be paid online (Stripe) before acceptance — protects against fake addresses. Collection is unaffected by this.
- Default: off.
- Recommendation: Switch it on for delivery to passing trade.
Step 3: Set the default terms.
- "Delivery fee" (order_delivery_fee_cents): added to the order total. Leave empty = free delivery. Minimum 0.
- "Minimum order value for delivery" (order_delivery_minimum_cents): minimum value of the food (before fee) for a delivery. Empty = no separate delivery value (only the general minimum order value from 11.1 then applies, if set).
- "Delivery time (min.)" (order_delivery_eta_minutes): rough delivery-time estimate for customers. Range 0–1440. Default: empty.
Step 4: Control delivery areas by postcode ("Delivery areas (postcode)"). - Leave empty = you deliver everywhere. - Via "Add area" you create rows with a "Postcode" — then you deliver only to these postcode areas. - For each area you can enter a "Fee" and "Minimum value" to override the default values from Step 3 for this postcode. If you leave the fields empty (placeholder "Default"), the general values apply. - You remove rows via the trash icon.
Step 5: Save. The delivery settings are saved together with the rest of the order settings via "Save settings".
11.5 Order board — handle orders live ("Current orders")
On the "Current orders" page you see all running orders as a Kanban board and move them through the kitchen stages. The board updates automatically (polling every ~10 seconds); on a new order a short signal tone sounds and a notification toast appears. Via "Refresh" you can reload manually.
Columns (left to right): - "Received" → "Confirmed" → "In preparation" → "Ready". - A fifth column "On the way" appears only once delivery orders are involved. - Deliberately given no columns of their own are: "Payment pending" (prepayment not yet paid), "Completed" and "Cancelled" — they would only clutter the board.
Each order card shows:
- a short reference (format BK-XXXXXX) and a payment badge (Unpaid, Payment pending, Paid, Refunded, Pay on site),
- customer name (otherwise "Guest") and time received; for pre-orders additionally a badge "Pre-order {time}",
- for delivery a highlighted "Delivery" block with address and any delivery notes, otherwise the note "Collection",
- the line items (quantity × item including chosen options) with line totals, any "Delivery fee" and the "Total".
Step 1: Advance the order. The large button always moves to the next stage: - Received → "Confirm" → "Start preparation" → "Mark as ready". - Then for collection: → "Complete". - For delivery: → "Out for delivery" → "Mark as delivered". - The customer is notified on status changes.
Step 2: Cancel the order. Via the X / "Cancel" a dialog opens. Optionally give a "Reason" (e.g. Item out of stock), then confirm "Cancel order". This is final, and the customer is notified. With "Keep order" you cancel out.
Tips & pitfalls
- Order when going live: first the menu + prices + options, then opening hours (separate area!), then payment method, lastly the "Accept orders" switch. Otherwise the agent takes orders without a menu or around the clock.
- Don't forget advanced mode: Delivery, option groups, tax rate, prep time per item, allergens and the playbook are only visible in Advanced mode. If you can't find them, switch on advanced mode at the top.
- Always enter prices in the main unit (
9.50, not950). Both comma and full stop are accepted; internally they are stored in cents. - Pausing ≠ switching off: The quick pause (30/60 min) only stops new orders temporarily and saves immediately. To end the function permanently, switch off "Accept orders" and save.
- Option group Min/Max: Min ≥ 1 makes the group a mandatory choice. A classic for Size: Min 1 / Max 1. For optional Extras: Min 0 / Max n.
- "Hidden" category vs. "unavailable" item: An inactive category hides all of its items from customers; a single "Unavailable" item only disappears itself. Neither deletes anything.
- Deleting a category is not deleting items: When you delete a category the items are retained and slide into "No category".
- Delivery & minimum values: There are two minimum values — the general one (11.1) and the delivery minimum value (11.4). Per postcode area, fee and minimum value can additionally override the default values; empty area fields inherit the default.
- Delivery areas: No postcode entered = delivery everywhere. If you deliver only to certain postcodes, you must enter them completely — a missing postcode means "no delivery there".
- Prepayment: With Pay online in advance (or Delivery only with prepayment) Stripe must be set up, otherwise the order stays stuck in "Payment pending" and does not appear on the kitchen board.
- Order board sound: The signal tone for new orders may be blocked by the browser until you have clicked once within the page — but the visual notification always appears. Keep the board in an open tab during kitchen operation.
- OCR is a template, not a final result: Always check prices and names from a photo/PDF in the preview before you import — OCR can misread.