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'
      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'