Skip to content

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

AllergenIconColor
Tree nutstree-nuts#C4A66A
Almondstree-nuts#C4A66A
Brazil nutstree-nuts#C4A66A
Cashewstree-nuts#C4A66A
Hazelnutstree-nuts#C4A66A
Macadamiatree-nuts#C4A66A
Pecanstree-nuts#C4A66A
Pistachiostree-nuts#C4A66A
Walnutstree-nuts#C4A66A
Queensland nutstree-nuts#C4A66A
Peanutspeanuts#C69746
Milkmilk#90B2C4
Eggseggs#EFCC60
Fishfish#92C2E0
Crustaceanscrustaceans#E57676
Molluscsmolluscs#E89A77
Glutengluten#DBB467
Wheatgluten#DBB467
Barleygluten#DBB467
Ryegluten#DBB467
Oatsgluten#DBB467
Speltgluten#DBB467
Kamutgluten#DBB467
Soysoy#94D38D
Celerycelery#86E279
Mustardmustard#E0B53B
Sesamesesame#BFA97C
Lupinlupin#E0B365
Sulphitessulphites#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

PropertyValue
Field IDallergens
LabelAllergens
TypeMulti-select
RequiredNo

Description: Select all allergens present in this item.


Dietary Preferences

PropertyValue
Field IDdietary_preferences
LabelDietary Information
TypeMulti-select
RequiredNo

Description: Select applicable dietary labels.


Tags

PropertyValue
Field IDtags
LabelTags
TypeMulti-select
RequiredNo

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 display

Dietary Filter

Customer selects filter (e.g., "Vegan")


Filter menu items


Show only items with matching tag


Items without tag hidden

Relations

Depends On

  • Menu Items: Allergens per item

Affects

  • Online Ordering: Allergen display
  • Kiosk: Allergen display
  • Compliance: EU allergen regulations

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.