WooCommerce shipping guide

How do I bulk complete WooCommerce orders with tracking?

WooCommerce's bulk actions on the Orders screen change status and nothing else. Change status to Completed moves the whole selection, but no bulk action attaches a tracking number, so the customer email goes out with nothing to follow. Tracking has to be written per order, which is what a REST API connection does as each label is bought.

What the bulk action actually does

Bulk actionWhat it changes
Change status to ProcessingStatus only
Change status to On holdStatus only
Change status to CompletedStatus only, and the customer email goes out
Change status to CancelledStatus only
Move to TrashTakes the orders out of the list
Remove personal dataStrips stored personal data

That is the documented set on the Orders screen. Tracking is not among them, and it is not a setting you have missed.

Why completed with no tracking is the worst outcome

Completed is defined as fulfilled and complete, and the status change is what sends the customer email. Bulk completing a day's orders therefore tells every buyer the order is done while the tracking is still in a browser tab somewhere. The support messages arrive before the numbers do.

Tracking lives on the order, one order at a time

A tracking number is order meta, not a list level property. The Shipment Tracking convention stores it as _tracking_number with _tracking_provider alongside, and a customer-visible order note is the other place a buyer can read it. Both are written against a single order, so any honest bulk flow is still a loop of per order writes.

Doing the loop by hand is the part worth removing, not the loop itself.

The pass that gets both in one go

  1. Filter the Orders screen to Processing so you are looking at paid, unfulfilled work.

  2. Pack and weigh each box.

  3. Buy the label for that box.

  4. Write the tracking number and provider to that order.

  5. Set that order to completed, which is what sends the customer their email.

Read as a bench routine it is five steps. Read as software it is one write per order, triggered by the purchase.

If you are cleaning up after the fact

When orders were already bulk completed without tracking, the recoverable move is the order note. A note to customer is shown to customers and notifies them when the customer note email is enabled, so the number still reaches the buyer without a second status change. Fix the process in the same session, or you will do this again next week.

Key takeaways

  • Bulk actions change status, trash orders or remove personal data.
  • No bulk action writes a tracking number.
  • Completed is the status change that sends the customer email.
  • Tracking is per order meta, so it is written per order.
With I'd Ship That

The status and the tracking are the same write

I'd Ship That for WooCommerce is in early access. Orders in processing and on-hold sync into The Workbench, which is part of Pro, and you work the day's boxes from that one list. When a label is bought we set that order to completed, write the tracking number and provider, and add a customer-visible order note, so the email the buyer receives already has the number in it.

See the WooCommerce integration

Not in WooCommerce itself. The documented bulk actions on the Orders screen change status, trash orders or remove personal data. Anything that puts a tracking number on many orders is writing them one at a time underneath, whether that is an extension on your site or a connection over the REST API.

At the point the label exists. Completed is read by the buyer as shipped, and the email is sent by that status change, so setting it while the box is still open promises something that is not true yet. If your carrier collects in the evening, completing when the label prints is still honest.

On hold means awaiting payment confirmation with stock already reduced, so it belongs in the queue only if your store ships against offline payments before the money lands. If you use it as a general holding pen, your Processing filter stops describing the work you owe.

Only when the customer note email is enabled under WooCommerce, Settings, Emails. A private note sends nothing at all and is admin reference only. Check that setting once, because a store with the customer note email disabled writes tracking that the buyer never sees.