Create a tracker for an existing tracking number (from any carrier) via POST /v2/trackers with body: {tracking_code: 'XXXXX', carrier: 'UPS'} — carrier is optional but improves accuracy.
EasyPost immediately returns a Tracker object with the current status, tracking_details array, and est_delivery_date if available.
Register a webhook endpoint in your EasyPost account (Dashboard > Webhooks or POST /v2/webhooks with url) to receive tracker.updated events in real time.
When EasyPost detects a status change, it POSTs a tracker.updated event payload to your webhook URL; validate the HMAC-SHA256 signature in the X-Hmac-Signature header using your webhook secret before processing.
Map EasyPost's status strings (pre_transit, in_transit, out_for_delivery, delivered, available_for_pickup, return_to_sender, failure, unknown) to your internal delivery state machine.
Known gotchas
Creating a tracker for a tracking number you did not purchase via EasyPost is a distinct billing item — check current EasyPost pricing for non-EasyPost tracker creation costs.
The X-Hmac-Signature header format changed over time; consult current EasyPost webhook signature docs for the exact HMAC algorithm and encoding in use.
EasyPost may send multiple tracker.updated events in rapid succession for a single status change; implement idempotency using the tracker id and status to avoid duplicate processing.
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