Variants
Offer size options, protein choices, crust types, and other customizations using the variant system.
What Are Variants?
Variants let you offer multiple versions of a single item:
- Pizza sizes - Small, Medium, Large
- Protein options - Chicken, Beef, Tofu
- Preparation styles - Grilled, Fried, Blackened
- Add-ons - With bacon, Extra cheese
A variant structure consists of:
- Parent item - The main menu item (e.g., “Pizza”)
- Variant categories - Types of choices (e.g., “Size”, “Crust”)
- Variant options - Specific choices within a category (e.g., “Small”, “Medium”, “Large”)
Creating Variants
Step 1: Create the Parent Item
- Navigate to Menus > Items
- Click New Item
- Enter the base item details (name, description)
- Save the item
Step 2: Add Variant Categories
- Open the parent item
- Go to the Variants tab
- Click Add Variant Category
- Enter the category name (e.g., “Size”)
- Configure selection rules:
- Required - Diner must select an option
- Optional - Selection is optional
- Multi-select - Allow multiple selections
Step 3: Add Variant Options
- Within the category, click Add Option
- Search for an existing item, or create a new one
- The option is linked to the category
- Repeat for all options
Example setup:
Pad Thai (Parent)
├── Protein (Required, Single-select)
│ ├── Chicken
│ ├── Shrimp
│ ├── Tofu
│ └── Combo
└── Spice Level (Required, Single-select)
├── Mild
├── Medium
└── HotVariant Options as Items
Each variant option is itself a menu item. This enables:
- Individual pricing - Options can have different prices
- Separate allergens - Each option tracks its own allergens
- Reusability - Same option across multiple parents
Creating Option Items
You can:
- Use existing items - Search for items already in your menu
- Create new items - Make items specifically for variants
Option items typically have:
- A simple name (“Chicken”, “Large”)
- Price adjustment (or null if no upcharge)
- Relevant allergens
Allergen Handling
Parent Allergens
The parent item’s allergens derive from ALL options:
Burger (Parent) contains:
├── Classic Burger (Contains: Wheat, Milk)
├── Veggie Burger (Contains: Wheat, Soy)
└── Chicken Burger (Contains: Wheat)
Result: Burger Contains: Wheat, Milk, SoyWhy All Options?
When diners filter by allergen, they need to know if ANY version of the item might contain it. The parent shows all possible allergens so diners investigate further.
Option-Level Detail
When diners select options, they see allergens for their specific choices:
- Diner selects “Veggie Burger”
- Shows: Contains Wheat, Soy
- Not showing: Milk (only in Classic Burger)
Pricing Variants
Base + Adjustment
Parent has a base price; options add or subtract:
Pizza: $12 (base)
├── Small: -$2 → $10
├── Medium: $0 → $12
└── Large: +$3 → $15Option-Only Pricing
Parent has no price; each option has its own:
Pizza: No price
├── Personal (8"): $10
├── Medium (12"): $15
└── Large (16"): $20Free Variants
Options with no price adjustment (e.g., cooking temperature):
Steak: $28
├── Rare: $0
├── Medium-Rare: $0
├── Medium: $0
└── Well-Done: $0Managing Variants
Editing Variant Structure
- Open the parent item
- Go to Variants tab
- Add, remove, or reorder categories
- Add or remove options within categories
- Click Save
Editing Option Details
- Navigate to Menus > Items
- Find and click the option item
- Edit name, price, allergens
- Save changes
- Changes apply everywhere the option is used
Removing a Variant Option
- Open the parent item
- Go to Variants tab
- Click the X next to the option
- Confirm removal
- The option item still exists; only the link is removed
Lineage System
Variant options have a “lineage” that tracks their relationship:
Duplicating Parents
When you duplicate a parent item:
- The copy gets NEW variant options
- Options are independent from the original
- Changes to copy don’t affect original
Shared Options
If you use the same option item in multiple parents:
- Changes affect all parents using it
- Useful for common options (sizes, standard add-ons)
- Be careful when editing shared options
Best Practices
- Name categories clearly - “Size”, “Protein”, “Style”
- Order options logically - Small → Medium → Large, not random
- Keep option names short - “Lg” or “Large”, not “Large (16 inch)”
- Track allergens on options - Don’t rely on parent only
- Review after adding options - Verify derived allergens
Common Patterns
Size Variants
Coffee
├── Size (Required)
│ ├── Small (12oz) - $3
│ ├── Medium (16oz) - $4
│ └── Large (20oz) - $5Protein Variants
Grain Bowl
├── Base Protein (Required)
│ ├── Grilled Chicken
│ ├── Salmon (+$3)
│ ├── Tofu
│ └── No Protein (-$2)Preparation Variants
Salmon
├── Preparation (Required)
│ ├── Grilled
│ ├── Pan-Seared
│ ├── Blackened
│ └── PoachedAdd-On Variants
Burger
├── Add-Ons (Optional, Multi-select)
│ ├── Bacon (+$2)
│ ├── Avocado (+$2)
│ ├── Extra Cheese (+$1)
│ └── Fried Egg (+$1.50)Troubleshooting
”Option already used”
An item can only be used once per variant category. Use a different item or create a copy.
Allergens not showing on parent
- Check that options have allergens marked
- Wait a moment for allergen derivation
- Edit and save the parent to trigger refresh
Option changes not reflecting
If you edit an option item:
- Check you edited the correct item
- The parent’s derived allergens update automatically
- Hard refresh the page if display seems stale