How do I add a tracking number to a WooCommerce order?
Open the order in WP admin and put the number where the customer can see it. The Shipment Tracking extension adds provider, number and link to the order, and surfaces them on the My Account order page and in order emails. Without it, use a note to the customer, or an app that writes tracking meta over the REST API.
Three places a tracking number can live
Pick one and stay with it. Two of them writing different numbers on the same order is how a buyer ends up tracking a package that was never shipped to them.
| Method | Where the number ends up | Customer sees it |
|---|---|---|
| Note to customer | Order notes on the order | In the customer note email, if that email is enabled |
| Shipment Tracking fields | Order meta such as _tracking_number and _tracking_provider | My Account order page and customer order emails |
| REST API write by an app | The same order meta, written when the label is bought | Wherever your theme and emails render that meta |
Add it by hand on the order
Go to WooCommerce > Orders and open the order.
If Shipment Tracking is installed, fill in the provider, tracking number and date shipped, then save.
If it is not, add an order note, set the note type to Note to customer, and paste the carrier and number.
Set the order to completed when the package is actually on its way, not before.
Saving tracking details on their own does not send an email. WooCommerce triggers the customer email when the order status changes to Completed.
The meta keys Shipment Tracking uses
These are the convention the rest of the WooCommerce world reads, which is why an integration that writes tracking should write them rather than invent its own keys. Shipment Tracking also exposes a REST route at /wp-json/wc/v3/orders/{id}/shipment-tracking for programmatic access.
| Meta key | Holds |
|---|---|
| _tracking_provider | The carrier, chosen from the known provider list |
| _custom_tracking_provider | A carrier name you typed yourself |
| _tracking_number | The tracking number |
| _custom_tracking_link | A full tracking URL for a provider that is not listed |
| _date_shipped | The ship date shown to the customer |
What the customer actually sees
With Shipment Tracking the customer gets the provider, the tracking number, the shipping date and a link to the provider, on the order page under My Account and in the order emails generated after the details are saved. Without it, a note to customer is the only built-in path, and that arrives as the customer note email rather than as a tracking field.
Doing it once per order does not scale
Hand entry is fine at a handful of orders a day. Past that, the number is already in the label you just bought, and retyping it into WooCommerce is both slow and where transposed digits come from. The fix is to let whatever bought the label write the number back, so the order status and the tracking meta move together.
Key takeaways
- WooCommerce's Shipment Tracking extension adds provider, number, link and shipped date to an order.
- The convention is _tracking_number and _tracking_provider on the order meta.
- Saving tracking alone sends no email: the Completed status change does.
- A REST-connected shipping app can write both the status and the tracking in one step.
Tracking written back when you buy the label
I'd Ship That for WooCommerce is in early access. Paid orders arrive in The Workbench on a scheduled sync, you rate shop USPS and UPS, and buying the label writes back to the order: status set to completed, _tracking_number and _tracking_provider on the order meta, and a customer-visible order note carrying the tracking. It is one write per order, so the number on the label is the number on the order.
Related questions
Tracking is not part of a plain order screen. WooCommerce's Shipment Tracking extension is what adds a shipping provider, tracking number, tracking link and shipped date to the order and surfaces them to the customer.
Not on its own. Saving tracking details does not send an email, and the customer email is triggered when the order status changes to Completed. A note to customer is the other way to reach them, and it depends on the customer note email being enabled.
The Shipment Tracking fields hold one provider and number per entry, and order notes have no such limit, so a second number can always be added as another note to customer. Our WooCommerce write-back sets one tracking number per order and does not split an order across shipments.
Yes, if completed is how your store signals shipped. Completed is defined as fulfilled and complete, and it is the status change that triggers the customer email, so setting it when the label exists keeps the buyer's notification honest.