Modifier Types & Templates

Each modifier group has one type that determines how all of its options affect
the dish — adding something, removing something, swapping one item for another,
changing the size, or recording a preparation instruction. This guide walks through each type and the templates that
make setup easy.


Modifier Types at a Glance

Every modifier group uses exactly one of five types:

Type What It Does Cost Impact
Add Adds an ingredient or recipe to the dish Increases cost by the added item's value
Remove Takes an ingredient out of the dish Decreases cost by the removed ingredient's value
Substitute Swaps one item for another (ingredient or recipe on either side) Net change: replacement cost minus removed item cost
Size Changes the portion size of the entire dish Scales base cost proportionally
Instruction Records No, Light, Extra, On the side, or custom preparation Optional price and ingredient-quantity effect

One Group per Customer Decision

A modifier group represents one independent decision for the customer, and
every modifier in that group has the group's type. A group cannot mix add,
remove, substitute, size, and instruction behavior.

For example, if a customer chooses a pizza size and can also remove toppings,
create two groups:

  • a Size group for the size choice
  • a Remove group for the independent removal choices

Mixed behavior always requires separate groups, even when the choices apply to
the same menu item.

The template sets the group type when the group is created: Size Options
sets Size, Remove Ingredients sets Remove, Substitutions sets
Substitute, and Add-Ons / Extras, Required Choice, and Quantity
Extras
set Add, and Preparation Instructions sets Instruction. Custom /
Blank
lets you choose one group type.

You can change the group type only while the group has no active modifiers.
After an active modifier has been added, the type is locked so every option
continues to match its group.


Preparation Instructions

Template: Preparation Instructions

Use structured instructions instead of free-text-only notes when the request
should be searchable, priced, printed consistently, or reflected in production.

Each option has an action:

  • No — multiplier 0, removing the target ingredient amount
  • Light — a multiplier such as 0.5
  • Extra — a multiplier such as 1.5, with an optional upcharge
  • On the side — keeps the normal ingredient quantity but changes kitchen
    handling
  • Custom — consistent kitchen wording without a predefined action

The canonical name remains stable for integrations. Optional customer, POS,
kitchen, and receipt names let each surface use the right wording. A routine
kitchen instruction can also be hidden from the receipt.

Instructions can target an ingredient when they change its quantity. They do
not add or replace recipes; use Add or Substitute for those behaviors.

Use the free-form Special Instructions note only for one-off requests. Notes
are limited to 500 characters, follow each ordering channel's note setting, and
are escaped when displayed. They are kitchen text only: they never change
ingredient or production quantities. Use a structured instruction whenever
price, inventory, reporting, or consistent kitchen wording matters.


Size Options

Template: Size Options

Use this when customers choose a portion size. The most common example: Small, Medium, Large.

How It Works

  • Display type: Variation — customers pick exactly one option
  • Required: Yes — every order needs a size
  • Each size modifier specifies how the recipe scales:
    • Servings mode: "1.5 servings" means 1.5x the base recipe
    • Yield mode: "300g" means that specific quantity of the recipe's yield

Real-World Example: Pizza Sizes

Size Servings Price Adjustment Cost Impact
Regular 1.0 srv +$0.00 (default) Base cost
Large 1.5 srv +$4.00 1.5x base cost
Family 2.0 srv +$8.00 2x base cost

Setting Up Size Options

  1. Choose the Size Options template
  2. Name the group (e.g., "Pizza Size")
  3. For each size modifier, set:
    • Name (e.g., "Large")
    • Size servings or yield quantity with unit
    • Price adjustment (the customer-facing price change)
  4. Mark one option as the Default (typically "Regular")

Important

The size modifier's price adjustment is the customer-facing charge. The cost impact is calculated separately from the recipe scaling. A "Large" that's 1.5 servings costs 50% more to make, regardless of how much more you charge for it.


Add-Ons / Extras

Template: Add-Ons / Extras

Use this when customers can add extra toppings, ingredients, or components to their dish.

Two Ways to Define Add Modifiers

Recipe-based adds — The modifier links to a prep recipe. Cost is calculated from the recipe's total cost, scaled by the amount used.

Detail Example
Modifier "Add Bacon"
Linked recipe "Bacon (2 Slices)"
Recipe servings 1 serving of the bacon recipe
Cost Recipe's cost per serving

Ingredient-based adds — The modifier links directly to an ingredient with a specific quantity and unit. No recipe needed.

Detail Example
Modifier "Add Jalapeños"
Linked ingredient Jalapeño Peppers
Quantity 3 pieces
Cost 3 × ingredient's cost per piece

Real-World Example: Burger Toppings

Modifier Group: "Burger Toppings" (Multi Select, Optional)
├── Add Bacon (+$3.00) → Recipe: Bacon (2 Slices), 1 serving
├── Add Avocado (+$2.00) → Recipe: Avocado Spread, 1 serving
├── Extra Cheese (+$1.00) → Ingredient: Cheese, 50g
└── Add Jalapeños (+$0.50) → Ingredient: Jalapeño Peppers, 3 pieces

Setting Up Add-Ons

  1. Choose the Add-Ons / Extras template
  2. Name the group (e.g., "Burger Toppings")
  3. Search and pick recipes from your recipe database to use as add-on options, or
  4. Add custom options with just a name and price (no recipe needed)
  5. Set the price adjustment for each option

Tip: Using the template picker, you can search and filter your existing recipes to quickly find the right ones. You can also add custom options that aren't tied to any recipe — just a name and a price.


Remove Ingredients

Template: Remove Ingredients

Use this to let customers request that specific ingredients be left out. The template can auto-populate from a menu item's recipe.

How It Works

  • The template asks Which menu item is this for?
  • Once you select a menu item, it loads the recipe's ingredients
  • Check the ingredients that should be removable
  • Each checked ingredient becomes a "remove" modifier (e.g., "No Onions")

Real-World Example: Sandwich Customization

Modifier Group: "Customize Sandwich" (Multi Select, Optional Force Show)
├── No Onions ($0.00) → Removes: Onions
├── No Tomato ($0.00) → Removes: Tomato
├── Hold the Mayo ($0.00) → Removes: Mayonnaise
└── No Pickles ($0.00) → Removes: Pickles

Removals typically have no price adjustment (you don't charge less for leaving something out), but they do reduce the calculated food cost.

Setting Up Removals

  1. Choose the Remove Ingredients template
  2. Name the group (e.g., "Customize Sandwich")
  3. Select the menu item to pull ingredients from
  4. Check the ingredients that customers should be able to remove
  5. Click Create Modifier Group

Tip

If you use dynamic removals on the recipe instead, you don't need to create a separate modifier group for removals — the system generates removal options automatically from the recipe's ingredient list.


Substitutions

Template: Substitutions

Use this when customers can swap one item for another — choosing a different crust, swapping regular cheese for vegan, or replacing a protein.

How It Works

Each substitute modifier has two sides:

  1. What gets removed — selected when the reusable group is linked to a
    recipe or menu item. The target is the exact recipe component line, which
    may contain an ingredient or a prep recipe.

  2. What replaces it — the item being added in its place. This can be:

    • A replacement recipe (e.g., thin crust dough recipe, turkey patty recipe)
    • A replacement ingredient with a specific quantity and unit (e.g., 150g vegan cheese, 200g gluten-free penne)

The cost impact is the net difference: replacement cost minus removed item cost.

Substitution Patterns

Pattern Remove Side Add Side Example
Ingredient → Recipe Target ingredient Replacement recipe Regular bun → Gluten-free bun recipe
Recipe → Recipe Target sub-recipe Replacement recipe Classic dough recipe → Thin crust dough recipe
Ingredient → Ingredient Target ingredient Replacement ingredient + quantity Mozzarella → 150g vegan cheese
Recipe → Ingredient Target sub-recipe Replacement ingredient + quantity House sauce recipe → 50g ketchup

Tip

Recipe → Recipe is ideal for pizza crusts, burger patties, sauces, and other components that are their own prep recipes. Ingredient → Ingredient is best for simple swaps like cheese or milk alternatives where you just want to specify a quantity.

Real-World Examples

Pizza Crust (Recipe → Recipe)

The base pizza uses a "Classic Dough" sub-recipe. The customer chooses a different crust — the classic dough recipe is removed and the thin crust dough recipe is added:

Modifier Group: "Pizza Crust" (Required, Single Select)
├── Classic Crust ($0.00) → Default, swaps: Classic Dough recipe → Classic Dough recipe
└── Thin Crust (+$1.00) → Swaps: Classic Dough recipe → Thin Crust Dough recipe

Cheese Options (Ingredient → Ingredient)

The pizza has 200g mozzarella. The customer wants vegan cheese. The modifier removes the mozzarella and adds 150g of the replacement:

Modifier Group: "Cheese Options" (Optional, Single Select)
└── Vegan Cheese (+$1.50) → Removes: Mozzarella, Adds: 150g Vegan Mozzarella

Dietary Substitutions (Ingredient → Recipe)

The classic pattern — remove an ingredient and add a prep recipe:

Modifier Group: "Dietary Options" (Optional Force Show, Single Select)
├── Keep Original ($0.00) → Default
├── Gluten-Free Bun (+$2.00) → Removes: Regular Bun, Adds: GF Bun recipe
└── Vegan Eggs (+$1.50) → Removes: Eggs, Adds: Vegan Scrambled Eggs recipe

Coffee Milk Swap (Ingredient → Ingredient)

A latte has 200ml whole milk. The customer wants oat milk — different quantity because oat milk froths differently:

Modifier Group: "Milk Options" (Optional, Single Select)
├── Whole Milk ($0.00) → Default
├── Oat Milk (+$0.70) → Removes: Whole Milk, Adds: 250ml Oat Milk
└── Almond Milk (+$0.70) → Removes: Whole Milk, Adds: 240ml Almond Milk

Substitution Pricing

When you enable Substitution Pricing on the group, the system uses cost-difference logic instead of fixed prices: the customer pays the difference between the replacement and the original item. The Charge for Defaults setting controls whether the default (original) option has a charge.

Setting Up Substitutions

  1. Choose the Substitutions template
  2. Name the group (e.g., "Pizza Crust", "Cheese Options", "Milk Alternatives")
  3. Define the reusable FROM item: an ingredient or recipe replaced by default
  4. Define the reusable TO replacement: a recipe, or an ingredient with a quantity and unit
  5. When an attached recipe uses a different original component, add a recipe-specific FROM override
  6. Set price adjustments as needed
  7. Mark one option as the Default if this is a required choice (e.g., "Classic Crust")

Important

One reusable substitute can replace different components on different recipes.
For example, “Make Gluten-Free” can target ciabatta on one sandwich and
brioche on another while using the same gluten-free replacement.


Required Choice

Template: Required Choice

Use this when the customer must pick exactly one option to complete their order — like choosing a protein, a base, or a side.

How It Works

  • Display type: Single Select
  • Required: Yes — the customer must pick one
  • Min selections: 1, Max selections: 1

Real-World Example: Build-Your-Own Bowl

Modifier Group: "Choose Your Protein" (Single Select, Required)
├── Grilled Chicken (+$0.00) → Default
├── Steak (+$3.00) → Recipe: Grilled Steak, 1 serving
├── Tofu (+$0.00) → Recipe: Marinated Tofu, 1 serving
└── Shrimp (+$4.00) → Recipe: Sautéed Shrimp, 1 serving

Setting Up Required Choice

  1. Choose the Required Choice template
  2. Name the group (e.g., "Choose Your Protein")
  3. Search and add recipes for each option
  4. Set one option as the Default
  5. Set price adjustments (usually the default is $0.00, upgrades have a positive price)

Quantity Extras

Template: Quantity Extras

Use this for items that can be added multiple times with a quantity stepper — like extra espresso shots or additional sauce portions.

How It Works

  • Display type: Quantity — shows a +/- stepper instead of checkboxes
  • Customers can add 1, 2, 3, or more of the same modifier
  • Each unit adds the modifier's price and cost

Real-World Example: Coffee Shop

Modifier Group: "Extra Shots" (Quantity, Optional)
├── Extra Espresso Shot (+$0.75 each) → Recipe: Espresso Shot
└── Extra Syrup Pump (+$0.50 each) → Recipe: Flavored Syrup

Setting Up Quantity Extras

  1. Choose the Quantity Extras template
  2. Name the group (e.g., "Extra Shots")
  3. Add the items that can be ordered in multiples
  4. Set the per-unit price adjustment

Aggregate Mix-and-Match Quantities

A normal quantity extra means “add three espresso shots.” An aggregate tally
means “these lunch varieties must total 20.” In Selections, choose
Aggregate quantity tally and set the total minimum/maximum, increment,
maximum varieties, and repeat behavior. Each option can also have its own
minimum, maximum, and increment.

Choose Divide one amount across choices when two selected sides share one
included production allowance. Choose Full amount for every choice when
each selection receives a complete portion.


Availability and Operational Display

Groups and options can be visible by Back Office, Storefront, Kiosk, and
Delivery channel, with optional location/day/time rules. Temporarily sold-out
options can remain visible but disabled, sort last, or be hidden according to
the group policy.

For required groups, verify that enough options remain available in every
enabled channel and daypart. The system reports configurations where the
minimum becomes impossible.

Customer, POS, kitchen, and receipt names are independent display labels; they
do not change the canonical modifier name used by imports and integrations.

Size and Selection-Order Pricing

Use Price changes with selection order when the first choices are included
or cheaper and later choices cost more—for example, the first two pizza
toppings are included and each additional topping is $1.50. Use Price
changes by size and selection order
when those levels differ for Small,
Medium, and Large. Configure the included-choice count and the first/additional
price levels for each size; order entry and saved pricing snapshots use the
same resolver.


Custom / Blank

Template: Custom / Blank

Start from scratch with full control. No fields are pre-configured — you choose
one modifier type for the whole group, plus the display type, required mode,
pricing strategy, and other settings.

Use this when none of the other templates fit your use case, or when you want a
specific combination of settings for one type of customer decision. If the
workflow combines independent behaviors, create a separate group for each one.


Choosing the Right Template

I want to... Use Template
Let customers pick a size (S/M/L) Size Options
Offer optional toppings or extras Add-Ons / Extras
Let customers remove ingredients Remove Ingredients
Offer item swaps (crusts, cheeses, proteins, milks) Substitutions
Force a choice (pick your protein) Required Choice
Allow multiple of the same add-on Quantity Extras
Record No / Light / Extra / On the side Preparation Instructions
Something else entirely Custom / Blank

Tip

A template sets the group's modifier type and starting settings. You can
adjust the other settings after creation. You can change the modifier type
only while the group has no active modifiers.


Common Questions

Q: Can a single modifier group contain different modifier types?
A: No. One group has one modifier type, and all of its modifiers must match it.
Create a separate group for each independent customer decision or behavior.

Q: What's the difference between "Optional" and "Optional Force Show"?
A: Both are optional, but Optional Force Show ensures the modifier group is always visible to your team when planning meals, even if no selection is made. Use this for things like "Customize Sandwich" where you want the options visible by default.

Q: Can I reorder modifiers within a group?
A: Yes. On the modifier group detail page, you can drag modifiers to reorder them. The order determines how options are displayed.

Q: What happens if a modifier's linked recipe is archived?
A: The modifier remains but its cost calculation may be affected. It's best to update or archive modifiers when their linked recipes change.


Next Steps

Last updated: August 25, 2026

Keep scrolling to load "Combo Menu Items"