POST to the trackers endpoint with a JSON body containing 'tracking_code' (the carrier tracking number) and 'carrier' (the carrier name string, e.g., 'UPS', 'USPS'; verify accepted values against current docs); EasyPost returns a Tracker object with an 'id' and current 'status'.
Register a webhook endpoint in your EasyPost dashboard (or via the webhooks API endpoint) pointing to your publicly accessible HTTPS URL; select the 'tracker.updated' event type.
Validate incoming webhook payloads by checking the HMAC signature header (verify header name and algorithm against current docs) against a hash of the raw request body using your webhook secret.
Parse the 'result.status' field on each webhook event; common values include 'pre_transit', 'in_transit', 'out_for_delivery', 'delivered', 'failure', and 'return_to_sender'.
Use 'result.tracking_details' array for granular event history including timestamps and location data; update your order management system accordingly.
Known gotchas
EasyPost polls carriers on your behalf; polling frequency depends on the carrier and shipment status, so there may be a delay between a carrier scan event and the corresponding EasyPost webhook delivery.
Always verify the webhook HMAC signature before processing payloads to prevent spoofed events; reject any request that fails signature validation.
Webhook deliveries may arrive out of order or be retried on failure; implement idempotent event handling keyed on the event 'id' 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