Bulk Paste lets you add tracking to multiple WooCommerce orders by pasting CSV-style rows directly from Excel, Google Sheets, or a carrier portal — no file upload needed. It is ideal for quick one-off batches where preparing a full CSV file feels heavy.
The same carrier validation, date parsing, and order ID rules apply as in CSV Import — if a row works in CSV Import, it works in Bulk Paste.
How to use Bulk Paste
Go to WooCommerce → Shipment Tracking → Bulk Paste.
Step 1 — Paste your rows
Select a mode at the top of the screen:
- Simple — one tracking number per order (standard columns only).
- Per-Product (Tracking Per Item) — one tracking number per product line within an order. Adds
skuandqtycolumns. Requires Tracking Per Item enabled in General Settings.
Paste your rows into the textarea. Each row must be comma-separated. Click Load Sample Data to see a valid example for the selected mode.
Configure the two options below the textarea:
- First line contains column labels — keep ON if your first row is a header. Turn OFF only if you paste raw data with no header row; columns will fall back to positional mapping.
- Replace existing tracking details — turn ON to overwrite existing tracking on matched orders. Leave OFF to add tracking alongside existing entries.
The Rows counter shows how many non-empty lines were detected. Click Parse pasted elements to continue.
Step 2 — Map columns
AST PRO auto-detects columns by header name and maps them to the matching fields. Review the mapping and correct any mismatches using the dropdowns. The Detected: N rows counter confirms how many data rows were parsed.
order_id mapping is required — Bulk Paste will not run without it. All other fields are optional depending on your paste mode.Click Run bulk alignments to start importing. Click Change pasted content to return to Step 1.
Step 3 — Import in progress
Rows are processed sequentially. The screen shows live progress: a percentage bar and a per-row log marked success or failure. Do not navigate away or close the tab — doing so interrupts the import. For very large batches, use CSV Import or FTP/SFTP Auto-import instead.
Step 4 — Review results
When all rows are processed the summary shows:
- Updated Existing — rows applied successfully.
- Warnings / Skipped — rows that failed (invalid carrier, missing order, bad date, etc.).
- Full per-row log — retained so you can review individual failures.
Click View Orders to go to the WooCommerce orders list, or Paste More Rows to start a new batch.
Sample data
Simple mode:
order_id,tracking_provider,tracking_number,date_shipped,status_shipped,shipping_note
101,USPS,94001102008823121544,12-06-2025,1,Shipped from East warehouse
102,FedEx,781299388123,12-06-2025,1,Fragile packaging
103,UPS,1Z9E35W60310239123,11-06-2025,1,Dispatched standard ground
Per-Product (Tracking Per Item) mode:
order_id,tracking_provider,tracking_number,date_shipped,status_shipped,shipping_note,sku,qty
101,USPS,94001102008823121544,12-06-2025,2,Partial shipment,woo-tshirt,1
101,FedEx,781299388123,13-06-2025,1,Final shipment,woo-jeans,1
# on order IDs (e.g. #101) is stripped automatically — you can copy values directly from the WooCommerce orders column.Field reference
| Field | Required | Description |
|---|---|---|
order_id | Yes | WooCommerce order ID. A leading # is stripped automatically. |
tracking_provider | Yes | Carrier name — must match an enabled carrier or API alias exactly (case-sensitive). |
tracking_number | Yes | Tracking code issued by the carrier. |
date_shipped | Yes | Shipment date — must match the configured date format (DD-MM-YYYY or MM-DD-YYYY). |
status_shipped | Yes | 0 = no status change; 1 = Shipped; 2 = Partially Shipped. |
shipping_note | No | Customer-visible note shown alongside tracking details. |
sku | TPI only | Product SKU to attach tracking to a specific order item. |
qty | TPI only | Quantity of that SKU in this shipment. |
Troubleshooting
- Carrier not found — carrier names are matched case-sensitively. Copy the exact name from Shipping Carriers or set up an API alias.
- Date parsing failures — check that your dates match the date format in your API Date Format setting.
- Order not found — use the internal WooCommerce order ID. Sequential order number plugins may display a different number.
- Import stopped mid-way — the import runs in your browser tab. Navigating away stops it. Close no tabs until the Step 4 summary appears.