order.updated for every stage it has not reported yet.
Merchants that send this event
- DoorDash
order.updated, and GET /buy/orders/{order_id} answers tracking: not_available for it.
Follow an order’s stages
status carries the stage in Agentcard’s words, the same for every merchant. A DoorDash delivery walks the stages in this order:
A pickup order reports
ready_for_pickup in place of the courier stages. An order can skip a stage that happens between two reads: a courier who picks up and arrives within the same minute goes from courier_at_store to arriving, and previous_status names the stage you last heard.
order.placed already covers the moment an order is placed, so no order.updated reports placed.
Show the merchant’s own words
status_title and status_detail carry the merchant’s own line for the stage, such as Your Dasher is nearby, ready to show as is. Either one is null when the merchant shows none.
estimated_arrival is the window the merchant quotes at the time of the change, or null when it quotes none. The window can move between stages without a new event. Read the latest window with GET /buy/orders/{order_id}.
Handle a repeated event
Agentcard sends each stage of an order under one eventid. A delivery that failed and is retried arrives with the same id, so dedupe on id.
Know when tracking stops
Agentcard stops following an order once it is delivered or canceled, six hours after it was placed, or once the merchant no longer lists the order.GET /buy/orders/{order_id} answers tracking: ended after that.