Package Tracking
Track by Number
- Determine carrier and tracking number. Carrier must be a lowercase Shippo token (e.g.,
usps,ups,fedex,dhl_express). Seeshippo/references/carrier-guide.mdfor tracking number format hints per carrier. If uncertain, ask the user. - Call
GetTrackwithcarrierandtracking_number. - Key response fields:
tracking_status(status, status_details, status_date, location),tracking_history,eta. - Each tracking event includes a
substatusobject withcode,text, andaction_required(boolean). Include substatus details when presenting tracking history -- these provide more specific information about what happened at each step. - Present: current status, location, ETA, substatus details, and chronological event history (most recent first).
Status Values
See shippo/references/carrier-guide.md for carrier-specific status nuances. Standard values:
The eta field is provided by most major carriers (USPS, UPS, FedEx, DHL Express) but availability is carrier-dependent, it may be null for regional carriers or for shipments before the carrier has finalized routing. Treat absence as informational, not as an error condition.
Find Trackable Packages
Call ListTransactions. Filter for object_status: SUCCESS. Each successful transaction has tracking_number and carrier info. Then call GetTrack for selected items.
Register a Tracking Webhook
- Get the user's HTTPS webhook URL.
- Call
createWebhookwithurlandevent: track_updated. - Optionally call
CreateTrackwith carrier and tracking number to register a specific shipment for push updates.
Quick Reference
Track a package:
GetTrack with carrier + tracking number
Find past shipment tracking:
ListTransactions -> filter SUCCESS -> GetTrack


