Skip to main content

Webhooks

Webhooks enable near-real-time information flow from DoorDash and our Dashers to your application and your customers. With webhooks, you can enable real-time scenarios like a map view showing your customers how far away their Dasher is, push notifications telling your customers the latest status of their order, and much more.

API: Drive

This doc covers the Drive API. If you're using the Drive (classic) API, see the reference guide for Drive (classic) webhooks.

Events​

DoorDash Developer sends webhooks for the following events, as soon as the event takes place:

  • DASHER_CONFIRMED: A Dasher has accepted your delivery and is on the way to the pickup location.
  • DASHER_CONFIRMED_PICKUP_ARRIVAL: The Dasher has confirmed that they arrived at the pickup location and are attempting to pick up the delivery.
  • DASHER_PICKED_UP: The Dasher has picked up the delivery.
  • DASHER_CONFIRMED_DROPOFF_ARRIVAL: The Dasher has confirmed that they arrived at the dropoff location.
  • DASHER_DROPPED_OFF: The Dasher has dropped off the delivery at the dropoff location and the delivery is complete.
  • DELIVERY_CANCELLED: The delivery has been cancelled.
  • DELIVERY_ABANDONED: The Dasher was unable to finish the delivery at destination, delivery was abandoned.

Additionally, deliveries that can be returned-to-pickup may generate webhooks for the following events:

  • DELIVERY_RETURN_INITIALIZED: The Dasher was unable to deliver your delivery to the dropoff location; they contacted support to arrange a return-to-pickup delivery and are returning to the pickup location.
  • DASHER_CONFIRMED_RETURN_ARRIVAL: The Dasher has confirmed that they arrived at the pickup location and are attempting to return the delivery.
  • DELIVERY_RETURNED: The delivery has been returned successfully.
  • DELIVERY_CANCELLED (with reason = failed_to_return): The delivery was unable to be returned.

Fields​

Webhooks contain all of the details about a delivery that are available when the webhook is sent. If a field is empty or not available, the field is not sent in the webhook body. For example, pickup_time_actual is not included in webhook payloads until the delivery has been picked up by the Dasher. Your code should always check if a field is present before accessing it.

Field nameDescriptionfield available in webhook event
cancellation_reasonWhy the order was cancelledOnly the DELIVERY_CANCELLED event
cancellation_reason_messageWhy the order was cancelled, in the Dasher's wordsOnly the DELIVERY_CANCELLED event and only if cancellation_reason=failed_to_return
contactlessWhether the delivery was contactless or normalAll events
created_atWhen the webhook was createdAll events
currencyThe currency of order_value, fee, and tip in cents (see list below)All events
dasher_nameThe first name and last initial of the Dasher delivering the order. E.g. John D.All events
dasher_phone_number DEPRECATEDThe phone number of the dasher for the dropoff contact to use. Number is masked for privacy. This field has been renamed to dasher_dropoff_phone_number below.All events
dasher_dropoff_phone_numberThe phone number of the dasher for the dropoff contact to use. Number is masked for privacy.All events
dasher_pickup_phone_numberThe phone number of the dasher for the pickup contact to use. Number is masked for privacy.All events
dasher_locationLatitude and longitude of the dasher.All events
dasher_vehicle_makeMake of the dasher's vehicle.All events
dasher_vehicle_modelModel of the dasher's vehicle.All events
dasher_vehicle_yearYear of the dasher's vehicle.All events
dropoff_addressWhere the delivery will be dropped offAll events
dropoff_contact_family_nameFamily name of the contact.All events
dropoff_contact_given_nameGiven name of the contact.All events
dropoff_contact_send_notificationsWhether the contact will receive notifications from DoorDash for this delivery. The default is false. Cannot be updatedAll events
dropoff_instructionsInstructions for the Dasher to follow when dropping off the orderAll events
dropoff_phone_numberThe phone number for the Dasher to call in case of problems with pickupAll events
dropoff_time_actualWhen the delivery was dropped offAll events after and including DASHER_DROPPED_OFF
dropoff_time_estimatedWhen the delivery is estimated to be dropped offAll events
dropoff_verification_image_urlThe image of the order dropped off by the dasher.All events after and including DASHER_DROPPED_OFF
event_nameThe event that triggered the webhook (see list above)All events
external_delivery_idThe ID provided when the delivery was createdAll events
feeThe delivery feeds charged by DoorDashAll events
order_valueThe value of all the items in the orderAll events
pickup_addressWhere the delivery will be picked upAll events
pickup_instructionsInstructions for the Dasher to follow when picking up the orderAll events
pickup_phone_numberThe phone number for the Dasher to call in case of problems with pickupAll events
pickup_reference_tagA piece of information that can help the Dasher identify the correct delivery item to pick upAll events
updated_atTimestamp when the delivery info was updated.All events
pickup_time_actualWhen the delivery was picked upAll events after and including DASHER_PICKED_UP
pickup_time_estimatedWhen the delivery is estimated to be picked upAll events
pickup_verification_image_urlThe image of the order picked up by the dasher. (peer-to-peer orders only)All events after and including DASHER_PICKED_UP
return_addressWhere the delivery will be returnedAll events after and including DELIVERY_RETURN_INITIALIZED
return_time_actualWhen the delivery was returned to the pickup locationOnly the DELIVERY_RETURNED event
return_time_estimatedWhen the delivery is estimated to be returned to the pickup locationAll events after and including DELIVERY_RETURN_INITIALIZED
support_referenceAn identifer you can use if talking to DoorDash support about this orderAll events
tipThe amount to tip the DasherAll events
tracking_urlThe DoorDash Drive portal URL that you can use to track the deliveryAll events

Data formats​

All ..._time_... fields are sent as ISO-8601 date and times and are therefore sent in the UTC time zone.

Retries​

DoorDash sends each webhook event up to 3 times. In other words, when DoorDash sends a webhook, if we receive a response other than 200 OK or no response at all, we try to send it 2 more times.

Example webhook payload​

{
"created_at": "2022-02-01T23:18:22.791883Z",
"event_name": "DASHER_DROPPED_OFF",
"external_delivery_id": "c19a5d37-e457-4247-9a67-921ec0134125",
"dasher_name": "John D.",
"dasher_dropoff_phone_number": "+16504379788",
"dasher_pickup_phone_number": "+16504379799",
"dasher_location": {"lat": 43.333333333, "lng": -79.333333333},
"dasher_vehicle_make": "Honda",
"dasher_vehicle_model": "Civic",
"dasher_vehicle_year": "2003",
"pickup_address": "1000 4th Avenue, Seattle, WA 98104",
"pickup_phone_number": "+1(855)9731040",
"pickupReferenceTag": "reftag",
"pickup_instructions": "please take it to floor 21",
"dropoff_address": "1201 3rd Avenue, Seattle, WA 98101",
"dropoff_phone_number": "+1(855)9731040",
"dropoff_instructions": "please take it to floor 21",
"dropoff_contact_given_name": "John",
"dropoff_contact_family_name": "Doe",
"dropoff_contact_send_notifications": true,
"order_value": 5555,
"currency": "USD",
"updated_at": "2022-02-01T23:18:22.791883Z",
"pickup_time_estimated": "2022-02-01T23:32:06.000000Z",
"pickup_time_actual": "2022-02-01T23:17:20.521249Z",
"dropoff_time_estimated": "2022-02-01T23:56:06.000000Z",
"dropoff_time_actual": "2022-02-01T23:18:22.541773Z",
"fee": 975,
"tip": 230,
"support_reference": "1343593362",
"tracking_url": "https://doordash.com/drive/portal/track/53904a0b-18cd-4308-b6dc-1d83932d7990",
"contactless": false
}