Overview
The DoorDash Marketplace for Retailers separates the concept of a product catalog from store-level inventory and configuration. Products are defined once at the catalog level and then selectively assigned, stocked, and priced per store.
Catalog-level items include static product information such as name, description, images, brand, size, traits, attributes, and eligibility. These item definitions are owned by the business and apply across all participating store locations.
Store-level inventory and configuration include stock availability, pricing, shelf location, and tax. This allows a single catalog item to be active in one store, inactive in another, and priced differently across locations.
This separation ensures catalog consistency across the business while allowing each store to manage inventory, availability, and fulfillment independently.
A properly structured catalog:
- Ensures consistency across stores
- Enables product search, filtering, and recommendation logic for customers
- Supports compliance and merchandising rules
- Serves as the single source of truth for product information
Setting up Catalog Pull
As part of the integration workflow, partners can implement an endpoint that allows DoorDash to pull the full product catalog for a business, which is shared across all stores assigned to that business. A Catalog combines with Inventory to produce a customer-facing menu; without a Catalog, a store can't go live on DoorDash Marketplace. The Catalog pull feature allows for faster and more efficient store onboarding.
See Catalog Pull for the full endpoint specification and setup steps.
Catalog Management API
Overview
The Item Management API is designed for DoorDash partners to manage information about the items they offer on the platform. It allows partners to add new items to the catalog and update information about existing items. Item information is managed at the business level, and each item is identified by a unique Merchant Supplied Item ID (MSID).
Endpoint URL: https://openapi.doordash.com/marketplace/api/v2/items
Getting Started
Request
-
HTTP Method:
- POST: Add new items to the catalog
- PATCH: Update information about existing items
-
Headers:
- Refer to the JWT authentication documentation for authentication details.
-
Payload Example: View Example JSON
Response
- Success Response:
{
"operation_id": "string",
"operation_status": "SUCCESS", // Possible values: "QUEUED" "IN_PROGRESS" "SUCCESS" "FAILED" "PARTIAL_SUCCESS"
"message": "string"
}
- Fail Response Details:
| HTTP Status | Code | Message | Recommended Action |
|---|---|---|---|
| 400 | validation_error | One or more request values couldn't be validated. | Check your request body and field values; correct schema or data errors before retrying. |
| 401 | authentication_error | Default: The [exp] is in the past; the JWT is expired. | Generate a new JWT token and retry. |
| 403 | authorization_error | Default: Authorization error — the credentials provided with the request don't work. | Verify API credentials and permissions for the target business. |
| 404 | unknown_business_id | – | Confirm you're using the DoorDash-provided business_id. |
| 422 | request_rate_limited | – | Reduce request frequency or batch size; retry after delay. |
| 429 | request_rate_limited | – | You've hit a rate limit; implement exponential backoff. |
| 500 | service_fault | Default: Internal service failure, please try again later. | Retry after a short delay; contact your DoorDash representative if persistent. |
Verification:
Once you believe you have made a successful call to the endpoint, reach out to your DoorDash technical account manager to verify. Please provide an example of the payload used in the request.
FAQ
-
How do I get the required
business_id?- Your DoorDash technical account manager will provide the
business_idfor the test and production stores.
- Your DoorDash technical account manager will provide the
-
How long will it take for new items to be created or updated?
- The current Service Level Agreement (SLA) is 18 days.
-
Do I need to include all of the fields that are in the payload?
- No, you do not. However, including more data and ensuring higher data quality will expedite the process of creating or updating items.