Appearance
Allergens & Dietary Information
Overview
Allergen and dietary information helps customers identify items that match their dietary requirements or avoid allergens.
Key Purpose: Display allergen warnings and dietary labels on menu items.
Purpose
This page lets you manage allergen warnings, dietary preference labels, and dietary supplement information on menu items so customers can identify items matching their dietary needs or avoid allergens.
Key Concepts
- Allergens: A fixed list of 29 EU-regulated allergens (e.g., Gluten, Crustaceans, Eggs), each with a unique icon and color for customer-facing display
- Dietary Preferences: 26 options (e.g., Vegan, Gluten-free, Halal, Kosher) describing an item's dietary compatibility
- Dietary Supplements: 9 options (e.g., Protein, Caffeine, Calcium) describing nutritional additives — stored separately from dietary preferences but merged into customer-facing "tags"
- Item Tags: Customer-facing labels generated by merging dietary preferences and dietary supplements — not a separate stored field
- AI Suggestions: The backoffice can suggest allergens, preferences, and supplements from the global item database, which users can accept or dismiss individually
Actions
Assign Allergens to an Item
Open a menu item, go to the Product Specifications section, and select allergens from the multi-select list. All 29 options are available with visual icons.
Assign Dietary Preferences
In the same Product Specifications section, select applicable dietary preferences (e.g., Vegan, Halal) from the 26 available options.
Assign Dietary Supplements
Select applicable dietary supplements (e.g., Protein, Caffeine) from the 9 available options. These display as tags alongside dietary preferences on customer-facing channels.
Use AI Suggestions
When editing an item, the system can suggest allergens, preferences, and supplements based on matching items in the global item database. Accept or dismiss suggestions individually, or approve all at once.
Remove Allergen/Preference/Supplement
Click the remove button on any assigned allergen, preference, or supplement to remove it from the item.
Business Rules
- All allergen-related fields are optional — items can be saved without any allergens, preferences, or supplements
- The allergen list is hardcoded in backend Constants and cannot be customized by merchants — only the 29 predefined EU allergens are available
- Customer-facing APIs (kiosk, online ordering) return allergens with icon metadata (
{label, icon, fill}), while the backoffice API returns plain string arrays - Item tags shown to customers are a merge of dietary preferences and dietary supplements via the
getTags()method — they are not stored as a separate field - No server-side validation enforces that allergen values match the predefined Constants list; the frontend constrains the choices via the multi-select component
Location
- Backoffice Route:
/menus/items/:id(per item) - Backend Controller:
app/Http/Controllers/Api/ItemController.php - Vue Component:
src/views/items/forms/AllergenSection.vue
Allergen List
EU Regulated Allergens
| Allergen | Icon | Color |
|---|---|---|
| Tree nuts | tree-nuts | #C4A66A |
| Almonds | tree-nuts | #C4A66A |
| Brazil nuts | tree-nuts | #C4A66A |
| Cashews | tree-nuts | #C4A66A |
| Hazelnuts | tree-nuts | #C4A66A |
| Macadamia | tree-nuts | #C4A66A |
| Pecans | tree-nuts | #C4A66A |
| Pistachios | tree-nuts | #C4A66A |
| Walnuts | tree-nuts | #C4A66A |
| Queensland nuts | tree-nuts | #C4A66A |
| Peanuts | peanuts | #C69746 |
| Milk | milk | #90B2C4 |
| Eggs | eggs | #EFCC60 |
| Fish | fish | #92C2E0 |
| Crustaceans | crustaceans | #E57676 |
| Molluscs | molluscs | #E89A77 |
| Gluten | gluten | #DBB467 |
| Wheat | gluten | #DBB467 |
| Barley | gluten | #DBB467 |
| Rye | gluten | #DBB467 |
| Oats | gluten | #DBB467 |
| Spelt | gluten | #DBB467 |
| Kamut | gluten | #DBB467 |
| Soy | soy | #94D38D |
| Celery | celery | #86E279 |
| Mustard | mustard | #E0B53B |
| Sesame | sesame | #BFA97C |
| Lupin | lupin | #E0B365 |
| Sulphites | sulphites | #8AA0AA |
Dietary Preferences
Available Labels
- Alcohol-free
- Dairy-free
- Decaffeinated
- Gluten-free
- Halal
- High protein
- Keto
- Kosher
- Lactose-free
- Low fat
- Low sodium
- No added MSG
- No artificial colors
- No artificial flavors
- No artificial sweeteners
- No preservatives
- Non-GMO
- Nut-free
- Organic
- Paleo
- Single origin
- Soy-free
- Sugar-free
- Vegan
- Vegetarian
- Wholegrain
Item Tags
Quick tags for common dietary information:
- Vegan
- Vegetarian
- Gluten-free
- Nut-free
- Kosher
- Halal
- Dairy-free
Fields
Allergens
| Property | Value |
|---|---|
| Field ID | allergens |
| Label | Allergens |
| Type | Multi-select |
| Required | No |
Description: Select all allergens present in this item.
Dietary Preferences
| Property | Value |
|---|---|
| Field ID | dietary_preferences |
| Label | Dietary Information |
| Type | Multi-select |
| Required | No |
Description: Select applicable dietary labels.
Tags
| Property | Value |
|---|---|
| Field ID | tags |
| Label | Tags |
| Type | Multi-select |
| Required | No |
Description: Quick dietary tags shown on item.
Customer Impact
Online Ordering
- Allergen icons displayed on item cards
- Filter menu by dietary preference
- Allergen warning at checkout
- Full allergen list in item details
Kiosk
- Allergen icons on item display
- Filter by dietary preference
- Warning before adding to cart
Receipts
- Allergen information on order confirmation
- Special dietary notes
Business Logic
Allergen Display
Item has allergens?
├── Yes → Show allergen icons
│ Show warning text
│ Include in item details
│
└── No → No allergen displayDietary Filter
Customer selects filter (e.g., "Vegan")
│
▼
Filter menu items
│
▼
Show only items with matching tag
│
▼
Items without tag hiddenRelations
Depends On
- Menu Items: Allergens per item
Affects
- Online Ordering: Allergen display
- Kiosk: Allergen display
- Compliance: EU allergen regulations
Related Features
Examples
Item with Allergens
json
{
"item": {
"name": "Margherita Pizza",
"allergens": ["Gluten", "Milk"],
"dietary_preferences": [],
"tags": ["Vegetarian"]
}
}Vegan Item
json
{
"item": {
"name": "Garden Salad",
"allergens": [],
"dietary_preferences": ["Vegan", "Gluten-free", "Dairy-free"],
"tags": ["Vegan", "Gluten-free"]
}
}Complex Item
json
{
"item": {
"name": "Pad Thai",
"allergens": ["Peanuts", "Eggs", "Fish", "Soy", "Crustaceans"],
"dietary_preferences": ["Gluten-free"],
"tags": []
}
}Allergen Display UI
┌─────────────────────────────────────┐
│ Margherita Pizza €12.50│
│ │
│ Fresh mozzarella, tomato, basil │
│ │
│ 🌾 Gluten 🥛 Milk │
│ 🥬 Vegetarian │
└─────────────────────────────────────┘FAQs
- "Can I add custom allergens not in the predefined list?" No, the allergen list is hardcoded in backend Constants. Only the 29 EU-regulated allergens are available. Contact Upvendo support if you need additional allergens.
- "What is the difference between dietary preferences and dietary supplements?" Dietary preferences (26 options) describe dietary compatibility (e.g., Vegan, Kosher). Dietary supplements (9 options) describe nutritional additives (e.g., Protein, Caffeine). Both display as tags to customers.
- "How are allergen icons displayed to customers?" The
getAllergensWithIcon()method maps allergen labels to icon names and hex colors. Each allergen shows as a colored icon on the kiosk and online ordering menu. - "Are allergens required when creating an item?" No, all allergen-related fields are nullable. Items can be saved without any allergens, preferences, or supplements.
- "Where do the AI suggestions come from?" From the global item database managed via the Cloudflare D1 proxy. The system matches your item name against the database and suggests allergens/preferences/supplements from similar items.
Troubleshooting
- Allergens not showing on kiosk/online ordering → Verify the item has allergens assigned in the Product Specifications section. Changes require a menu reload on devices.
- AI suggestions not appearing → The item database may not have a matching entry for your item name. Try editing the item name to a more common term.
- Missing dietary supplement options → Dietary supplements are a separate field from dietary preferences. Check the third multi-select in Product Specifications.