Source: https://wpinplate.com/en/docs/add-ons/

# Add-ons

Add-ons let customers adjust a dish: choose a sauce or how well done it is, add cheese, leave out the onion. The kitchen sees the customer's choices in the KDS, on the label and in the order.

## Add-on types

| Type | When to use | Example |
|---|---|---|
| **Yes / no** | An add-on the customer ticks or not, with an optional extra charge | “Cheddar cheese +4.00” |
| **One option** | Choosing one option from a list of visible buttons | How well done: medium, medium well, well done |
| **Dropdown list** | Choosing one option from a longer list | Sauce: burger sauce, BBQ, garlic, sriracha mayo |
| **Quantity (− / +)** | A number of pieces of an add-on with a minimum and maximum, priced per piece | “Extra bacon slice × 2” |
| **Switch A / B** | Choosing one of two options | Bun: brioche / gluten-free +5.00 |
| **Mandatory surcharge** | An amount added to the dish without the customer's choice – always, or only for selected fulfillment methods | A bottle deposit, a pizza box for pickup and delivery |

Every option in the “One option”, “Dropdown list” and “Switch A / B” fields can have its own extra charge. Next to each item the editor shows its type and one sentence on how it works for the customer.

### Packaging: per dish or per order

- **Per dish** – a mandatory surcharge in an add-on template with the **When to add** field, e.g. a pizza box only for **Pickup** and **Delivery**, with no charge for dine-in and QR tables. The amount can depend on the [size](/en/docs/sizes-and-variants/) (a 32 cm box €2, a 40 cm box €3).
- **Once per order** – the [Packaging fee](/en/docs/settings/#packaging-fee) in the settings: one amount per order, depending on the fulfillment method.

How a surcharge for selected methods only works:

- In the menu the customer sees the condition next to the price: “+ €2.00 · Packaging (pickup, delivery)”, and in the dish window “for: pickup, delivery”. The surcharge is not yet added to the price in the dish window – an online customer chooses the fulfillment method only in the summary.
- In the summary, once a method is chosen, the surcharge appears next to the items or disappears (e.g. when switching from delivery to “I'll eat here”), and the total changes straight away.
- At a QR table the method is known from the start: the customer doesn't see a surcharge that doesn't cover it at all.
- The order, KDS, label and emails include the surcharge only if it applied when the order was placed.

A surcharge with no restriction (all methods ticked – the default) works as before: always.

## Add-on settings

| Field | Description |
|---|---|
| **Add-on name** | The name customers and the kitchen see, e.g. “Extra cheese” |
| **Group** | An optional section in the dish window, e.g. “Sauces”, “Extras”. Add-ons with the same group show together under a shared heading |
| **Required** | The customer must make a choice before adding the dish to the cart |
| **Extra charge / Amount / Price per piece** | What the add-on costs – the field name depends on the type: **Extra charge** (added when the customer ticks it; 0 = free), **Amount** (a mandatory surcharge, added without the customer's choice), **Price per piece** (quantity) |
| **When to add** | Mandatory surcharge only: the fulfillment methods it is added for – Pickup, Delivery, Dine-in, QR table. All by default; at least one stays ticked |
| **Option / Extra charge** | For choices from a list: the name of each option and its extra charge |
| **At least / At most** | Quantity only: the range of pieces |
| **Allergens** | The “Allergens: …” link next to a “Yes / no” and “Quantity” item and next to each choice option – see [Add-on allergens](/en/docs/allergens/#add-on-allergens) |
| **Tax class, Fiscal** | Data saved with the add-on in the order for integrations with a cash register. The add-on's price is added to the dish's price and taxed like the dish |

## Add-on templates

Instead of adding the same sauces to every burger separately, create a template and assign it once.

1. Go to **Products → Add-on templates** (or from a tablet: KDS → Manager → Add-ons).
2. Create a template, e.g. “Burger add-ons”, and add the add-ons to it.
3. Click **Assign** next to the template and choose:
   - **To product categories** – all products in the category use the template automatically,
   - **To specific products** – search for products by name or category and click them one after another (the list stays open); the chosen ones show under the search field, and **✕** removes a product from them. **Assign** saves.

   In the categories tab the window shows which categories the template is already assigned to; **✕** next to a category unassigns it. The same window assigns [cross-sell templates](/en/docs/cross-sell/#a-template-for-a-whole-category).

A change in a template applies straight away to all dishes that use it.

Deleting a template takes its add-ons away from all products that used it. This can't be undone.

**Duplicate** next to a template creates a copy “… (copy)” with all its add-ons and prices, assigned nowhere, and opens it in the editor straight away. You change only what should be different – e.g. the prices in “Burger add-ons XL”.

## Add-on prices that depend on size

When dishes have [sizes](/en/docs/sizes-and-variants/), an add-on template can follow them. In the template editor, in the **Sizes (variants)** section:

- **Whole dish – no prices per size** (default) – the add-on costs the same for every size.
- **Choose a size set**, e.g. “Pizza sizes”. This shows:
  - **For sizes** – untick the sizes for which the add-ons from this template should not show. For example, you tick a “Large pizza only” template with cheese-stuffed crust for 40 cm only.
  - next to each item **Same price for all sizes** – untick it and enter a price for each size, e.g. cheese €5 for 32 cm and €7 for 40 cm. An empty field means the add-on (or option) isn't available for that size; 0 means it is free.

The price field above the size prices is the price for products that don't have sizes from this set. A price override in the product editor applies to all sizes of that product.

## Add-ons in the product

In the product editor, in the **Product add-ons (WP InPlate)** field you can:

- **Attach templates** to this particular product,
- **Override the template's add-on settings** for this product only: hide a chosen add-on or change whether it is required,
- **Add your own add-ons** that only this product has.

## What customers see

- In the dish window add-ons are grouped, and the price updates as they choose – together with mandatory surcharges. The base price shows under the price with add-ons.
- For a dish with sizes, the add-on prices change together with the chosen size.
- On the menu card and in cross-sell suggestions the mandatory surcharge shows under the price, e.g. “+ €2.00 · Packaging”, and when it applies only to some methods – with the condition: “(pickup, delivery)”.
- When the button on a card opens the dish window instead of adding straight away (required add-ons or several sizes), it shows an arrow instead of “+”.
- Next to an add-on and an option, its allergens are in brackets, e.g. “Pesto (Tree nuts)”.
- A missing choice in a required add-on is marked, and the dish won't go to the cart.
- **Several pieces with add-ons:** when a customer orders e.g. 3 burgers with add-ons, the dish window takes them through each piece separately (“Next (2 of 3)”). Every burger can be different. The “Skip personalization” button adds the remaining pieces without add-ons.
- **Changes in the cart:** an item with add-ons or with sizes has a **Personalize** link in the cart. It opens a window where the customer changes their choices (including the size) and saves the changes.

## What the kitchen sees

In the KDS, in the order details and on the label, every item lists the chosen add-ons, e.g. “+ Sauce: Garlic mayo”, “+ Cheddar cheese: Yes”. People with permission to see prices also see the extra charges and the base price.

## Price security

The server recalculates add-on prices and surcharges when the order is placed, including whether a surcharge applies to the chosen fulfillment method. Changing a price in the customer's browser has no effect on the order amount, and options that aren't in the add-on are ignored.

The dish window enforces required choices: without them the dish won't go to the cart. That's why buttons that add straight away – “+” on a card and in cross-sell suggestions – open the dish window for a dish with required add-ons.
