π Menu Sync
π§Ύ Description
This document describes the internal structure of the menu_sync
event that Blend sends to delivery platforms.
It contains the full menu structure, including categories, items, toppings, and their schedule visibility.
This data is used to update the menu on delivery partner systems via their API or webhook URL.
π Trigger
- Triggered manually by the merchant from the Blend dashboard
π§© JSON Payload
{
"event": "menu_sync",
"event_time": "2025-01-01 00:00:00",
"branch_id": "14589",
"payload": {
"categories": [
{
"id": "1",
"name": {
"ar": "Ψ³Ψ§ΩΨ―ΩΨͺΨ΄Ψ§Ψͺ",
"en": "sandwiches"
},
"description": {
"ar": "Ψ³Ψ§ΩΨ―ΩΨͺΨ΄Ψ§Ψͺ",
"en": "sandwiches"
},
"schedule_time": {
"friday": { "start": "10:00", "end": "22:00", "is_visible": true },
"monday": { "start": "10:00", "end": "22:00", "is_visible": true },
"sunday": { "start": "10:00", "end": "22:00", "is_visible": true },
"tuesday": { "start": "10:00", "end": "22:00", "is_visible": true },
"saturday": { "start": "10:00", "end": "22:00", "is_visible": true },
"thursday": { "start": "10:00", "end": "22:00", "is_visible": true },
"wednesday": { "start": "00:00", "end": "00:00", "is_visible": false } // this day will be off
}
}
],
"items": [
{
"id": "1",
"name": {
"ar": "Ψ³ΩΨ―ΩΨͺΨ΄ Ψ΄Ψ§ΩΨ±Ω
Ψ§",
"en": "shawarma sandwich"
},
"description": {
"ar": "Ψ³ΩΨ―ΩΨͺΨ΄ Ψ΄Ψ§ΩΨ±Ω
Ψ§",
"en": "shawarma sandwich"
},
"price": 150.00,
"is_available" : true, // true or false
"categories": ["1"],
"schedule_time": {
"friday": { "start": "10:00", "end": "22:00", "is_visible": true },
"monday": { "start": "10:00", "end": "22:00", "is_visible": true },
"sunday": { "start": "10:00", "end": "22:00", "is_visible": true },
"tuesday": { "start": "10:00", "end": "22:00", "is_visible": true },
"saturday": { "start": "10:00", "end": "22:00", "is_visible": true },
"thursday": { "start": "10:00", "end": "22:00", "is_visible": true },
"wednesday": { "start": "00:00", "end": "00:00", "is_visible": false } // this day will be off
}
}
],
"toppings": [
{
"id": "1",
"name": {
"ar": "Ψ§ΩΨΨ¬Ω
",
"en": "size"
},
"is_required": true,
"min": 1,
"max": 1,
"max_per_quantity": 1,
"options": [
{
"id": "1",
"name": {
"ar": "Ψ΅ΨΊΩΨ±",
"en": "small"
},
"price": 100
},
{
"id": "2",
"name": {
"ar": "ΩΨ¨ΩΨ±",
"en": "large"
},
"price": 150
}
],
"items": ["1"]
}
],
"branch_schedule_time": {
"friday": { "start": "10:00", "end": "22:00", "is_visible": true },
"monday": { "start": "10:00", "end": "22:00", "is_visible": true },
"sunday": { "start": "10:00", "end": "22:00", "is_visible": true },
"tuesday": { "start": "10:00", "end": "22:00", "is_visible": true },
"saturday": { "start": "10:00", "end": "22:00", "is_visible": true },
"thursday": { "start": "10:00", "end": "22:00", "is_visible": true },
"wednesday": { "start": "00:00", "end": "00:00", "is_visible": false } // this day will be off
}
}
}
π Field Descriptions
Field | Description |
---|---|
event | Event name (always "menu_sync" ) |
event_time | Timestamp when the sync is triggered |
branch_id | ID of the branch this menu belongs to |
categories | Menu categories with names, descriptions, and per-day schedule |
items | Individual items, linked to categories, with prices and visibility schedule |
toppings | Optional selection groups (e.g., size, extras), with constraints |
branch_schedule_time | Global open/close schedule for the branch itself |
π§ Advanced Feature: Schedule Visibility
Blend provides per-day scheduling for visibility at 3 levels:
β
1. Branch Schedule (branch_schedule_time
)
branch_schedule_time
)Controls whether the branch is visible on a given day.
β
2. Category Schedule (categories[].schedule_time
)
categories[].schedule_time
)Controls whether an entire category (like βBurgersβ) appears in the menu on a given day.
β
3. Item Schedule (items[].schedule_time
)
items[].schedule_time
)Overrides category-level visibility β used to hide/show individual items by day.
Example: An item may be visible only on weekends, even if the category is always shown.
Each schedule_time
object uses the following format:
"friday": {
"start": "10:00",
"end": "22:00",
"is_visible": true
}
β
Notes
- Time values are in
HH:MM
24-hour format - Prices are numeric (not string)
- Multi-language fields use
{ "en": "β¦", "ar": "β¦" }
- This JSON is sent to delivery partners via POST request
π§ How to Trigger Menu Sync from Dashboard (UI Flow)
This section explains how to use the Blend dashboard to manually sync your menu to a delivery app (for partners without API access).
π Step 1: Login
Go to: https://bm-staging.tryblend.net/
Enter the credentials provided by Blend.
π Step 2: Create Your Menu
- From the sidebar, go to Items
- Click Plus Button
π Step 3: Build Your Menu
- Add Categories
- Add Items under those categories
- Add Toppings and link them to items
π Step 4: Sync the Menu
- On the Menu page, click the Sync button (usually top-right)
- A popup will appear
- Select your branch from the list
- Confirm and press Sync
β
Done!
Blend will now push the complete menu to your configured webhook.
No need for any API β Blend handles everything from here.
Updated 24 days ago