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.

View Spec View on GitHub AsyncAPIWebhooksEvents

Channels

/orders
publish receiveOrderWebhook
Receive new order webhooks
DoorDash sends new order notifications to this channel when customers place orders through the marketplace.
/menus
publish receiveMenuWebhook
Receive menu status webhooks
DoorDash sends menu processing status notifications after a menu creation or update request is processed.
/deliveries
publish receiveDeliveryStatusWebhook
Receive delivery status webhooks
DoorDash sends delivery status updates for marketplace orders including Dasher assignment, pickup, and dropoff events.
/onboarding
publish receiveOnboardingWebhook
Receive 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

Raw ↑
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'
    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'
    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'
    StoreOnboarding:
      name: StoreOnboarding
      title: Store Onboarding Event
      summary: >-
        A store onboarding status change during the integration setup
        process.
      payload:
        $ref: '#/components/schemas/OnboardingWebhookPayload'
  schemas:
    OrderWebhookPayload:
      type: object
      properties:
        event_type:
          type: string
          description: >-
            The type of order event.
          enum:
            - new_order
            - order_cancelled
        order_id:
          type: string
          description: >-
            The unique DoorDash order identifier.
        store_id:
          type: string
          description: >-
            The merchant-supplied store identifier.
        status:
          type: string
          description: >-
            The order status.
        subtotal:
          type: integer
          description: >-
            The order subtotal in cents.
        tax:
          type: integer
          description: >-
            The tax amount in cents.
        tip:
          type: integer
          description: >-
            The tip amount in cents.
        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.
        special_instructions:
          type: string
          description: >-
            Special instructions from the customer.
        estimated_pickup_time:
          type: string
          format: date-time
          description: >-
            The estimated time the Dasher will arrive for pickup.
        created_at:
          type: string
          format: date-time
          description: >-
            When the order was created.
    OrderItem:
      type: object
      properties:
        id:
          type: string
          description: >-
            The unique item identifier.
        name:
          type: string
          description: >-
            The item name.
        quantity:
          type: integer
          description: >-
            The quantity ordered.
        price:
          type: integer
          description: >-
            The item price in cents.
        special_instructions:
          type: string
          description: >-
            Special instructions for this item.
        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.
        name:
          type: string
          description: >-
            The option name.
        quantity:
          type: integer
          description: >-
            The quantity of this option.
        price:
          type: integer
          description: >-
            The option price in cents.
    Customer:
      type: object
      properties:
        first_name:
          type: string
          description: >-
            The customer's first name.
        last_name:
          type: string
          description: >-
            The customer's last name.
        phone_number:
          type: string
          description: >-
            The customer's phone number.
    MenuWebhookPayload:
      type: object
      properties:
        event_type:
          type: string
          description: >-
            The type of menu event.
          enum:
            - menu_created
            - menu_updated
            - menu_failed
        menu_id:
          type: string
          description: >-
            The unique menu identifier.
        store_id:
          type: string
          description: >-
            The merchant-supplied store identifier.
        status:
          type: string
          description: >-
            The menu processing status.
          enum:
            - completed
            - failed
        error_message:
          type: string
          description: >-
            Error details if the menu processing failed.
        processed_at:
          type: string
          format: date-time
          description: >-
            When the menu processing completed.
    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
        order_id:
          type: string
          description: >-
            The DoorDash order identifier.
        dasher_name:
          type: string
          description: >-
            The Dasher's first name.
        dasher_phone_number:
          type: string
          description: >-
            The Dasher's phone number.
        dasher_location_lat:
          type: number
          format: double
          description: >-
            The Dasher's current latitude.
        dasher_location_lng:
          type: number
          format: double
          description: >-
            The Dasher's current longitude.
        estimated_delivery_time:
          type: string
          format: date-time
          description: >-
            The estimated delivery time.
        tracking_url:
          type: string
          format: uri
          description: >-
            A URL for tracking the delivery.
    OnboardingWebhookPayload:
      type: object
      properties:
        event_type:
          type: string
          description: >-
            The type of onboarding event.
          enum:
            - store_activated
            - store_deactivated
            - onboarding_completed
            - onboarding_failed
        store_id:
          type: string
          description: >-
            The merchant-supplied store identifier.
        status:
          type: string
          description: >-
            The onboarding status.
        message:
          type: string
          description: >-
            Additional details about the onboarding event.
        timestamp:
          type: string
          format: date-time
          description: >-
            When the onboarding event occurred.