Register a publicly reachable HTTPS endpoint in the DoorDash developer portal under Webhook settings
Verify the webhook by responding with HTTP 200 to the initial handshake POST from DoorDash
Parse the JSON body on each inbound POST; inspect the event_type field to identify lifecycle events such as DASHER_CONFIRMED, DASHER_CONFIRMED_PICKUP_ARRIVAL, DASHER_PICKED_UP, and DASHER_DROPPED_OFF
Correlate events to your order using external_delivery_id in the payload
Respond with HTTP 200 immediately upon receipt to prevent retry storms; process asynchronously
Check the developer portal's Event Logs feature to replay missed or failed webhook deliveries during debugging
Known gotchas
DoorDash retries each webhook event up to 3 times; implement idempotent handlers keyed on external_delivery_id plus event_type to avoid duplicate processing
Fields absent in the payload at event time (such as pickup_time_actual before pickup) are simply omitted rather than null; guard all field accesses accordingly
Webhook registration is per-environment; a sandbox endpoint will not receive production events — register separately for each environment
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp