Start free

Option groups: modifiers for dishes and products

Required choices, free extras, pre-selected options and stock deductions.

13 min read Admin panel demo
On this page 13

Option groups: modifiers for dishes and products

An option group helps clarify an order: which sauce to serve, how to cook a steak, or whether to add extra ingredients. In cenaly.ge, you can require a choice, limit the number of options or pre-select an option.

In a café, this is a setting for a dish or drink; in a shop, it belongs to a catalog item. “Sauce”, “No sauce” and “Biscuit” below are example names that you enter yourself.

What you need to get started#

What to prepare Why
Access to edit an item in the admin panel Groups are configured in its card
The item in “Menu” Each group belongs to a specific item
A list of options and a selection rule For example, exactly one sauce or up to two optional extras
Stock items, if you need to track usage An option recipe references stock items
POS, the storefront or the kitchen screen for checking To see the selection as staff and guests see it

A preference such as “No onion” does not need a stock recipe. A free sauce whose usage you want to track does need a recipe, even when its price is zero.

Step 1. Create a group in the item card#

Task: put related answers in one place.

  1. Open “Menu” and the relevant item card.
  2. Open “Options”: this tab contains “Variants”, “Add-on” and “Option groups”.
  3. In “Option groups”, click “Add group”.
  4. Enter a clear name, such as “Sauce”.
  5. Click “Add option” and enter its name and surcharge. Repeat for the other answers.
  6. Once the options are added, set the selection limits with − and +.
  7. After entering a name or price, move to another field: the card saves changes automatically.
Field Meaning
“Choose at least” The required number of options; 0 lets the guest skip the group
“at most” The maximum number of selected options
∞ and “no limit” No upper limit is set
“Surcharge for the option; 0 — free” The amount added to the price of one unit of the item
“Pre-selected” Select this option when the selection opens

If a new item has no tab, enable “Variants & Add-ons” in “Visible Fields”.

Result: the item has its own group with a clear selection rule. If the rule looks unexpected, check the number of options: the minimum cannot exceed that number, and the maximum cannot be below the minimum.

Step 2. Ask the guest to choose a sauce#

Task: fries need one sauce choice, but the guest must be able to decline sauce explicitly.

  1. Add options such as “Tomato”, “Cheese” and “No sauce” to the “Sauce” group.
  2. Set “Choose at least” to 1 and “at most” to 1.
  3. Set the surcharge for “No sauce” to 0 and leave its recipe empty.
  4. Check the item in the storefront: it cannot be added to the cart without a choice.
  5. Select “No sauce” and confirm that this satisfies the requirement.

Result: the kitchen receives a clear answer, including a request for no sauce. If the guest can skip the entire group, check that the minimum is 1 rather than 0.

To allow two extras, set “at most” to 2. A minimum of 0 makes them optional; a minimum of 1 requires at least one. When the limit is reached, deselect an option before choosing a different combination.

Step 3. Track a free sauce in stock#

Task: the sauce served with a pizza adds nothing to the bill but uses stock.

  1. Leave the option surcharge at 0.
  2. Expand “Stock & tax” below that option.
  3. Under “Recipe of one portion of the add-on”, click “+ Ingredient”.
  4. Select the stock item and enter “Quantity per portion” in that item's unit of measure.
  5. Check that the quantity is for one option served with one unit of the main item.

Result: the selected sauce is free for the guest, while its ingredients are deducted when the order reaches realization. If no sauce was deducted, check the option's own recipe, the selection in the order and the ingredient quantity.

For example, if each pizza uses 0.03 kg of sauce, two pizzas with this option use 0.06 kg. The option recipe is added to the pizza's own recipe.

First N extras free#

Task: a burger can take up to four extras, two of them free, every next one at its own price.

  1. In the «Extras» group set the maximum, for example 4.
  2. Next to the maximum stepper find «free» and set 2.
  3. Under the group rule check the caption: «…, up to 4 · first 2 free».
  4. Save the item card.

Result: the guest picks cheese 50, onion 50 and jalapeño 30 — and pays 50. The cheapest of the chosen options become free: jalapeño and one of the 50 options. With equal prices the first ones in the card are free. The order of taps does not change the total.

The POS (web, Android, Windows, Ubuntu), the QR menu and the server order check use one rule. The «… · first 2 free» caption also shows in the options window of the POS and waiter apps. In the order line the free option stays with price 0: the kitchen and stock see it as a normal extra.

Prefixes: no, light, extra, on the side#

Task: a guest asks for “extra cheese” — the cashier marks a double portion, the POS charges a double surcharge and the cook sees “EXTRA Cheese” on the ticket.

  1. In a group, for example “Toppings”, find the “Prefixes” row.
  2. Tick which prefixes are allowed: no, light, extra, on the side.
  3. Next to a ticked prefix, set your own price factor if needed. An empty field means the default: “no” × 0, “light” × 0.5, “extra” × 2, “on the side” × 1.
  4. Save the item card.

At the POS, choose the option in the options window — a portion row appears under the group: “Cheese: no · light · extra · on the side”. Tap the prefix you need; tapping it again removes it.

On the storefront, in the QR menu and at the kiosk the guest sees the same thing: under the chosen option on the dish card, buttons for the allowed prefixes appear with the surcharge, and the price on the add-to-cart button changes straight away.

In the cart the line reads “Toppings: EXTRA Cheese”, and an order with a prefix reaches the orders screen, the kitchen display and the receipt with the same label. “Cheese” and “extra cheese” stay separate cart lines.

Result: cheese costs 60 — “extra cheese” adds 120 to the price. The receipt line and the kitchen ticket show “EXTRA Cheese”, and so does the kitchen display. “No onion” adds 0 and prints as “NO Onion”.

Prefix Default option price Stock
No 0 The option recipe is not deducted
Light half the price Half the option recipe
Extra double the price Double the option recipe
On the side the option price The usual recipe, served separately

Your own factor changes only the price. Stock usage follows the portion: “extra” is two, “light” is half.

An option marked “no” is a removal, not a choice: it counts neither towards the group minimum and maximum nor towards the free extras. A free option covers one normal portion: “extra” on a free extra costs its price × (factor − 1), “light” costs 0.

The POS and the server use the same rule. The server does not accept a prefix the group does not allow: such a line is not checked as a regular one.

The Android, Windows and Ubuntu POS apps and the Android waiter app work the same way: in the options window, under a chosen option, there are “no · light · extra · on the side” buttons; a paid option with a factor other than 1 shows “×2”, “×0.5”; the “Add” button total updates at once. An option marked “no” does not take a slot in the group maximum: with “up to 2” you can tick “Cheese”, “NO Onion” and also “Bacon”. The ticket line, the kitchen ticket, the pre-check and the order card read “EXTRA Cheese” in the app language.

An order with a prefix can be added to and edited from any POS: Android, Windows and Ubuntu keep the line prefixes recorded by the web POS or the storefront and send them back — the kitchen does not lose “no onion”, and stock does not deduct a full portion. The Android, Windows and Ubuntu kitchen screens, including those connected to the bridge over the local network, show “EXTRA Cheese” and “NO Onion”.

Step 4. Pre-select a biscuit with coffee#

Task: a biscuit usually comes with coffee, but the guest can remove it.

  1. Create a group such as “With your coffee” and an option called “Biscuit”.
  2. Set the minimum to 0 and the maximum to 1.
  3. Enable “Pre-selected” for the biscuit and set its surcharge to 0.
  4. In “Stock & tax”, add the biscuit ingredients or a stock item called “Biscuit” with a quantity of one piece.
  5. In the storefront, check both cases: keeping the biscuit and deselecting it.

Result: the biscuit is selected when the choice opens, but it is not compulsory. If coffee cannot be added after removing the biscuit, check the minimum: it must be 0 to allow skipping the entire group.

Pre-selected options are limited by the group's maximum. In a group with a maximum of 1, enabling this flag on another option clears it from the previous option.

Step 5. Send a preference to the kitchen#

Task: separate recurring preferences from a free-text comment on a specific order.

Situation How to handle it
Guests often request no onion Allow the “no” prefix in the group: the cashier or the guest marks “NO Onion” on the “Onion” option (see “Prefixes”). Or a separate option called “No onion”, with surcharge 0 and an empty recipe — or with onion at −15 g if it should leave the deduction
Doneness must always be specified A doneness group with minimum 1 and maximum 1
A one-off request for this order line Use “✎ Comment” at the POS

An option is a prepared answer with a selection rule, its own surcharge and an optional stock recipe. A comment is free text attached to a line, without price or ingredient-usage settings.

Result: the kitchen sees the selected options; exclusions such as “no …” are highlighted on the kitchen screen. If a preference is missing, check that it was selected or entered as a comment on the correct order line.

Task: make “no ketchup” stop deducting 30 g of ketchup. In the option’s “Stock & tax”, add ketchup with quantity −30. On a large portion with a deduction ratio, the amount grows with the portion. The total per product never goes below zero: an extra minus does not return stock.

Step 6. Check the order journey#

Check one item from start to finish before configuring the rest.

Where What to check
Guest storefront The group and rule are visible; a required choice cannot be skipped
POS The options window offers the same choice and applies pre-selected options
POS quick tile The saved choice is validated; defaults are used when no group selection was saved
Kitchen screen Selected options appear on the line; exclusions such as “no onion” are highlighted
Stock after realization Selected option ingredients are included along with the main recipe usage

Result: the guest, cashier and kitchen work with the same selection. If an old selection no longer fits an updated group, open the item and choose its options again. The server also checks guest orders and rejects invalid selections.

Limitations#

  • Groups are configured for each item; there is no shared category-level group setting.
  • An option has its own name, price and recipe. It is not a reference to an existing catalog item.
  • The surcharge and ingredient usage apply to every unit of the item on the order line.
  • The resulting default selection will not exceed the group's maximum.
  • An option with an empty stock recipe creates no additional stock deduction of its own.
  • A preference option does not automatically change the main recipe.
  • The number of free extras cannot exceed the group maximum; with a maximum of 1 (or a single option) the “free” field is not shown — set the surcharge to 0.
  • Prefixes apply to the whole group: individual options cannot have their own set. The factor ranges from 0 to 10.
  • Prefixes can be picked at the web POS, on the storefront, in the QR menu, at the kiosk, in the Android, Windows and Ubuntu POS apps and in the Android waiter app; Cenaly Team for Windows does not offer them yet (but keeps the ones already recorded).
  • A kitchen screen connected to the bridge over the local network shows prefixes once the bridge is updated to the version with this change.
  • The order widget on an external website sells that site's products without option groups, so it has no prefixes.

Troubleshooting#

Symptom Cause What to do
The item cannot be added to an order A group minimum has not been met Select enough options; provide a separate option for declining
Another option cannot be selected The maximum has been reached Deselect another option or change the rule in the item card
Not all defaults were selected There are more defaults than the maximum allows Align the flags with the upper limit
A free option does not use stock It has no recipe or positive ingredient quantity Check “Stock & tax” and the option selected in the order
Usage is higher than expected An ingredient appears in both the main recipe and the option Check both quantities and the number of items on the line
“No onion” did not reduce onion usage The option has no stock components Add onion with a negative quantity in the option’s “Stock & tax”

Frequently asked questions#

Can a free option be required? Yes. The group minimum makes it required; a surcharge of 0 makes it free.

Can a guest remove the pre-selected biscuit? Yes. Set the minimum to 0 to allow skipping the whole group.

Do two coffees incur one biscuit surcharge or two? If both coffees are on one line with the biscuit selected, the surcharge applies twice. The stock recipe is also multiplied by the number of coffees.

Does each dish need its own group? Groups belong to individual item cards. Configure them for each item that needs this choice.

Can the most expensive extra be the free one? No. The cheapest chosen options are free, otherwise a guest could lower the bill by the order of taps. Make a specific option free with surcharge 0.