menu.updated event with the complete catalog ready to be forwarded downstream.
The payload is self-contained. You don’t need to call additional endpoints to get the menu data — everything is included.
Processing
Verify the signature
Extract the
X-Fire-Signature header and validate it against the raw request body using your integration’s signing secret. The secret is generated when you register the endpoint in the Fire dashboard under Aggregator integrations. See Authentication for the full verification process.Acknowledge immediately
Return
200 OK before doing any processing. Fire will retry if it doesn’t receive a response in time.Identify the menu
Use
data.menu.list.storeId and data.menu.list.channelId to determine which store and channel this menu belongs to.Payload
menu.updated for the full schema with all fields and types.
Menu structure
data.menu.list
Identifies which store and channel the menu belongs to. Use storeId and channelId as the key to upsert in your downstream system.
The schedules field on list defines the time windows when the menu is active. Always present; null if no schedule is defined.
data.menu.categories
List of visible categories. Each category includes productListing — an array with the productId of its products and their display positions.
Categories can also have their own schedules that restrict their visibility to certain hours, independently of the menu schedule.
data.menu.products
A flat list of all items in the menu — both top-level products and options used in modifier groups. The type field indicates each item’s role:
| Type | Description |
|---|---|
PRODUCT | Sellable top-level item |
MODIFIER | Modifier option (e.g. size, extra ingredient) |
COMPLEMENT | Complement included in a selection |
COMBO | Product whose price depends on the customer’s selections |
COMBO products, priceInfo.price is always 0. Use priceInfo.referencePrice as the header price. Modifier groups on a combo may include per-option price overrides.
See the Products structure guide for full handling of COMBOs and modifier overrides.
data.menu.modifierGroups
Defines option groups and their selection rules. Each group references its options via productId, which must exist in products.
| Field | Description |
|---|---|
minOptions | Minimum selections required (0 = optional group) |
maxOptions | Maximum selections allowed |
type | RADIO (single choice) or CHECKBOX (multiple) |
groupId
Events emitted in the same publication run share the samegroupId. You can use it to correlate related events, but it is not required for processing — each event is independent and self-contained.
Removing a menu
Fire does not emit a separate delete event. To signal the removal of a menu, Fire sends amenu.updated with categories, products, and modifierGroups as empty arrays. Treat an empty menu as a signal to deactivate or remove it in your downstream system.

