CSV Import

CSV Import lets you add tracking numbers to multiple WooCommerce orders at once by uploading a formatted .csv file. It is ideal when fulfilling bulk orders or when your shipping carrier portal or software exports tracking data as a CSV.

To automate CSV imports on a schedule without manual uploads, see Automated CSV Import (FTP/SFTP).

File requirements

  • Format: .csv (comma-separated values), UTF-8 encoding
  • Header row required — the first row must contain the column names exactly as shown in the field table below
  • Column order does not matter — the importer maps by header name
  • Extra columns are ignored
  • Date format must match the Shipped Date format selected during upload — DD-MM-YYYY or MM-DD-YYYY
  • No enforced row limit, but very large files take longer — leave the browser tab open until the import completes

Import steps

  1. 1Go to WooCommerce → Shipment Tracking → CSV Import.
  2. 2Click Choose file and select your .csv file.
  3. 3Select the Shipped Date format that matches the dates in your file (DD-MM-YYYY or MM-DD-YYYY).
  4. 4Check Replace tracking information if you want to overwrite existing tracking entries for matching orders. When checked, all previous tracking on a matched order is replaced. When unchecked, new tracking is added alongside existing entries.
  5. 5Click Upload file and import. A live progress log shows each row as it is processed — success rows show the order ID and confirmation; failed rows show the error reason.
  6. 6When complete, a summary shows the count of successful and failed rows.
CSV Import screen showing file upload input, date format selector, and Replace tracking checkbox
CSV import in progress showing a live log of rows being processed with success and error indicators
CSV import completed screen showing summary of successful and failed row counts

CSV field reference

FieldRequiredDescription
order_idYesWooCommerce order ID (numeric). If you use sequential order number plugins, use the internal WooCommerce ID, not the display number. With HPOS this is the order ID.
tracking_providerYesCarrier name — must match an enabled carrier name or a configured API alias exactly (case-sensitive).
tracking_numberYesThe tracking number for the shipment.
date_shippedYesShipment date in DD-MM-YYYY or MM-DD-YYYY format — must match the format selected during upload.
status_shippedYes0 = no status change; 1 = mark as Shipped; 2 = mark as Partially Shipped.
shipping_noteNoCustomer-visible note shown alongside tracking details.
skuNoProduct SKU for per-item (Tracking Per Item) tracking.
qtyNoQuantity of the SKU in this shipment (used with sku).

Standard CSV format

order_idtracking_providertracking_numberdate_shippedstatus_shippedshipping_note
101UPS1Z6E36W6039085826712-06-20251Shipped via express
102USPS920019024454143000312-06-20251Final shipment

Download basic CSV sample

Tracking Per Item CSV formats

Use these formats when assigning tracking to specific items within an order.

Format 1 — one row per tracking number, multiple SKUs comma-separated: use when all the items in the first package share the same tracking number.

order_idtracking_providertracking_numberdate_shippedstatus_shippedskuqtyshipping_note
119USPS920019024454143000312-06-20252t-shirt,blue-jeans1,1Partial shipment
119USPS920019024454144565113-06-20251t-shirt,blue-jeans1,1Final shipment

Format 2 — one row per SKU per tracking number: use when different quantities of different SKUs share the same tracking number and you want a separate row per item line.

order_idtracking_providertracking_numberdate_shippedstatus_shippedskuqtyshipping_note
119USPS920019024454143000312-06-20252t-shirt1Partial shipment
119USPS920019024454143000312-06-20252blue-jeans1Partial shipment
119USPS920019024454144565113-06-20251t-shirt1Final shipment
119USPS920019024454144565113-06-20251blue-jeans1Final shipment

Viewing the import log

If you need to review errors after the import screen is closed, go to WooCommerce → Status → Logs and filter by source ast-pro-csv-import.

Troubleshooting

  • Rows failing with carrier not found — the carrier name must match exactly (case-sensitive). Copy the name from Shipping Carriers or set up an API alias.
  • Dates failing — confirm the date format in your file matches the format selected on the upload screen. The importer does not auto-detect date format.
  • Order not found errors — use the internal WooCommerce order ID. If you use a sequential order number plugin, the display number may differ from the ID.
  • Import stops mid-way — the import runs in your browser. Navigating away or a PHP timeout will interrupt it. For large files, use Automated FTP/SFTP Import instead.