Shipment Tracking for WooCommerce – Trackora

विवरण

Trackora is a free shipment tracking plugin for WooCommerce. Save a tracking number on an order and the link appears everywhere your customer looks: the confirmation email, the My Account order page, and a public Track Your Order page.

“Where is my order?” is the email every store gets most, and every one of them is time you would rather spend shipping. A customer who can see where their parcel is does not write it.

No settings, no account, no API keys. 100% free — no PRO version, no upsells.

HPOS Compatible · Block Checkout Compatible · 152 Carriers · Bulk CSV Import · REST API · Free & Open Source

Why Trackora

Whether you ship 5 orders a day or 5,000 — single-product stores, high-volume shops, dropshippers and 3PL-fulfilled catalogues all handle tracking the same way here:

  • 152 pre-built carriers in 37 countries, each with the correct tracking URL
  • Multiple tracking numbers per order, for split shipments
  • Bulk CSV import — add tracking to hundreds of orders from a spreadsheet instead of one order at a time, with column mapping, an optional status change, a live progress bar and a reason for every row that fails
  • Custom carriers with your own tracking URL — no coding
  • Public tracking page via the [wcst_tracking] shortcode — customers look up shipments with their order number and billing email, no login required
  • Styling studio for that page — colours, sizes and starter styles with a live preview, plus a CSS editor, no theme files touched
  • Tracking column in the orders list, with copy-to-clipboard
  • REST API for automation, fully documented on GitHub
  • HPOS, Blocks and Subscriptions compatible
  • Privacy-first and GDPR ready — the plugin never calls a carrier’s server

How It Works

  1. Install and activate Trackora.
  2. Pick the carrier and paste the tracking number on the order screen.
  3. Done — the tracking link reaches your customer automatically.

Import tracking in bulk

Your carrier or your 3PL already sends you a file at the end of the day. Import Tracking turns it into saved tracking numbers, from the Trackora screen or from the button at the top of your orders list.

  1. Drop the file in. CSV saved by any spreadsheet — comma, semicolon or tab separated, and files exported by Excel in a non-English locale keep their accents. Or download a sample built from your own store: real orders of yours that are awaiting shipment and have no tracking yet.
  2. Check what Trackora read. Column headers couriers actually export are recognised on sight — “Order Number”, “Carrier”, “Ship Date”, “Número de guía”, “Sendungsnummer” and many more, in six languages — and the mapping step shows you that reading so you can correct anything before a single order is touched. Columns Trackora does not know are left alone, so a warehouse export keeps its bays and invoice references.
  3. Import. Rows are applied in batches behind a live progress bar, and every row that could not be imported is listed afterwards with its line number and the reason.

An import writes tracking and, unless you ask for more, changes nothing else. Two optional switches sit on the mapping step: move every order in the file to a status such as Completed, and send each customer the WooCommerce email for that new status — the email that already carries the tracking number. Both are off by default, and the status changes run only after the whole file has been read, so an order with two shipments in your file is emailed once, with both.

Orders are matched by the number your store displays, an order that already has a tracking number is skipped rather than duplicated, and a carrier name Trackora does not recognise is saved as a custom carrier instead of failing the row.

Supported carriers

152 carriers across 37 countries, including UPS, FedEx, USPS, DHL, Royal Mail, EVRi, DPD, Australia Post, Canada Post, PostNL, PostNord, Correos, SEUR, MRW, Estafeta, Servientrega, Coordinadora, Chilexpress, Andreani, OCA, Interrapidisimo, Olva Courier, Correios, Japan Post, SF Express, Thailand Post and 120+ more across the Americas, Europe, Asia-Pacific, the Middle East and Africa.

Don’t see yours? Add it as a custom provider with your own tracking URL — no coding needed. Every carrier is named, with its terms of service and privacy policy, in the External services section below.

Works with the plugins you already run

  • Custom and sequential order numbers — the tracking page and the CSV importer resolve orders by the number your store actually displays, so WooCommerce Sequential Order Numbers, Sequential Order Numbers Pro and Custom Order Numbers for WooCommerce work with no configuration. Any other numbering scheme can be added with the wcst_order_number_meta_keys filter
  • WooCommerce Subscriptions — tracking numbers are never copied onto renewal orders, so next month’s subscription order never arrives carrying last month’s tracking link
  • Email customisers — tracking is injected through WooCommerce’s own woocommerce_email_before_order_table hook, so any customiser that keeps the standard order email templates — YayMail, Kadence WooCommerce Email Designer, WP HTML Mail and others — displays it with no extra setup
  • HPOS and Block Checkout — full support for High-Performance Order Storage as well as legacy post storage, and for the block-based cart and checkout
  • Label printers, 3PLs and ERPs — anything that can call the WooCommerce REST API can push tracking numbers straight onto orders. Files exported by a courier usually import as-is: Order Number, Carrier, Ship Date, “Número de guía”, “Sendungsnummer” and many more column headers are recognised automatically, in English, Spanish, German, French, Italian and Portuguese

For developers

Trackora exposes a REST API with full create, read, update and delete over tracking items, the PHP helpers wcst_add_tracking() and wcst_delete_tracking(), and filters to extend the carrier list, the orders list column and the email output.

Endpoints, filters and code examples are documented on GitHub: https://github.com/slbarriosdev/wc-shipment-tracker — bug reports and contributions welcome.

External services

This plugin generates tracking links pointing to carrier websites. When a tracking number is added to an order, the plugin builds a URL for the selected carrier and displays it to the store admin and customers.

The plugin does not make any server-side HTTP requests to carrier websites. Data is only transmitted when a user (admin or customer) actively clicks a tracking link — at that point their browser connects to the carrier’s website and the tracking number (and in some cases the shipping postcode) is passed in the URL as required by that carrier’s tracking system.

Each carrier operates its own website under its own terms of service and privacy policy. The external carrier services this plugin may link to include:

Global

Argentina

Australia

Austria

Belgium

Brazil

Canada

Chile

China

  • China Post / EMS — Privacy policy currently unavailable (provider website blocks automated access)
  • YTO ExpressPrivacy
  • ZTO ExpressPrivacy
  • SF ExpressPrivacy
  • CainiaoPrivacy
  • 4PXPrivacy
  • YanwenPrivacy
  • YunexpressPrivacy

Colombia

Czech Republic

Ecuador

Finland

France

Germany

India

Ireland

Italy

Japan

Malaysia

Mexico

Netherlands

New Zealand

Nigeria

Peru

Poland

Portugal

Romania

Singapore

South Africa

South Korea

Spain

Sweden

Thailand

Turkey

United Kingdom

United States

Venezuela

स्क्रीनशॉट्स

इंस्टॉलेशन

  1. Upload the trackora folder to /wp-content/plugins/, or install directly from the WordPress plugin repository
  2. Activate the plugin through the Plugins menu in WordPress
  3. Make sure WooCommerce is installed and active
  4. Open any WooCommerce order and use the Shipment Tracking meta box to add your first tracking number
  5. (Optional) Add the [wcst_tracking] shortcode to any page to create a public Track Your Order page

सामान्य प्रश्न

How do I add a tracking number to a WooCommerce order?

Open the order, find the Shipment Tracking meta box, select the carrier, enter the tracking number and ship date, and click Save. The tracking link is instantly added to the customer’s order email, their My Account page, and the tracking lookup page.

Is Trackora free?

Yes — completely free. All features (unlimited tracking numbers, 152 carriers, emails, My Account, tracking page, CSV import, REST API) are included. There is no premium version and no locked functionality.

Does this plugin require WooCommerce?

Yes. Trackora requires WooCommerce to be installed and active.

Does Trackora include a “Track Your Order” page?

Yes. Add the [wcst_tracking] shortcode to any page and customers can look up their shipment by entering their order number and billing email — no login required.

Can I add more than one tracking number per order?

Yes, as many as you need — useful for split shipments or orders shipped with multiple carriers.

My carrier is not in the list. Can I still use it?

Yes. Select “Custom Provider” when adding a tracking item and enter your carrier name and tracking URL, using %1$s where the tracking number should go — for example https://carrier.com/track?id=%1$s. You can also paste the complete link for that one shipment, with the number already in it. The live preview shows the exact URL your customer will open. If the carrier has no tracking page at all, leave the link empty and the number is shown without a Track button.

Can I import tracking numbers in bulk from a CSV file?

Yes. The Import Tracking tab on the Trackora screen — also one click from the top of your orders list — writes tracking to hundreds of orders at once. Drop your file in, check the column mapping Trackora read out of your header row, and import. Download a sample built from your own store — real orders awaiting shipment that have no tracking yet, with one of them repeated on a second line to show how a single order can carry more than one shipment — paste your tracking numbers and upload it. Comma, semicolon and tab separated files are all accepted, column headers your carrier or 3PL already exports are recognised in six languages, and every row that could not be imported is listed with its line number and the reason. Re-importing the same file never duplicates anything.

Does importing a CSV notify my customers?

Only if you ask it to. By default an import writes tracking numbers and changes nothing else — no status change, no email. Two optional switches on the mapping step change that: move every order in the file to a status such as Completed, and send each customer the WooCommerce email for that new status, which already carries the tracking number this import saved. The email switch only becomes available once you have chosen a status, since Trackora has no email of its own to send. The status changes run after the whole file has been read, so an order carrying two shipments in your file is emailed once, with both.

Does the tracking page work with sequential or custom order numbers?

Yes. Both the public tracking form and the CSV importer look orders up by the number your store displays, not the internal ID, so plugins such as WooCommerce Sequential Order Numbers and Custom Order Numbers for WooCommerce work without configuration.

Does the plugin send my store data to external services?

No. Trackora makes zero server-side requests to third parties. Tracking links are simply URLs that open the carrier’s website when a user clicks them.

Is this plugin compatible with WooCommerce HPOS, Blocks and Subscriptions?

Yes. Trackora is fully compatible with High-Performance Order Storage (and legacy order storage), declares compatibility with the block-based cart and checkout, and prevents tracking numbers from being copied to subscription renewal orders.

Can I add tracking numbers via the REST API or programmatically?

Yes. The plugin provides a REST API covering create, read, update and delete, plus the PHP helpers wcst_add_tracking() and wcst_delete_tracking() for use from themes, plugins, or automation scripts.

Does Trackora handle GDPR data requests?

Yes. Trackora registers a personal data exporter and eraser with WordPress, so tracking numbers, carrier names and ship dates attached to a customer’s orders are included when you run Tools Export Personal Data or Tools Erase Personal Data. It also contributes a section to the privacy policy guide at Settings Privacy.

समीक्षाएं

जुलाई 30, 2026
Trackora is a simple, reliable, and easy-to-use WooCommerce shipment tracking plugin.
जुलाई 25, 2026
Very useful plugin and easy to use. However, it is missing many French logistics carriers. It would be great if more French shipping providers could be added. An even better feature would be allowing users to manually add their own carriers and save them, so they can be selected and used directly in the future without having to configure them again. Overall, a great plugin with a lot of potential. Hope to see more carrier support and customization options in future updates.
2 के सभी समीक्षा पढ़ें

सहायक &डेवलपर्स

यह खुला स्रोत सॉफ्टवेयर है। अनुगामी लोगो ने इस प्लगइन के लिए योगदान दिया है।

योगदानकर्ता

बदलाव विवरण

1.4.1

  • New: An “Import Tracking” tab on the Trackora screen — add tracking to hundreds of orders from a spreadsheet instead of one order at a time. Three steps: drop the file in, check what Trackora read from it, import. Rows are applied in batches behind a live progress bar, and every row that could not be imported is listed afterwards with its line number and the reason
  • New: An “Import Tracking” button at the top of the WooCommerce orders list, beside “Add order”, so the importer is one click from where you notice the orders waiting
  • New: A column mapping step. Trackora shows which column of your file it read as the order, the tracking number, the carrier and the ship date, and you can correct any of it before a single order is touched. Columns it does not recognise are left alone, so a warehouse export keeps its bays and invoice references
  • New: Optionally move every order in the file to a status — Completed, for example — as part of the import. Off by default: unless you ask, an import writes tracking and changes nothing else
  • New: Optionally send each customer the WooCommerce email for that new status. Also off by default, and only available once a status is chosen, since Trackora has no email of its own — what reaches your customer is WooCommerce’s own notification, which already carries the tracking number this import saved. Status changes are applied after the whole file has been read, so an order carrying two shipments in your file is emailed once, with both
  • New: “Start at row” picks an import up where you left off, and “Tracking already saved: Keep or Replace” decides what happens to an order that already has tracking
  • New: The downloadable sample is built from your own store — up to five real orders awaiting shipment that have no tracking yet, with one of them repeated on a second line so you can see how a single order carries more than one shipment
  • Improvement: Column headers your carrier or 3PL already exports are recognised automatically — “Order Number”, “Carrier”, “Ship Date”, “Número de guía”, “Sendungsnummer” and many more — so a file straight from your courier usually imports without being renamed first
  • Improvement: Comma, semicolon and tab separated files are all accepted, and files saved by Excel in a non-English locale keep their accents
  • Improvement: A tracking number your spreadsheet turned into scientific notation (1.2345E+19) is reported as exactly that, instead of being saved as a broken number
  • Improvement: A carrier name that matches none of the built-in carriers is saved as a custom carrier, so a typo never costs you a tracking number
  • Improvement: Re-importing the same file does not duplicate anything — a tracking number an order already has is skipped

1.3.4

  • New: A “Trackora” screen under WooCommerce — a live studio to style the [wcst_tracking] shortcode: colour, size and font controls (or the CSS editor) beside a real-time preview, starter styles (Minimal, Rounded, Card, Gradient, Midnight) and Form/Results and Desktop/Mobile toggles
  • Improvement: The public tracking form now carries its own baseline styles scoped to #wcst-tracking-app, so it looks consistent in any theme and no longer inherits unrelated styling from the surrounding page
  • Improvement: The Shipment Tracking column on the orders list now shows the carrier name in bold above each tracking number, so you can tell shipments apart at a glance
  • Improvement: The “Trackora” menu entry now sits at the end of the WooCommerce submenu instead of in between WooCommerce’s own items
  • Fix: A tracking number whose carrier has no tracking URL is no longer rendered as an empty link that reloaded the orders list when clicked
  • Fix: Custom CSS with an unbalanced brace can no longer escape the tracking form and restyle the rest of the page. Braces are balanced on save, on output and in the live preview, while braces inside strings, comments and @media blocks keep working
  • Fix: Custom CSS no longer loses the “>” child combinator, so selectors such as .wcst-form > input now behave as written

1.3.3

  • New: A Review link on the Plugins screen, next to Documentation and Support
  • Improvement: The plugin is now listed as “Shipment Tracking for WooCommerce – Trackora”, so it is easier to find in the plugin directory
  • Improvement: Rewrote the plugin description — shorter and clearer, with the carrier list up front. The REST API and filter reference now lives on GitHub, where it is easier to keep current

1.3.2

  • New: Documentation and Support links on the Plugins screen, so the support forum is one click away — and still reachable when WooCommerce is deactivated
  • New: An occasional, dismissible review request in the admin. It only appears after the plugin has been installed for two weeks and has saved at least five tracking numbers, it never blocks anything, and “No thanks” is final
  • New: wcst_tracking_saved action, fired when a new tracking item is stored

1.3.1

  • Improvement: Adding, editing or deleting a tracking number on the order screen now confirms with a brief toast notification above the Shipment Tracking box, instead of a blocking browser alert() dialog. The messages are announced to screen readers — confirmations politely as a status, errors assertively as an alert
  • Improvement: Reworked the Shipment Tracking meta box — refreshed the styling of the add/edit form and the tracking items, and removed the tracking-link preview row, which duplicated the live URL warning already shown for custom links

1.3.0

  • New: Personal data exporter and eraser, so shipment tracking data is included in WordPress Tools Export Personal Data and Tools Erase Personal Data requests, plus a section in the privacy policy guide. Note that erasure requests now permanently delete the tracking numbers on that customer’s orders. Uses the order CRUD API, so it works on HPOS and legacy order storage alike
  • New: REST API now supports PUT and PATCH on a tracking item — the API is complete CRUD, as the documentation already claimed. A partial update only writes the fields you send
  • New: wcst_orders_list_column_html filter on the Shipment Tracking column of the orders list, and a wcst_before_update_tracking_items filter for symmetry with the add and delete filters. The readme now lists every filter the plugin exposes
  • New: Added the InterLink carrier (UK), the former trading name of DPD Local
  • Fix: Once a carrier was selected in the meta box there was no way back to “Custom Provider”, because the enhanced select consumed that option to use it as its placeholder. It is now always listed and selectable
  • Improvement: The custom carrier fields now explain themselves. The Tracking Link field shows an example, a help tip next to the label describes where the tracking number goes, the live preview shows the final URL the customer will open instead of the raw template, and a warning appears when the link carries neither the placeholder nor the tracking number
  • Fix: The bundled translations had not been loaded since 1.2.3. Removing load_plugin_textdomain() back then also removed the only thing that registers a plugin’s own /languages directory — WordPress otherwise looks in wp-content/languages/plugins alone — so all 14 locales silently fell back to English. The call is restored, on the init hook. The template was regenerated and the 24 strings it was missing were translated in every locale
  • Fix: Custom tracking links were run through sprintf(), which read percent-encoded characters as format specifiers. A link containing %20, %3A, %2F or %7B was silently corrupted, and on PHP 8 a trailing “%” threw a fatal ValueError on the order screen, the orders list, the email and the shortcode. Placeholders are now substituted literally
  • Fix: Updating a tracking item no longer blanks the fields that were not supplied. Previously any caller that omitted a field silently cleared the carrier, custom link or ship date
  • Fix: Removed the undocumented wc/v1/providers and wc/v2/providers routes. That is a generic path inside WooCommerce core’s own namespace and was not ours to register; the carrier catalogue stays at wc-shipment-tracker/v1/providers
  • Fix: The Tracking Link field is no longer an input type="url". Some browsers rejected a URL containing the %1$s token as invalid and refused to submit the form
  • Fix: Passing no carrier or ship date to the REST API no longer triggers a PHP 8.1 deprecation notice
  • Fix: The tracking item route no longer matches an empty tracking ID
  • Improvement: readme now documents the real carrier count (152 across 37 countries, previously understated as 60+ across 20+) and the real set of REST verbs and namespaces. It was also restructured

Releases 1.2.6 and earlier are listed in changelog.txt, bundled with the plugin.