Skip to main content
Use the Shippo Tracking API to track shipments from all carriers with normalized data, complete tracking history, and real-time updates. When used with webhooks, you’ll receive instant notifications whenever there’s a tracking update. This setup ensures you always have the latest tracking information for all your shipments and can alert recipients if they need to take action.

Track live shipments

If you have already created a webhook, labels purchased through Shippo will send tracking events to that webhook. If you did not purchase a label through Shippo and would like to receive tracking updates on your webhook you can register the tracking number with the following example using a tracking number and the name of the carrier.
NoteTo use live tracking, you must use your live key. If you want to test tracking with test mode, see the testing tracking guide.
  1. Create a webhook.
    • Set the webhook Event Type to Track Updated.
    • Set the webhook Environment to Production.
    • Set the webhook URL to an address that can listen to your webhook.
Important
  • Tracking webhooks are not idempotent.
  • Clients should register a webhook only once per tracking event.
  • Duplicate registrations can result in multiple notifications for the same event.
  1. POST the below to the tracks endpoint.
You must register a webhook prior to POSTing to the tracking endpoint. Once POSTed, all updates to that tracking number will only be sent to your active tracking webhooks. You can find a list of all supported carrier tokens here. Also, certain carriers require an account to track shipments sent through them or only permit tracking shipments created through Shippo. Please see Carrier Restrictions below for details. You will get a response back that includes the latest tracking status via the corresponding tracking_status field, and the entire history via the tracking_history field, see a sample response below. Tracking is included for shipments created on Shippo but incurs a cost per tracking number for all other shipments.

Event definitions

The returned response from a tracking request includes a status. The status is a high-level indication of where in the delivery process your package is. Below is a list of possible status values with a description of each. Each status may also have a substatus. A substatus can give finer details about the current status of your package. Each field’s definition is also available in our API Reference documentation. The action_required indicates the substatus requires action from the shipper or recipient to complete delivery.

Testing tracking

In our Test environment you are able to review our responses with mock tracking numbers. Using your Shippo Test Token, use shippo as your carrier and the tracking number be one of the following, depending on which tracking event you’re testing: SHIPPO_PRE_TRANSITSHIPPO_TRANSITSHIPPO_DELIVEREDSHIPPO_RETURNEDSHIPPO_FAILURESHIPPO_UNKNOWN. Follow this example.
Test tracking request
Test tracking response
To see all possible status, substatus and corresponding action_required values, review our full list above.

Track Shippo shipments

For each production label you purchase, Shippo automatically tracks the shipment status through the corresponding carrier’s tracking system. The latest status is accessible via the corresponding Transaction’s tracking_status field. Here’s a sample Transaction object:

Track individual shipments

To submit an individual tracking request for a single shipment, including those created outside of Shippo, you can send a GET request to the Tracking Status endpoint with your shipment carrier and tracking_number. You can find a list of all supported carrier tokens here. Here’s a sample request.
The response is similar to the example above.

Adding metadata

You can add metadata to the tracking request through a POST request. This is a free form field where any user-specific information can be added. By making a POST request to add metadata, all your existing webhooks will also be connected to the tracked shipment. The POST request’s body needs to consist of your shipment’s tracking_number and carrier:

Including package details

You can include an optional boolean parameter, include_package_details, in the tracking POST request. This parameter is currently supported only for UPS and FedEx. If omitted, it defaults to false. If set to true, Shippo may include weight and dimensions in the tracking API response when those details are available from the carrier’s tracking API. Package details are returned only in the tracking API response; track_updated webhook payloads do not include weight or dimensions. Weight and dimensions may be partial and may be updated over time as the carrier provides additional data. Shippo includes only fields provided by the carrier and does not add default or null values for missing dimension fields. Dimensions are omitted only when the unit is missing and cannot be safely inferred, or when the carrier-provided data is invalid. Here’s a sample request:
For example, when include_package_details=true and the carrier returns package details, the response can include:

Carrier restrictions

Some carriers require that you have an account with them to track shipments being delivered through them. This is only relevant if you are sending your tracking numbers as a POST to get updates via our webhook (where it is required to have a Shippo account). Otherwise, you simply wouldn’t be able to track shipments through the below carriers. To track shipments with the below carriers, add your respective carrier account into your Shippo account:
  • Australia Post
  • BetterTrucks
  • Correos España
  • GLS US
  • Gophr
  • GSO
  • Hongkong Post
  • Jitsu
  • LSO
  • Mondial Relay
  • PCF
  • Poste Italiane
  • Purolator
  • Swyft
Additionally, the following carriers only permit tracking shipments that were created though Shippo:
  • Canada Post
  • Colissimo
  • Deutsche Post
  • DHL eCommerce
  • DHL Germany
  • DPD UK
  • Evri UK
  • Lasership
  • New Zealand Post
  • Ontrac
  • Passport
See Carrier Accounts for details on adding carrier accounts to your Shippo account.

Tracking pages

Tracking pages let retailers share detailed order tracking information through the native look and feel of their own brand. You can brand your own tracking pages within the Shippo web app.
  1. Log in to our Web app to upload assets to the Tracking page in your settings.
  2. Publish content and retrieve your base URL from the View test link link.
  3. Send customers to your pages (include this link in your own emails, for example) with the <baseurl>/<carrier>/<trackingnumber>.
By default, your URL may take the following pattern. https://track.goshippo.com/tracking/<UserID>/<carrier>/<trackingnumber> shippo tracking page sample
Last modified on July 16, 2026