Modifiers
Modifiers are structured choices on a product — never free-text notes — so pricing, kitchen instructions, stock and allergen data stay reliable.
The page reads top-to-bottom in the order you work: build groups first (the table at the top), then apply them to products (the ✓ matrix underneath).
Groups: the building block
A group is a reusable rule containing options. Create one with New group +:
- What does it do? — Customisation changes the product itself (add/remove an ingredient, a cooking instruction). Extra sells something alongside it (an upsell item or a separate condiment).
- Name — guests see this as the heading ("Add a side", "Cooked how?").
- Choose rule — Min picks 1+ makes the group required: guests can't add the item until they've chosen (the till, kiosk, online ordering and the API all enforce it). Max caps the total; Repeatable lets one option be chosen with a quantity (e.g. 3 × sauce).
- Sales channels — each channel (Till, Online, Kiosk) shows one of three states: On (the group and every option show there), Off (hidden from the whole channel), or Custom (shown automatically when individual options carry their own channel settings — with a count of how many options are hidden there). Choosing On also resets those option overrides so everything shows; choosing Off hides the group without touching the options. If you hide a required group from a channel where the product is still sold, the editor warns you — the product would be impossible to order there.
- Availability — collapsed behind a one-line summary (e.g. "Available MON–FRI, 12:00–22:00"); press Edit to expand. Schedule when the group shows: days of the week (selected days are the active, available ones — select none for every day), a time window (all day if left empty; a start after the end wraps past midnight), an optional date range for a limited-time run, and order types. These work alongside the channel states. Leave everything unset for "always available".
- Options — see the three ways below.
- Products — review where the group is used (with quick per-product remove); assignment itself happens in ONE place — the Assign products drawer, reachable from the group row or the editor's Assign products… button.
The groups table shows each group's channel status (Till / Online / Kiosk, struck through when hidden) and a Scheduled badge when it has an availability window. Use the Bulk channels controls above the table to show or hide every group on a channel in one go.
Three ways to give a group its options
Add options manually
Each option has a name and a price change (or £0); open its Edit for the full override surface (below). Upsell / condiment options link to a real product (e.g. Piper's Crisps): the price, tax, stock and 86 state follow the linked product automatically — if the crisps sell out, the option disappears from guest menus by itself.
Link categories — dynamic
Pick a menu category and press Link — live mirror. The group's options are that category's products, live:
- Add a product to the category → it appears as an option everywhere the group is used.
- Archive a product, 86 it or run out of stock → the option disappears by itself.
- Every option sells the real product at its current price.
A group can mirror more than one category. Once linked, use Add another category… to bring in, say, both Sides and Crisps in one upsell. Options run in the order the categories are listed (reorder with the arrows); a product that sits in two linked categories appears only once. Remove a single category with its ×, or Unlink all to return to a manual list.
The editor shows a persistent Dynamic — mirrors "…" state with a read-only preview of the current options. While linked you can't edit individual options (there are none to edit — the categories are the list); unlinking returns the group to its own manual list, which was kept, not deleted. Perfect for "Add a side" where the Sides category is the truth.
Copy a category — static
Copy once — editable list takes a snapshot of the category's current products and creates one normal linked option per product ("copied N products"). The group does not follow the category afterwards — but each option still follows its own linked product's price/stock/86. Use this when you want the category as a starting point and then reorder, rename or trim.
The groups table shows which mode a group is in: a Dynamic · Mirrors "…" badge (listing every linked category), or its option count and list.
Per-option overrides (static groups)
Open Edit on any option row:
- Display name — what guests see; a linked option can read "Extra crispy fries" while the product stays "Fries".
- Price change — increase or discount (e.g. −£0.50), for non-linked options. A linked option's price follows its product — the product record stays the single source of truth.
- Display order — ▲▼ moves the option; guest menus and the till follow it.
- Pre-ticked by default — the option starts selected on guest menus (guests can untick). Pre-ticks count toward the group's Min picks.
- Max quantity — per-option cap in repeatable groups.
- Packing — flag condiments that go in the bag, not on the plate.
- Sales interfaces / Order types — show the option only on some channels (Till / Web app / Kiosk) or order types (Dine-in / Takeaway / Collection / Delivery), the same pills as on a product. For linked options this intersects the product's own settings — both must allow.
Overrides only change how the option is presented. The linked product keeps ownership of its allergens, tax, stock and 86 state.
Applying groups to products
Two ways, same result:
- The matrix (bottom of the page) — one column per group; a ✓ applies the whole group to that product. Every toggle autosaves. This is the reuse story: add an 11th option to "Add extras" and it appears on every product carrying the group, instantly.
- Assign products (on each group's row, which also shows "Applies to N products") — the whole picture in one drawer, grouped by Menu › Category. Tick a category header to make it dynamic: every product currently in it carries the group, and products added to the category later inherit it automatically (the header reads Dynamic — includes future products; its members show a dimmed, inherited ✓). Tick individual products for manual picks — they combine across categories and always survive a category being unticked. Un-ticking one product inside a dynamic category converts that category to a one-time selection: its other current products stay ticked individually, but future products won't inherit (the drawer says so under the header). A product sitting in several categories is one selection — its ✓ shows everywhere it appears. Archived products are named with a badge but can't be linked; anything skipped at save is listed with the reason, never silently dropped. Copy assignments from another group loads an existing group's set as a starting point, and the search box / Selected only toggle keep a big catalogue workable. Nothing changes until Save — the footer always shows what you're about to apply ("N categories (dynamic) · M individual products · T products in total"). This drawer decides which products carry the group; it's separate from linking categories as the group's options (step 4).
Where it's used (same panel) lists every product carrying the group — with a × to remove it — and the categories those products sit in. A Whole category badge means every active product in that category has the group; Some products means partial coverage.
Saved assignments reach every surface live: open till sessions, the kiosk and online ordering re-pull the catalogue within seconds of a save — no app restart or till re-sync needed. Removing an assignment disappears the group everywhere the same way.
A static group needs at least one active option before it can go on a product (the system blocks empty groups so a live item can never show a broken sheet). A dynamic group is always assignable — its options come from its linked categories.
Good to know
- Orders snapshot the chosen options (name and price at the time) — editing a group later never rewrites history.
- Removal options (e.g. "No onions") are usually £0 — create them under a Remove ingredients customisation group so the kitchen sees them first on tickets.
- Cooking instructions work best as a required, pick exactly 1 group ("Cooked how?" — rare / medium / well done).
- On the kiosk and online ordering, options no longer sit under every menu card — tapping a product opens an expanded view (photo, full description, allergens and dietary info, price) where each group's title reads as a heading: tap it to reveal the options, and it folds away once the group can take no more picks. Required groups start open and block Add to order until satisfied. Products with no options keep one-tap add straight from the card.
- In that expanded view, upsell options (ones selling a real product) render slightly larger than plain choices so the full name and price always show.