๐Ÿ” 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"],
        "images" : ["https://example.com","https://example2.com"],
        "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

FieldDescription
eventEvent name (always "menu_sync")
event_timeTimestamp when the sync is triggered
branch_idID of the branch this menu belongs to
categoriesMenu categories with names, descriptions, and per-day schedule
itemsIndividual items, linked to categories, with prices and visibility schedule
toppingsOptional selection groups (e.g., size, extras), with constraints
branch_schedule_timeGlobal 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)

Controls whether the branch is visible on a given day.

โœ… 2. Category Schedule (categories[].schedule_time)

Controls whether an entire category (like โ€œBurgersโ€) appears in the menu on a given day.

โœ… 3. Item Schedule (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

  1. On the Menu page, click the Sync button (usually top-right)
  2. A popup will appear
  3. Select your branch from the list
  4. 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.