Advanced Modifier Settings

This guide covers the advanced configuration options for modifier groups — pricing strategies, portion modes, nested choices, menu-specific overrides, and size scaling. These features give you fine-grained control over how modifiers behave across different contexts.


Pricing Strategies

Every modifier group has a pricing strategy that determines how modifier prices are calculated. You can set this when creating a group (under Advanced settings) or change it later on the group's detail page.

None (Default)

Each modifier uses its own default price adjustment. Simple and straightforward.

Modifier Price Adjustment
Add Bacon +$3.00
Add Avocado +$2.00
Extra Cheese +$1.00

Fixed Price

All modifiers in the group share the same fixed price, regardless of which one is selected.

Size Price

Modifier prices vary based on the selected size. This is how pizza toppings typically work — the same topping costs more on a larger pizza.

There are two size pricing modes:

Group-level pricing — One price per size, applied to all modifiers in the group:

Size Topping Price
Regular +$2.00
Large +$3.00
Family +$4.00

Per-modifier pricing — Each modifier has its own price for each size:

Topping Regular Large Family
Pepperoni +$2.00 +$3.00 +$4.00
Bacon +$1.80 +$2.50 +$3.50
Mushrooms +$0.80 +$1.00 +$1.25

Note

Size pricing requires a companion size modifier group on the same recipe. The system looks at which size the customer selected to determine the correct price.

Sequence Price

Prices are based on the order of selection, not which item is picked. Common for "pick your toppings" scenarios where the first topping is free and additional ones cost progressively more.

Example: Pizza Premium Add-Ons

Selection Position Price
1st add-on Free ($0.00)
2nd add-on $1.50
3rd add-on $2.50
4th and beyond $3.00 each

With sequence pricing, it doesn't matter which add-on is picked first — the first one is always free, the second always costs $1.50, and so on.


Portion Modes

Portion modes control whether modifiers can be applied to part of a dish (like "half pepperoni, half mushroom" on a pizza).

Whole Only

Modifiers apply to the entire dish. This is the default and the simplest option. Use this for sizes, required choices, and most add-ons.

Per Portion

Modifiers can be applied to individual portions of the dish. The recipe's max portions setting determines how many portions are available (e.g., 2 for half-and-half, 4 for quarter pizzas).

Example: Half-and-Half Pizza

Portion Modifier
Portion 1 (left half) Add Pepperoni
Portion 2 (right half) Add Bacon

Auto

The system automatically decides based on the group's content. If the group contains size modifiers, it uses "whole only" (you can't have half a size). Otherwise, it allows per-portion.

Portion Pricing

When modifiers are applied per-portion, the pricing strategy determines how the price is calculated:

Portion Pricing How It Works
Full Price Each portion-level modifier costs the full modifier price
Prorated Price is scaled by the portion fraction (e.g., half = 50% of full price)
Percentage A configurable percentage of the full price (e.g., 50%)
Average The average price across all used portions
Highest Portion The most expensive portion determines the price

Size Scaling Modes

When a size modifier changes the portion size (e.g., Regular → Large at 1.5 servings), other modifiers in the same item need to know how to scale. The size scaling mode controls this behavior.

Mode Behavior
Proportional Modifier ingredients scale with the size ratio (Large = 1.5x toppings)
By Servings Modifier uses its own recipe's servings, scaled by the size's serving count
Fixed Modifier amount stays the same regardless of size (e.g., a sauce packet)
Per Modifier Each modifier in the group can have its own scaling mode

Example: Pizza with Per-Modifier Scaling

On a pizza, most toppings should scale proportionally (more pepperoni on a larger pizza), but some items stay fixed (same number of sauce packets regardless of size):

Modifier Scaling Mode Regular Large (1.5x)
Add Pepperoni Proportional 1x portion 1.5x portion
Add Bacon Proportional 1x portion 1.5x portion
Add Mushrooms Fixed 1x portion 1x portion
Sauce Packet Fixed 1 packet 1 packet

Menu-Specific Overrides

The same menu item can have different modifier behavior on different menus. This is controlled through menu-specific assignments.

Price Overrides

A modifier group assignment can have per-menu price overrides. For example, "Extra Protein" might be $2.00 on your lunch menu but $4.00 on the late-night menu.

Availability Overrides

Individual modifiers can be enabled or disabled per menu — so "Gluten-Free Bun" might be available on the dinner menu but not on the catering menu.

Menu-Specific Exclusions

You can exclude an entire modifier group from a specific menu. For example, if substitutions don't make sense on a late-night menu, you can exclude the "Substitutions" group for that menu only — it still appears on all other menus.

Menu-Only Groups

A modifier group can be assigned to a menu item for a specific menu only. This is useful for groups that only make sense in one context — like "Late Night Extras" that only appears on the late-night menu.

Example: Same Item, Two Menus

Menu Item: "Classic Burger"

On "Lunch Menu":
├── Protein Add-Ons (Extra Protein: $2.00)
├── Removals
├── Substitutions
└── Size Options

On "Late Night Menu":
├── Protein Add-Ons (Extra Protein: $4.00) ← price override
├── Removals
├── [Substitutions excluded] ← menu-specific exclusion
├── Size Options
└── Late Night Extras ← menu-only group

Child Modifier Groups (Nested Choices)

A modifier can open a child modifier group — a follow-up question that only appears when that modifier is selected. This creates nested, conditional choices.

How It Works

  1. A modifier in Group A has a child group (Group B) attached to it
  2. When a customer selects that modifier from Group A, Group B's options appear as a follow-up
  3. The child group has its own display type, required mode, and modifiers

Real-World Example: Pizza Crust

Pizza crusts are typically recipe-for-recipe substitutes — the base pizza includes a "Classic Dough" sub-recipe, and each crust option swaps it for a different dough recipe. Child groups add follow-up choices:

Modifier Group: "Pizza Crust" (Required, Single Select)
├── Classic Crust (default) → Swaps: Classic Dough recipe → Classic Dough recipe
└── Thin Crust → Swaps: Classic Dough recipe → Thin Crust Dough recipe
    └── Child Group: "Thin Crust Style" (Required, Single Select)
        ├── Crispy (default)
        └── Soft & Foldable

When the customer picks "Thin Crust", the Classic Dough sub-recipe is removed from the dish and replaced with the Thin Crust Dough recipe's ingredients. The system then prompts them to choose between "Crispy" and "Soft & Foldable". If they pick "Classic Crust", no follow-up appears.

Another Example: Side Salad Dressing

Modifier Group: "Choose Your Side" (Required, Single Select)
├── Side Fries (default)
└── Side Salad
    └── Child Group: "Dressing" (Optional, Single Select)
        ├── Ranch (default)
        └── Vinaigrette (+$1.00)

Setting Up Child Groups

Child groups are managed from the modifier group detail page. When editing a modifier, you can attach an existing modifier group as a child group. The system prevents circular references — Group A can't be a child of one of its own modifiers.

Important

Child groups are separate modifier groups that happen to be triggered by a specific modifier selection. They have their own settings, modifiers, and pricing — they're not just sub-options.


Default Modifier Selections on Components

When building combo menu items, you can pre-select modifiers for each component. This is useful when the same recipe appears multiple times in a combo with different default configurations.

On the component row, click + set defaults to open the defaults panel. Select which modifier option should be pre-selected, then click Save Defaults. To remove all defaults, click Clear All.

The component row shows a badge like "1 default" or "2 defaults" when selections are configured.


Troubleshooting Common Mistakes

"My modifier group doesn't appear on the menu item"

  • Recipe-level group? Check that the recipe is linked to the menu item via a component. Inherited groups only appear when there's a MenuItemComponent connecting them.
  • Archived? Archived modifier groups don't appear. Check the Archived view.
  • Menu-specific exclusion? The group might be excluded for the specific menu you're looking at. Check menu-specific assignments.

"Cost calculations show $0 for an add modifier"

  • The linked recipe might not have ingredients with vendor pricing
  • For ingredient-based adds, the ingredient needs a cost per unit
  • Check Resolving Cost Issues

"Size modifier isn't scaling other groups"

  • The size group must be on the same recipe as the groups you want to scale
  • Check the scaling mode on the group — if it's set to "fixed", modifiers won't scale
  • The size modifier needs either size_servings or size_yield_quantity set

"Substitution pricing isn't working"

  • Substitution pricing must be enabled on the group
  • Charge for defaults must be disabled (they're mutually exclusive)
  • The substitute modifier needs one item on each side: a target (ingredient or recipe) and a replacement (recipe or ingredient with quantity)
  • For ingredient-based replacements, the replacement ingredient needs a cost per unit and the quantity/unit fields must be set
  • For recipe-based replacements, the replacement recipe needs ingredients with vendor pricing

"Per-portion modifiers aren't available"

  • Check the group's portion mode — it must be "per_portion" or "auto"
  • The display type matters: "variation" groups are always whole-only
  • "quantity" groups don't support per-portion mode
  • The recipe needs a max_portions value greater than 1

Common Questions

Q: Can I change a pricing strategy after creating modifiers?
A: Yes. Changing the pricing strategy on a group doesn't delete existing modifiers — it changes how their prices are calculated going forward.

Q: How do I set up per-menu pricing?
A: On the menu item page, add a menu-specific assignment for the modifier group. You can set price overrides in the assignment's price_overrides field.

Q: Can a modifier have multiple child groups?
A: Yes. A single modifier can trigger multiple child groups, each with their own set of follow-up options.

Q: What's the difference between "variation" and "single_select" display types?
A: Both allow picking exactly one option. Variation additionally forces whole-only portion mode (no splitting) and is designed for size/style choices. Single Select allows optional per-portion splitting.

Q: How do portion prices interact with size pricing?
A: Size pricing determines the base modifier price for the selected size. Portion pricing then adjusts that price based on the portion fraction. For example: a topping costing $3.00 at Large size, applied to one half with prorated pricing, costs $1.50.


Next Steps

Last updated: May 19, 2026