Saltar al contenido principal

Set up Menu Pull

Prerequisites

The response on Menu Pull request must return the menu(s) as an array, even if there is only one menu being returned. The menu.json must be in the correct format and includes:

  • "open_hours"
  • "special_hours"
  • "id" (external menu id/Menu UUID) field is required if event type is MenuUpdate

Overview

Partners are required to implement an endpoint that allows DoorDash to pull menus directly. Menu Pull is a vital component of both efficient merchant onboarding and ensuring ongoing menu freshness.

This functionality streamlines the onboarding process by enabling DoorDash to configure new stores and retrieve their menus simultaneously, eliminating the need for partners to coordinate a separate menu push. Additionally, Menu Pull plays a crucial role in maintaining up-to-date menu information for stores post-launch.

Get Started


Step 1: Set up Endpoint Specification to Pull Menus

This endpoint can be set up within Developer Portal by setting up a webhook subscription. The Event type that should be used is Menu Request. This endpoint will allow Doordash to trigger the ingestion or updates of menus. The set up of the endpoint is:

GET /{merchant_pull_menu_endpoint}/{location_id}

location_id is the unique Merchant Supplied ID that is configured for that store location.

Please note: When adding the endpoint into Developer Portal, please ensure that the URL is entered in the correct format to append ‘/locationID’ (e.g. do not include the ‘/’)

Step 2: Ensure the menu.json has the correct format

As mentioned above, the Menu Pull request must return the menu(s) as an array for the Pull to be successful.

Below is a sample menu.json for Menu Pull:

{
"store": {
"merchant_supplied_id": "",
"provider_type": ""
},
"menus": [
{
"id": "string",
"reference": "string",
"open_hours": [
{
"day_index": "MON",
"start_time": "00:00",
"end_time": "23:59"
}
],
"special_hours": [
{
"date": "2000-01-01",
"closed": true,
"start_time": "00:00",
"end_time": "23:59"
}
],
"menu": {
"name": "string",
"subtitle": "string",
"merchant_supplied_id": "string",
"active": true,
"categories": [
{
"name": "string",
"subtitle": "string",
"merchant_supplied_id": "string",
"active": true,
"sort_id": 0,
"items": [
{
"name": "string",
"description": "string",
"merchant_supplied_id": "string",
"active": true,
"is_alcohol": true,
"is_bike_friendly": true,
"sort_id": 0,
"price": 0,
"tax_rate": "string",
"extras": [
{
"name": "string",
"description": "string",
"merchant_supplied_id": "string",
"active": true,
"sort_id": 0,
"min_num_options": 0,
"max_num_options": 0,
"num_free_options": 0,
"min_option_choice_quantity": 0,
"max_option_choice_quantity": 0,
"min_aggregate_options_quantity": 0,
"max_aggregate_options_quantity": 0,
"options": [
{
"name": "string",
"description": "string",
"merchant_supplied_id": "string",
"active": true,
"price": 0,
"default": true,
"sort_id": 0,
"tax_rate": "string",
"extras": []
}
]
}
]
}
]
}
]
}
}
]
}

Partners are expected to return appropriate response codes if the Menu Pull request fails for streamlined triage and escalation if needed.

Step 3: Allow Menu Pull to be used for Menu updates

Updating Menus (Pull)

GET /{merchant_pull_menu_endpoint}/{location_id}[?ids=external_menu_ids]

Partners can utilize the same pull endpoint to allow DoorDash to request menu updates based on a list of external menu ids. This allows for flexibility on the DoorDash side to ensure menus are in sync. The recommendation is that Push logic is still built out on the provider’s side to automatically trigger menu updates when changes are made within the POS.

Please Note: The "id": "menu-id" (UUID) field is required for Updating Menus via Menu Pull & it must be included within the menu payload.

Refer to the Menu Update (Pull) section in the Create & update menus page for a sample Menu Update (pull) payload.

Step 4: Set up Menu status webhook

Once our service is finished creating your menu or if the menu creation fails, the service will send out a POST webhook request with the menu creation result. You need to create an endpoint and provide us with its URL in order to receive the webhook notification. This request will contain the same "reference" as the response to your initial request, allowing you to keep track of which requests have been completely processed.

This endpoint can be set up within Developer Portal by setting up a webhook subscription. The Event type that should be used is Menu Status.


Progress Check

Partners will get a menu job webhook call for each menu upon menu ingestion completion from DoorDash. Reference of menu job webhook format:

{
"event":{
"type":"MenuCreate",
"status":"Success",
"reference":"reference_id_1234"
},
"store":{
"merchant_supplied_id":"location_1"
},
"menu":{
"id":"e7018a50-2308-4a81-bd88-330ea99a60ae"
}
}

The menu.id in that webhook must be stored and should be used for the subsequent menu updates.

We require the reference field in menus.reference field in the menu pull response. Doordash will include the reference on the menu job webhook for merchants to correlate menu pull and menu job status webhooks.

Auto Menu Pull

Auto Menu Pull is a feature designed to ensure that menu data used on the DoorDash Marketplace remains up-to-date. This service automatically pulls menu data from partners if they have not pushed an update in the last 24 hours. By maintaining fresh menu data, we aim to improve service quality and both Customer and Merchant satisfaction.

Key Benefits

  • Ensures that menu data used on the DoorDash Marketplace remains up-to-date.
  • Supports better order accuracy by reducing outdated menu data, leading to fewer order cancellations
  • Works with existing Menu Pull API implementations without additional integration work

How It Works

  • Runs every 24 hours to check the last menu update timestamp from each integration partner.
  • If no update has been received in the past 24 hours, the service will pull the latest menu data using the partner's existing Menu Request endpoint.
  • The response structure remains consistent with the standard menu data model. No changes to existing models are anticipated, but validation is required.

Configuration & Dependencies

  • Execution Process: Scheduled automated process (cron job)

  • Frequency: Every 24 hours

API Requirements

Partners must provide a functional Menu Pull API endpoint.

Support

For support or questions, contact our Integrations Support team via the Developer Portal or reach out to your DoorDash Technical Account Manager.


Modified: 5/08/2023