Recipe Modifiers
The recommended way to set up modifiers is to define them directly on a recipe. When you do, every menu item that uses that recipe automatically inherits the modifier groups — no manual assignment needed. Change the recipe's modifiers once, and all connected menu items stay in sync.
Why Define Modifiers on Recipes?
Consider a "Margherita Pizza" recipe that appears on your lunch menu, dinner menu, and catering menu. If you define "Pizza Toppings" and "Pizza Size" modifier groups on the recipe itself:
- All three menu items automatically get those modifier groups
- If you add a new topping option, it appears everywhere instantly
- You manage modifiers in one place instead of three
- Cost calculations stay consistent across menus
Recipe: Margherita Pizza
├── Sub-recipe ingredient: "Classic Dough" (the base crust)
├── Modifier Group: "Pizza Size" (Required)
│ ├── Regular, Large, Family
├── Modifier Group: "Pizza Toppings" (Optional)
│ ├── Add Pepperoni, Add Bacon, Add Mushrooms
├── Modifier Group: "Pizza Crust" (Required, recipe-for-recipe substitutes)
│ ├── Classic Crust (swaps Classic Dough → Classic Dough)
│ └── Thin Crust (swaps Classic Dough → Thin Crust Dough)
└── Modifier Group: "Cheese Options" (Optional, ingredient-for-ingredient substitute)
└── Vegan Cheese (swaps Mozzarella → 150g Vegan Mozzarella)
↓ Auto-inherits to...
Menu Item: "Margherita Pizza" (Lunch Menu) → gets all 3 groups
Menu Item: "Margherita Pizza" (Dinner Menu) → gets all 3 groups
Menu Item: "Margherita Pizza" (Catering Menu) → gets all 3 groups
Tip
You can still add extra modifier groups directly on a menu item alongside the inherited ones. For example, a "Choose Your Side" group that only applies to the dinner menu version.
The Dish Modifications Section
On any recipe page, you'll find the Dish Modifications section. This is where you create and manage recipe-level modifier groups.
What You'll See
When no modifier groups exist yet, an empty state explains the concept:
"Define what customers can change about this dish — add extras, remove ingredients, choose sizes, or swap items. These will automatically apply to any menu item that uses this recipe."
Click Add Your First Modifier Group to get started.
The Cost Summary Panel
Once you have modifier groups with modifiers defined, a cost summary panel appears at the top showing:
| Metric | What It Shows |
|---|---|
| Base Cost | The recipe's total food cost without modifications |
| Max Add-Ons | The most that add-type modifiers could increase the cost |
| Max Removals | The most that remove-type modifiers could decrease the cost |
| Cost Range | The full range from (base minus max removals) to (base plus max add-ons) |
This gives you an at-a-glance view of the cost impact of all possible modifications.
Creating Modifier Groups on a Recipe
- Open your recipe and scroll to Dish Modifications
- Click Add Group
- The Create Modifier Group modal opens with the template picker
- Select a template (e.g., Add-Ons / Extras, Remove Ingredients, Size Options)
- Enter a Group Name (e.g., "Burger Toppings")
- Follow the template-specific steps to add modifiers (see Modifier Types & Templates)
- Click Create Modifier Group
The group appears in the Dish Modifications section with an expandable panel showing all its modifiers, their types, price adjustments, and cost impacts.
The Modifier Groups List
Each group in the list shows:
- Group name (click to open the full detail page)
- Display type badge (Single Select, Multi Select, Variation, Quantity)
- Required badge if the group requires a selection
- Number of options in the group
- Price range across all modifiers
- Inheritance count — how many menu items have inherited this group (shown with a sync icon)
Click the expand arrow to see a table of all modifiers with their type, price adjustment, and cost impact.
How Auto-Inheritance Works
When a recipe has modifier groups and you add that recipe to a menu item (by creating a menu item component), the system automatically:
- Finds all modifier groups linked to that recipe
- Creates inherited assignments on the menu item, scoped to the specific recipe component
- Marks them as
inheritedso you can tell them apart from manually added groups
This happens instantly — you don't need to do anything extra. The inherited groups behave exactly like manually assigned ones, with the same pricing, availability, and selection rules.
The Inheritance Badge
On the recipe's Dish Modifications page, each group shows an inheritance count badge (a sync icon with a number). This tells you how many menu items have inherited that group. For example, if "Pizza Toppings" shows a badge of 3, it means three menu items are using this group through inheritance.
Editing Inherited vs. Source Groups
- To change the modifier group for all menu items: Edit the group on the recipe page (the source). Changes propagate to all inherited assignments.
- To customize for a specific menu item: Go to that menu item's detail page and adjust the inherited assignment's price overrides or availability overrides. The source group stays unchanged.
Note
If you archive a recipe-level modifier group, its inherited assignments on menu items are automatically removed.
Dynamic Ingredient Removals
Below the Dish Modifications section, you'll find the Dynamic Removals (Recipe Defaults) panel. This lets customers request that specific ingredients be left out of a dish.
Enabling Removals
- Toggle Allow ingredient removals to on
- The system lists all ingredients from the recipe
- Mark any ingredients that are essential to the dish (cannot be removed) using the toggles
Each ingredient you mark as essential shows an Essential badge and will not appear as a removable option.
How It Works
| Setting | Effect |
|---|---|
| Allow ingredient removals off | No removal options appear for this recipe |
| Allow ingredient removals on | All ingredients are removable by default |
| Non-removable (Essential) toggled on | That ingredient cannot be removed — it's locked in |
For example, with a burrito recipe:
- When "Allow ingredient removals" is enabled, all ingredients start as non-removable
- You then toggle on specific ingredients like cheese, beans, rice to make them removable
- Tortilla stays off (non-removable) — it's the foundation of the dish
When a menu item inherits this recipe, the removal settings carry over. The menu item's component inherits both the removals_enabled flag and the list of removable ingredients.
Tip: These are default settings. You can override removal settings per menu item on the menu item page if needed.
Click Save Removal Settings after making changes.
Recipe-Level vs. Standalone: When to Use Each
| Scenario | Recommendation |
|---|---|
| Modifier applies to the dish itself (toppings, sizes, ingredient swaps) | Recipe-level — define on the recipe |
| Modifier applies regardless of recipe (e.g., "Add a Side", "Utensils") | Standalone — assign directly to menu items |
| Same modifier group used across many menu items with the same recipe | Recipe-level — one definition, many inheritances |
| Different menus need different modifier options for the same item | Standalone with menu-specific overrides |
| One-off modifier for a special menu item | Standalone — no need to clutter the recipe |
Common Questions
Q: If I add a modifier group to a recipe that's already used in menu items, do those items get the group automatically?
A: Yes. When you create a recipe-level modifier group, the system finds all existing menu item components that use that recipe and creates inherited assignments for them.
Q: Can I remove an inherited modifier group from a specific menu item?
A: You can't delete the inherited assignment directly, but you can exclude it for a specific menu using menu-specific overrides. See Advanced Modifier Settings.
Q: Do removal settings inherit to menu items?
A: Yes. When a menu item component is created for a recipe, it inherits the recipe's removals_enabled setting and the list of removable ingredients. You can override these on the menu item's component.
Q: What's the difference between a "remove" modifier and a dynamic removal?
A: A "remove" modifier is a predefined option in a modifier group (e.g., "No Onions" as a modifier). Dynamic removals automatically generate removal options from the recipe's ingredient list — no manual setup needed. Dynamic removals are simpler but less configurable.
Q: Can a recipe have both modifier groups and dynamic removals?
A: Yes, and they work together. Modifier groups handle structured choices (add-ons, sizes, substitutions), while dynamic removals handle the simple "hold the X" requests.
Next Steps
- Modifier Types & Templates — Deep dive into Size Options, Add-Ons, Substitutions, and more
- Advanced Modifier Settings — Pricing strategies, portion modes, and nested choices
- Building Menus — How menus and menu items work
Last updated: May 19, 2026