DoorDash uses independent contractors to pick up an order and deliver it to the customer. It is mostly used for food, groceries, and other small deliveries. DoorDash US is available for domestic shipments within the United States.
This guide provides developers with the details needed to build DoorDash US shipping capabilities into your ShipStation API workflows.
Before you connect a DoorDash US account, make sure you have the following.
| Property | Type | Required? | Description |
|---|---|---|---|
nickname | string | required | A nickname for you to identify the carrier account in ShipStation API. |
developer_id | string | required | Developer ID, generated in the DoorDash developer portal. |
key_id | string | required | Key ID, generated in the DoorDash developer portal. |
signing_secret | string | required | Signing secret, generated in the DoorDash developer portal. |
order_fulfillment_method | string | required | The fulfillment method agreed with DoorDash. Valid values: standard, catering, shop_stage, shop_deliver, parcel. |
pickup_external_business_id | string | required | The business ID DoorDash generated for your account. |
pickup_external_store_id | string | required | The store assigned to the business ID. It defines the pickup address, so it must be exact. |
webhook_secret | string | Optional | Authorization key used for the webhook in your DoorDash account. |
incoming_webhook_url | string | Optional | Generated automatically and used to receive tracking events. Read-only. |
origin_facility_id | string | Optional | Your warehouse ID. Used when creating the label. |
- Your DoorDash account must be enabled for label generation. Contact DoorDash to request it. Accounts without it do not receive labels.
- Shipments must be to US addresses, with a 2-letter state code and a 5-digit zip code.
- Product values must be in USD. Other currencies are rejected.
- Both weight and dimensions are required for all shipments.
- The
ship_fromaddress must includecompany_name. DoorDash US requires it as the pickup business name. - You can connect multiple DoorDash US accounts.
DoorDash does not use the ship_from address on your shipment. Pickup always uses the values saved with your DoorDash US account: pickup_external_business_id, pickup_external_store_id, and origin_facility_id. If drivers pick up from a different location than the ship_from address, check these values.
The ship_from.company_name is still required, because it is sent to DoorDash as the pickup business name.
You can connect a DoorDash US account using the POST method to the /v1/connections/carriers/ endpoint.
carrier_name: doordash_us
POST /v1/connections/carriers/doordash_us
POST /v1/connections/carriers/doordash_us HTTP/1.1
Host: api.shipengine.com
API-Key: __YOUR_API_KEY_HERE__
Content-Type: application/json
{
"nickname": "my doordash account",
"developer_id": "your_developer_id_here",
"key_id": "your_key_id_here",
"signing_secret": "your_signing_secret_here",
"order_fulfillment_method": "standard",
"pickup_external_business_id": "your_pickup_external_business_id_here",
"pickup_external_store_id": "your_pickup_external_store_id_here",
"webhook_secret": "your_webhook_secret_here",
"origin_facility_id": "your_origin_facility_id_here"
}A successful connection will return a response with the carrier_id, which you'll use for any requests for this account going forward.
DoorDash US supports rate shopping with ShipStation API. A rate request asks DoorDash for a delivery quote. It does not generate a label or register the shipment with DoorDash. The rate includes the estimated pickup time and the estimated delivery time.
Address lines in the drop-off address are truncated to 64 characters in rate requests.
Available DoorDash US services are provided below. Please note that carriers may update their available services at any time. To ensure you are always using valid services, you can use the list carrier services endpoint at any time.
| Service | API Code |
|---|---|
| DashLink | doordash_us_dashlink |
DashLink supports tracking, driver tips, and the delivery confirmation options listed below.
The following carrier package types are available for DoorDash US services:
| Name | API Code | Package Attributes |
|---|---|---|
| Package | doordash_us_package | Domestic |
- Label format: ZPL
- Label size: 4" x 6"
- DoorDash US supports one package per shipment.
DoorDash US does not support:
- Adding custom label messages.
- Label branding.
- Multi-package shipments.
- Return labels.
- Third-party billing.
- Shipping to service points.
- Unicode characters on labels.
DoorDash US supports voiding labels with ShipStation API. If a label cannot be voided, the error message from DoorDash is returned with the error "Label cannot be voided". Check the delivery status in DoorDash, and retry only if the delivery can still be cancelled.
DoorDash US supports these delivery confirmation options:
none: No confirmation is required.signature: Signature required on delivery.
DoorDash US supports certain advanced options, which you can add to the shipment object when creating a shipment or label.
| Advanced option | Description |
|---|---|
advanced_options.tip.amount | Adds a tip for the driver. The tip is only sent when the order_fulfillment_method is standard. |
advanced_options.event_notification | Sends delivery notifications to the drop-off contact. |
You can also ship alcohol with DoorDash US.
To ensure you always have the most up-to-date information about a carrier's advanced options, use the list carrier options call.
DoorDash US does not require manifesting your shipments.
ShipStation API's integration with DoorDash US supports receiving tracking updates for domestic shipments. Review our Track a Package guides for details on tracking with ShipStation API.
- The tracking number is the DoorDash delivery ID returned when the label is created.
- The tracking URL is returned when the label is created.
- Tracking events are also received through the webhook. The incoming webhook URL is generated automatically when you connect your account, and webhook requests must include your webhook secret in the
Authorizationheader.
DoorDash does not have a separate test environment. Testing uses the same endpoint as production with sandbox credentials.
| Error | What it means | What to do |
|---|---|---|
401 Unauthorized: authentication_error | The authentication token DoorDash received is missing, empty, or invalid. | Check the developer_id, key_id, and signing_secret on the account. Reconnect the account to generate a new token. |
404 Not Found: unknown_delivery_id | DoorDash does not recognize the delivery ID. | Check that the tracking number is the delivery ID from the label. |
| Label cannot be voided | DoorDash did not accept the cancel request. | Read the error message from DoorDash. Check the delivery status in DoorDash, and retry only if the delivery can still be cancelled. |
For more information about DoorDash parcel deliveries, see the DoorDash DashLink Parcels developer documentation.
DELETE /v1/connections/carriers/doordash_us/:id
DELETE /v1/connections/carriers/doordash_us/se-1234 HTTP/1.1
Host: api.shipengine.com
API-Key: __YOUR_API_KEY_HERE__See our Delete a Carrier page for more details about disconnecting a carrier from ShipStation API.
NOTE:
If you disconnect a carrier account and reconnect it, the account will have a new
carrier_idin ShipStation API.