πŸ” 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

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.