doordash · AsyncAPI Specification
DoorDash Marketplace Webhooks
Version 1.0
DoorDash Marketplace sends webhook notifications for order events, menu processing status, delivery status updates, and store onboarding events. Each environment (Sandbox and Production) supports only one webhook endpoint. Production access must be requested before configuring a production webhook endpoint. Partners confirm order receipt by returning a 200 status code; non-2xx responses are treated as order failures.
Channels
/orders
publish
receiveOrderWebhookReceive new order webhooks
DoorDash sends new order notifications to this channel when customers place orders through the marketplace.
/menus
publish
receiveMenuWebhookReceive menu status webhooks
DoorDash sends menu processing status notifications after a menu creation or update request is processed.
/deliveries
publish
receiveDeliveryStatusWebhookReceive delivery status webhooks
DoorDash sends delivery status updates for marketplace orders including Dasher assignment, pickup, and dropoff events.
/onboarding
publish
receiveOnboardingWebhookReceive store onboarding webhooks
DoorDash sends store onboarding status notifications during the partner integration setup process.
Messages
✉
NewOrder
New Order Event
A new order has been placed through the DoorDash marketplace and needs to be confirmed by the partner.
✉
MenuStatus
Menu Processing Status Event
A menu creation or update has completed processing or encountered an error.
✉
DeliveryStatus
Delivery Status Update Event
A delivery status update for a marketplace order including Dasher location and status.
✉
StoreOnboarding
Store Onboarding Event
A store onboarding status change during the integration setup process.
Servers
https
partnerWebhook
{webhook_url}
The partner-provided HTTPS webhook endpoint for receiving marketplace events. Each environment supports only one webhook endpoint.
AsyncAPI Specification
asyncapi: 2.6.0
info:
title: DoorDash Marketplace Webhooks
description: >-
DoorDash Marketplace sends webhook notifications for order events, menu
processing status, delivery status updates, and store onboarding events.
Each environment (Sandbox and Production) supports only one webhook
endpoint. Production access must be requested before configuring a
production webhook endpoint. Partners confirm order receipt by returning
a 200 status code; non-2xx responses are treated as order failures.
version: '1.0'
contact:
name: DoorDash Developer Support
url: https://developer.doordash.com/en-US/
servers:
partnerWebhook:
url: '{webhook_url}'
protocol: https
description: >-
The partner-provided HTTPS webhook endpoint for receiving marketplace
events. Each environment supports only one webhook endpoint.
security:
- basicAuth: []
variables:
webhook_url:
description: >-
The HTTPS URL of the partner's webhook endpoint.
channels:
/orders:
description: >-
DoorDash sends new order notifications to this channel when customers
place orders through the marketplace.
publish:
operationId: receiveOrderWebhook
summary: Receive new order webhooks
description: >-
Receives webhook notifications for new orders placed through DoorDash.
Partners must return 200 to confirm the order. Non-2xx responses are
treated as order failures.
message:
$ref: '#/components/messages/NewOrder'
/menus:
description: >-
DoorDash sends menu processing status notifications after a menu
creation or update request is processed.
publish:
operationId: receiveMenuWebhook
summary: Receive menu status webhooks
description: >-
Receives webhook notifications about menu creation or update
processing results. Sent when the menu processing pipeline
completes or encounters an error.
message:
$ref: '#/components/messages/MenuStatus'
/deliveries:
description: >-
DoorDash sends delivery status updates for marketplace orders
including Dasher assignment, pickup, and dropoff events.
publish:
operationId: receiveDeliveryStatusWebhook
summary: Receive delivery status webhooks
description: >-
Receives webhook notifications about delivery status changes for
marketplace orders, including Dasher tracking information.
message:
$ref: '#/components/messages/DeliveryStatus'
/onboarding:
description: >-
DoorDash sends store onboarding status notifications during the
partner integration setup process.
publish:
operationId: receiveOnboardingWebhook
summary: Receive store onboarding webhooks
description: >-
Receives webhook notifications about store onboarding status
changes during the integration setup process.
message:
$ref: '#/components/messages/StoreOnboarding'
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
description: >-
Basic authentication for webhook endpoint security.
messages:
NewOrder:
name: NewOrder
title: New Order Event
summary: >-
A new order has been placed through the DoorDash marketplace and
needs to be confirmed by the partner.
payload:
$ref: '#/components/schemas/OrderWebhookPayload'
examples:
- name: NewOrderDefaultExample
summary: Default NewOrder example payload
x-microcks-default: true
payload:
event_type: new_order
order_id: D-12345
store_id: D-12345
status: active
subtotal: 42
tax: 42
tip: 42
items:
- id: {}
name: {}
quantity: {}
price: {}
special_instructions: {}
options: {}
customer:
first_name: Acme Pickup Store
last_name: Acme Pickup Store
phone_number: '+15555551234'
delivery_address: 901 Market St, San Francisco, CA 94105
special_instructions: Leave at the front desk.
estimated_pickup_time: '2026-06-02T14:30:00Z'
created_at: '2026-06-02T14:30:00Z'
MenuStatus:
name: MenuStatus
title: Menu Processing Status Event
summary: >-
A menu creation or update has completed processing or encountered
an error.
payload:
$ref: '#/components/schemas/MenuWebhookPayload'
examples:
- name: MenuStatusDefaultExample
summary: Default MenuStatus example payload
x-microcks-default: true
payload:
event_type: menu_created
menu_id: D-12345
store_id: D-12345
status: completed
error_message: example
processed_at: '2026-06-02T14:30:00Z'
DeliveryStatus:
name: DeliveryStatus
title: Delivery Status Update Event
summary: >-
A delivery status update for a marketplace order including Dasher
location and status.
payload:
$ref: '#/components/schemas/MarketplaceDeliveryWebhookPayload'
examples:
- name: DeliveryStatusDefaultExample
summary: Default DeliveryStatus example payload
x-microcks-default: true
payload:
event_type: dasher_confirmed
order_id: D-12345
dasher_name: Acme Pickup Store
dasher_phone_number: '+15555551234'
dasher_location_lat: 37.422
dasher_location_lng: -122.084
estimated_delivery_time: '2026-06-02T14:30:00Z'
tracking_url: https://example.com/path/abc123
StoreOnboarding:
name: StoreOnboarding
title: Store Onboarding Event
summary: >-
A store onboarding status change during the integration setup
process.
payload:
$ref: '#/components/schemas/OnboardingWebhookPayload'
examples:
- name: StoreOnboardingDefaultExample
summary: Default StoreOnboarding example payload
x-microcks-default: true
payload:
event_type: store_activated
store_id: D-12345
status: active
message: example
timestamp: '2026-06-02T14:30:00Z'
schemas:
OrderWebhookPayload:
type: object
properties:
event_type:
type: string
description: >-
The type of order event.
enum:
- new_order
- order_cancelled
example: new_order
order_id:
type: string
description: >-
The unique DoorDash order identifier.
example: D-12345
store_id:
type: string
description: >-
The merchant-supplied store identifier.
example: D-12345
status:
type: string
description: >-
The order status.
example: active
subtotal:
type: integer
description: >-
The order subtotal in cents.
example: 42
tax:
type: integer
description: >-
The tax amount in cents.
example: 42
tip:
type: integer
description: >-
The tip amount in cents.
example: 42
items:
type: array
description: >-
The items in the order.
items:
$ref: '#/components/schemas/OrderItem'
customer:
$ref: '#/components/schemas/Customer'
delivery_address:
type: string
description: >-
The delivery address.
example: 901 Market St, San Francisco, CA 94105
special_instructions:
type: string
description: >-
Special instructions from the customer.
example: Leave at the front desk.
estimated_pickup_time:
type: string
format: date-time
description: >-
The estimated time the Dasher will arrive for pickup.
example: '2026-06-02T14:30:00Z'
created_at:
type: string
format: date-time
description: >-
When the order was created.
example: '2026-06-02T14:30:00Z'
OrderItem:
type: object
properties:
id:
type: string
description: >-
The unique item identifier.
example: D-12345
name:
type: string
description: >-
The item name.
example: Acme Pickup Store
quantity:
type: integer
description: >-
The quantity ordered.
example: 42
price:
type: integer
description: >-
The item price in cents.
example: 42
special_instructions:
type: string
description: >-
Special instructions for this item.
example: Leave at the front desk.
options:
type: array
description: >-
Selected options for the item.
items:
$ref: '#/components/schemas/ItemOption'
ItemOption:
type: object
properties:
id:
type: string
description: >-
The option identifier.
example: D-12345
name:
type: string
description: >-
The option name.
example: Acme Pickup Store
quantity:
type: integer
description: >-
The quantity of this option.
example: 42
price:
type: integer
description: >-
The option price in cents.
example: 42
Customer:
type: object
properties:
first_name:
type: string
description: >-
The customer's first name.
example: Acme Pickup Store
last_name:
type: string
description: >-
The customer's last name.
example: Acme Pickup Store
phone_number:
type: string
description: >-
The customer's phone number.
example: '+15555551234'
MenuWebhookPayload:
type: object
properties:
event_type:
type: string
description: >-
The type of menu event.
enum:
- menu_created
- menu_updated
- menu_failed
example: menu_created
menu_id:
type: string
description: >-
The unique menu identifier.
example: D-12345
store_id:
type: string
description: >-
The merchant-supplied store identifier.
example: D-12345
status:
type: string
description: >-
The menu processing status.
enum:
- completed
- failed
example: completed
error_message:
type: string
description: >-
Error details if the menu processing failed.
example: example
processed_at:
type: string
format: date-time
description: >-
When the menu processing completed.
example: '2026-06-02T14:30:00Z'
MarketplaceDeliveryWebhookPayload:
type: object
properties:
event_type:
type: string
description: >-
The type of delivery event.
enum:
- dasher_confirmed
- dasher_at_store
- dasher_picked_up
- dasher_at_customer
- dasher_delivered
example: dasher_confirmed
order_id:
type: string
description: >-
The DoorDash order identifier.
example: D-12345
dasher_name:
type: string
description: >-
The Dasher's first name.
example: Acme Pickup Store
dasher_phone_number:
type: string
description: >-
The Dasher's phone number.
example: '+15555551234'
dasher_location_lat:
type: number
format: double
description: >-
The Dasher's current latitude.
example: 37.422
dasher_location_lng:
type: number
format: double
description: >-
The Dasher's current longitude.
example: -122.084
estimated_delivery_time:
type: string
format: date-time
description: >-
The estimated delivery time.
example: '2026-06-02T14:30:00Z'
tracking_url:
type: string
format: uri
description: >-
A URL for tracking the delivery.
example: https://example.com/path/abc123
OnboardingWebhookPayload:
type: object
properties:
event_type:
type: string
description: >-
The type of onboarding event.
enum:
- store_activated
- store_deactivated
- onboarding_completed
- onboarding_failed
example: store_activated
store_id:
type: string
description: >-
The merchant-supplied store identifier.
example: D-12345
status:
type: string
description: >-
The onboarding status.
example: active
message:
type: string
description: >-
Additional details about the onboarding event.
example: example
timestamp:
type: string
format: date-time
description: >-
When the onboarding event occurred.
example: '2026-06-02T14:30:00Z'