menus.sync is the batch counterpart to menu.updated. Fire emits it when menus for multiple stores need to be propagated at once — for example, during initial onboarding or after a global menu change that affects many stores.
Fire splits large batches automatically and emits multiple menus.sync events with up to 50 menus each. Each event is delivered and retried independently.
Payload
{
"event": "menus.sync",
"id": "evt_def458",
"created_at": "2025-01-15T15:15:00Z",
"data": {
"account": "1",
"country": "6",
"batchIndex": 1,
"batchTotal": 4,
"menus": [
{
"list": {
"ecommerceChannelId": 123,
"channelReferenceName": "pickup-menu",
"listId": "pickup-menu-t005",
"listName": "Menu App",
"vendorId": "16",
"storeId": "805",
"channelId": "0E049503-85CF-E511-80C6-000D3A3261F3",
"schedules": []
},
"categories": [ ],
"products": [ ],
"modifierGroups": [ ],
"scheduledActivities": [ ]
}
]
}
}
Fields
data
| Field | Type | Description |
|---|
account | string | Account identifier — required by downstream systems |
country | string | Country identifier — required by downstream systems |
batchIndex | integer | Position of this batch (1-based) |
batchTotal | integer | Total number of batches in this sync |
menus | object[] | Array of menu payloads |
Each entry has the same structure as the data object in menu.updated:
| Field | Type | Description |
|---|
list | object | Menu metadata and channel/store association |
categories | object[] | Category tree |
products | object[] | Product catalog |
modifierGroups | object[] | Modifier groups and options |
scheduledActivities | object[] | Future activation/deactivation windows |
Processing
Process each menus.sync event independently. Iterate menus and apply each one to the corresponding downstream system identified by list.storeId and list.channelId.
Use batchIndex and batchTotal to track progress if your system needs to know when a full sync is complete.
Each batch event is retried independently on failure — not the entire sync.
When does Fire emit this event?
- During initial client onboarding
- After a global menu change affecting many stores
- On explicit sync requests triggered from the Fire dashboard
For individual menu changes in normal operation, Fire emits menu.updated instead.