Shipment Tracking API
The WooCommerce REST API provides a set of API endpoints for external applications to access and manage various parts of WooCommerce data. AST PRO expands upon the WooCommerce REST API by adding shipment tracking endpoints, allowing you to create, view, retrieve, and delete individual shipment tracking information for orders.
To utilize the shipment tracking endpoint, you must first generate a REST API key in your WooCommerce store. This key acts as an authorization for external systems to connect with your store’s API.
How To Get WooCommerce API Keys
To create API keys for your WooCommerce store, follow these steps:

- Go to WooCommerce > Settings > Advanced > Rest API.
- Click on “Add Key”.
- On the Key Details screen, provide a Description for the API key.
- Choose the User you want to generate the key for in the dropdown (e.g. admin user).
- Set the level of access for the API key, such as Read/Write.
- Click on “Generate API Key” and WooCommerce will create the API keys for the selected user.
Shipment Tracking API Endpoint
The Shipment Tracking API endpoint provides support for the following methods:
- Adding Tracking Information and Order Fulfillment: This method allows you to add tracking information to your orders and fulfill them.
- Adding Item-Level Tracking Information and Order Fulfillment: This method allows you to add tracking information to specific items within an order and fulfill the order accordingly.
- Retrieving Tracking Information from Orders: This method enables you to retrieve tracking information for orders that have been fulfilled.
- Deleting Tracking Information from Orders: This method allows you to remove tracking information from orders if necessary.
- List of Shipping Providers: This method provides you with a list of available shipping providers to choose from.
Endpoint URL:
https://yourdomaon.com/wp-json/wc-shipment-tracking/v3/orders/<order_id>/shipment-trackings
Shipment Tracking API Properties
These are the available meta field that can be used when updating the Shipment Tracking API:
ATTRIBUTE | TYPE | DESCRIPTION | PERMISSIONS |
---|---|---|---|
order_id | String | Unique identifier for order | read-only |
tracking_number | String | Tracking number | Required |
tracking_provider | String | Tracking provider name | Required |
date_shipped | Date | Date when the package was shipped – default to the date/time that the tracking was added via the API | Optional |
replace_tracking | Boolean | 0 – add the tracking info in addition to tracking info that was already added to the order. 1 – replace the current tracking numbers for the orders (Defaults to 0) | Optional |
status_shipped | Integer | 0 – do not change the order status, 1 – change order status to “Shipped” (completed), 2 – change the order status to custom status “Partially Shipped” (Defaults to 0). | Optional |
sku | String | Line item SKU – Add tracking per item | Optional |
qty | Integer | Line item quantity – Add tracking per item | Optional |
Add Shipment tracking
This endpoint allows to add new tracking info to orders:
POST /wp-json/wc-shipment-tracking/v3/orders/<order_id>/shipment-trackings/
curl -X POST https://your-domain.com/wp-json/wc-shipment-tracking/v3/orders/<order_id>/shipment-tracking
-u consumer_key:consumer_secret
-H "Content-Type: application/json"
-d '{
"tracking_provider": "Fedex",
"tracking_number": "12345678",
"date_shipped": "2019-03-08",
"status_shipped": 1,
"replace_tracking": 1
}'
//response example:
"Tracking ID: fb7170d97d0e628bc3b565999d07c6a9"
Add Shipment Tracking Per Item
Tracking per item with the API
If you use the Tracking Per Item Add-on, you can add tracking to the API endpoint to specific line items (products) using the product SKU and the quantity shipped properties.
For example, if you received an order of 5 items and want to send them in s packages with different tracking numbers:
Package 1 – tracking number – 123456
Products:
- t-shirt x 1
- blue-jeans x 1
Package 2 – tracking number – 456789
- t-shirt x 1
- blue-jeans x 2
Add tracking for Package One:
POST /wp-json/wc-shipment-tracking/v3/orders/<order_id>/shipment-trackings/
curl -X POST https://your-domain.com/wp-json/wc-ast-pro/v3/orders/<order_id>/shipment-trackings
-u consumer_key:consumer_secret
-H "Content-Type: application/json"
-d '{
"tracking_provider": "USPS",
"tracking_number": "123456",
"date_shipped": "2020-01-24",
"status_shipped": 2,
"sku": t-shirt,blue-jeans,
"qty": 1,1
}'
Add tracking for Package Two:
curl -X POST https://your-domain.com/wp-json/wc-shipment-tracking/v3/orders/<order_id>/shipment-trackings
-u consumer_key:consumer_secret
-H "Content-Type: application/json"
-d '{
"tracking_provider": "USPS",
"tracking_number": "456879",
"date_shipped": "2020-01-24",
"status_shipped": 1,
"sku": t-shirt,blue-jeans,
"qty": 1,2
}'
Get shipment tracking
With this endpoint, you can list all tracking info added to an order. You will need to pass the order id and you’ll get response with array of tracking numbers added to that order,
GET /wp-json/wc-shipment-tracking/v3/orders/<order_id>/shipment-trackings/
curl -X GET https://your-domain.com/wp-json/wc-shipment-tracking/v3/orders/<order_id>/shipment-trackings
-u consumer_key:consumer_secret
//JSON response:
{
"tracking_id": "feb9bde4475fda92cc9408607b7ecb66",
"tracking_provider": "Fedex",
"tracking_link": "http://www.fedex.com/Tracking?action=track&tracknumbers=12345678",
"tracking_number": "12345678",
"date_shipped": "2019-03-08",
"_links": {
"self": [
{
"href": "https://your-domain.com/wp-json/wc/v1/orders/340/shipment-trackings"
}
],
"collection": [
{
"href": "https://your-domain.com/wp-json/wc/v1/orders/340/shipment-trackings"
}
],
"up": [
{
"href": "https://your-domain.com/wp-json/wc/v1/orders/340"
}
]
}
}
Delete Shipment Tracking
You can delete tracking numbers from orders, you will need to pass the order id and the tracking_id for this tracking number:
DELETE /wp-json/wc-shipment-tracking/v3/orders/<order_id>/shipment-trackings/
curl -X DELETE https://your-domain.com/wp-json/wc-shipment-tracking/v3/orders/<order_id>/shipment-trackings/fa61d174a05d2f34323b51d92823947d
-u consumer_key:consumer_secret
//response example:
"Tracking ID: fa61d174a05d2f34323b51d92823947d"
Get Shipping Providers
You can get all the active shipping providers for the order
GET /wp-json/wc-shipment-tracking/v3/orders/<order_id>/shipment-trackings/providers
curl -X GET https://your-domain.com/wp-json/wc-shipment-tracking/v3/orders/<order_id>/shipment-trackings/providers
-u consumer_key:consumer_secret
JSON response example:
{
"Austria": {
"DPD Austria": "https://tracking.dpd.de/parcelstatus?locale=de_AT&query=%number%",
"post.at": "http://www.post.at/sendungsverfolgung.php?pnum1=%number%"
},
"Australia": {
"Australia Post": "http://auspost.com.au/track/track.html?id=%number%",
"CouriersPlease": "https://www.couriersplease.com.au/tools-track/no/%number%"
},
"Canada": {
"Canada Post": "https://www.canadapost.ca/track-reperage/en#/search?searchFor=%number%",
"Canpar": "https://www.canpar.ca/en/track/tracking.jsp"
},
"Chile": {
"Correos Chile": "https://www.correos.cl/web/guest/seguimiento-en-linea?codigos=%number%"
},
"China": {
"China Post": "http://english.chinapost.com.cn/html1/folder/1408/3929-1.htm?content=%number%",
"EMS": "https://www.ems.post/en/global-network/tracking"
},
"France": {
"Chronopost": "https://www.chronopost.fr/fr/chrono_suivi_search?listeNumerosLT=%number%",
"Colis Privé": "https://www.colisprive.com/moncolis/pages/detailColis.aspx?numColis=%number%"
},
"India": {
"Delhivery": "https://www.delhivery.com/track/package/%number%"
},
"United States (US)": {
"DHL US": "https://www.logistics.dhl/us-en/home/tracking/tracking-ecommerce.html?tracking-id=%number%",
"Associated Global Systems": "https://tracking.agsystems.com/",
"DHL Parcel": "https://www.logistics.dhl/us-en/home/tracking/tracking-ecommerce.html?tracking-id=%number%",
"TNT": "https://www.tnt.com/express/en_us/site/tracking.html?searchType=con&cons=%number%",
"Speedex Courier": "http://www.speedexcourier.com/",
"UPS": "http://wwwapps.ups.com/WebTracking/track?track=yes&trackNums=%number%",
"USPS": "https://tools.usps.com/go/TrackConfirmAction_input?qtc_tLabels1=%number%"
}
}
API Request Errors
In the events of API request errors, AST uses conventional HTTP response codes in the 4XX and 5XX range to indicate the reason behind the error.
Error Code | Error type | Sample Error Message |
---|---|---|
400 | BadRequest | Missing parameter(s): tracking_number |
400 | BadRequest | Missing parameter(s): tracking_provider |
404 | Not Found | Invalid order ID |
404 | Not Found | Requests to resources that don’t exist or are missing |
401 | Unauthorized | Authentication or permission error, e.g. incorrect API keys |
500 | Internal Server Error | Server error |
Postman example
Please check screenshot for setup in postman.
Create new request and set method Post. Insert URL and in the Body section insert all the tracking information.

Than go to the Authorization section and select Type Basic Auth. Use REST API Consumer key and consumer secret in the username and password field and click on Send.
