Payload
Fields
data
data.menu
data.menu.list
data.menu.list.stores[n]
data.menu.list.stores[n].channels[n]
data.menu.list.stores[n].channels[n].schedules[n]
data.menu.categories[n]
data.menu.products[n]
data.menu.products[n].productModifiers[n].overrides[n]
data.menu.modifierGroups[n]
data.menu.modifierGroups[n].modifierOptions[n]
Menu assignment date
categories[n].assignedAt and products[n].additionalInfo.assignedAt indicate when the entity joined the menu. This is membership data, not edit data: it doesn’t change when you edit the price, name, description, image, modifiers, order, or visibility.
Format: ISO 8601 with second precision and a Z suffix — "2026-08-04T12:30:00Z". Always in UTC, never in the store’s zone: the value is the same fact for every store in the menu, which can be in different countries. To display it in local time, use the timezone carried per store in list.stores[n]. No milliseconds — unlike event.createdAt, which does carry them.
There is no
assignedAt at the list or list.stores[n] level: the field describes when the entity joined the menu, not when a store started receiving it.
The same field, with the same semantics, travels in product.updated. It does not travel in product.price_updated or product.availability_changed: those events only carry their delta, and the assignedAt you already have on record stays valid.
Notes
- The payload is a complete menu — not a diff. Replace the entire menu on the downstream system.
- Every
menu.modifierGroups[n].modifierOptions[n].productIdmust reference a product defined inmenu.products. stores[n].channels[n].schedules: time windows when the channel is active for that store. An empty array ([]) means the channel operates 24 hours — no restrictions.categories[].schedules: category-specific schedule if it exists;nullif none.products[].schedules: only when the product has schedulemode: custom;nullif using store hours or no custom schedule.
Removing a menu externally
Fire does not emit a separate delete event for menus. To remove a menu from a downstream system, Fire sends amenu.updated event with menu.categories, menu.products, and menu.modifierGroups as empty arrays. Your system should treat an empty menu as a signal to deactivate or remove the menu externally.
This clearing removes categories and products from the menu. If the menu is published again, they get re-added: they arrive with a new assignedAt, not their original date — same rule as “product removed from the menu and re-added”.

