Set up Inventory Pull
Overview
As part of the integration workflow, partners can implement an endpoint that allows DoorDash to pull and replace all StoreItems sold in a store location. This effectively refreshes the item availability and pricing visible to Customers shopping on DoorDash.
The response from this endpoint should match BatchAddOrUpdateStoreItemRequest request model.
Partners can trigger the job creating a StoreItem pull job by POST /api/v2/jobs with CreateJob request by using one of the two job types:
- "PULL_STORE_ITEMS" - if you can return all items in one pull call for one store
- "PULL_STORE_ITEMS_WITH_PAGINATION" - if cannot return all items in a single pull and need to use a paginated version
The job parameters in CreateJobRequest should match CreatePullStoreItemsJobParameters.
Note: When the pull job runs, DoorDash replaces the store's existing inventory record with the response from your endpoint. This is not a differential update — your response must contain every item (active and inactive) for the store.
Get Started
Step 1: Set up Endpoint Specification to Pull StoreItem
The set up of the endpoint is:
GET
/{merchant_pull_endpoint}/{store_location_id}
or, for paginated flow:
GET
/{merchant_pull_endpoint}/{store_location_id}?page_num={page_number}
store_location_id is the unique Merchant Supplied ID that is configured for that store location. The endpoint will deliver the full inventory for 1 single location at a time.
page_number is the page of the data that needs to be fetched. Data will be fetched page by page if using the paginated flow.
Currently we support static tokens and Oauth authentication mechanisms when calling Pull Store Item endpoint. If DoorDash needs to authenticate with your endpoint using Oauth, please share the oauth endpoint with Technical Account Manager to register in DoorDash.
Endpoint requirements
- The endpoint must be available over HTTPS.
- It must return all active and inactive items for the store, either in one response or paginated.
- It must be capable of handling high concurrency, since DoorDash may pull many stores in parallel.
- Paginated responses must include a
metaobject with pagination details (see Step 2).
Step 2: Ensure that storeItems.json response from endpoint has the correct format
As mentioned above, the StoreItem Pull request must return the response that matches BatchAddOrUpdateStoreItemRequest request model
Note: The response should contain all StoreItems in a store. DoorDash will replace all StoreItem attributes of the store with the ones from the json response when calling the pull job endpoint.
All prices are represented in cents (e.g., 1099 = $10.99).
Sample response expected from endpoint:
{
"items": [
{
"merchant_supplied_item_id": "1",
"item_availability": "ACTIVE",
"price_info": {
"base_price": 1099,
"sale_price": 999,
}
},
{
"merchant_supplied_item_id": "2",
"item_availability": "INACTIVE",
"price_info": {
"base_price": 599,
"sale_price": 599,
}
}
.
.
.
{
"merchant_supplied_item_id": "10000",
"item_availability": "ACTIVE",
"price_info": {
"base_price": 499,
"sale_price": 499,
}
},
]
}
If you are using the paginated pull flow, expect additional response in the "meta" fields:
{
"meta":
{
"current_page": "1",
"page_size": "500", //number of items on the page
"total_page": "100" //total number of pages
}
}