Kitgenix Order Tracking for WooCommerce

外掛說明

Customers don’t just want a tracking number — they want confidence.

After purchase, the questions are predictable:
“Has it shipped yet?”, “Is this coming in multiple parcels?”, “Which courier is it with?”, and “Can I track it right now?”

Kitgenix Order Tracking for WooCommerce gives you a clean, reliable way to manage WooCommerce shipment tracking without bloated shipping suites. Add multiple shipments to a single order (split deliveries, replacements, multi-parcel, different carriers), show tracking clearly to customers, and reduce “where is my order?” support tickets with a self-service tracking page.

It also includes a Tracking Analytics screen inside WooCommerce so you can understand shipping speed, exceptions, and how often customers check tracking.

Built for real-world shipping workflows

This plugin is especially useful if you:
– ship orders in more than one box (multi-parcel / multi-shipment),
– part-ship items while the rest are backordered,
– use multiple couriers (Amazon Logistics, An Post, DHL, DPD, DX, Evri, FedEx, Parcelforce, Royal Mail, UPS, Woodside, Yodel, etc.),
– want a branded tracking page instead of sending customers to random courier sites,
– want tracking shown in emails (cleanly, without duplicate blocks),
– want a “Partially shipped” workflow and email for staged fulfilment.

What the plugin does

  1. Add one or more shipments to a WooCommerce order (carrier + tracking number + optional shipped date + per-item quantities).
  2. Generate courier tracking links from built-in carrier URL patterns (plus an “Other” courier option for custom links).
  3. Display tracking for customers:
    • in emails,
    • and on a public tracking page via shortcode.
  4. Optionally show an approximate delivery route map (Leaflet + OpenStreetMap; no Google Maps, no API key, no CDN).
  5. Monitor operations with a Tracking Analytics dashboard (ship speed, totals, breakdowns, lookups, recent shipments).

Key features

Multiple shipments (multi-parcel, split deliveries, replacements)

Add as many shipments as you need to a single order. Each shipment can include:
– carrier (optional; if omitted, no carrier tracking link is generated),
– tracking number,
– shipped date (optional),
– shipped items + quantities (line-item allocation for partial fulfilment).

This makes partial shipments and multi-parcel deliveries accurate and customer-friendly.

Built-in carriers (UK & Ireland friendly)

Includes a carrier registry with icons and tracking URL patterns, so customers get direct “Track shipment” links.

Built-in carriers include:
– Amazon Logistics
– An Post
– DHL
– DPD Ireland
– DPD UK
– DX
– Evri
– FedEx
– Other (custom link / no pattern)
– Parcelforce Worldwide
– Royal Mail
– UPS Ireland
– UPS UK
– Woodside Distribution
– Yodel

Customer tracking page (self-service)

Add a tracking page anywhere using:
[kitgenix_tracking_form]

The tracking form supports:
– Order-based lookup (order number + billing email + postcode), and
– Tracking-number lookup (useful when the customer only has parcel details)

Great for reducing support tickets and giving customers a consistent experience.

Tracking in WooCommerce emails (done cleanly)

Tracking is appended to:
– WooCommerce Completed Order email, and
– the plugin’s own Partially Shipped email

Includes duplicate-guarding so tracking blocks aren’t repeated if templates/hooks are customised.

“Partially shipped” order status + email (included)

The plugin registers:
– a custom order status: wc-partially-shipped (“Partially shipped”), and
– a custom email: Kitgenix Partially Shipped

Ideal for stores that ship in stages and want to send tracking early without marking the whole order completed.

Optional route map (OpenStreetMap + Leaflet)

If enabled, the tracking view can show an approximate route map using:
– Leaflet (bundled locally — no CDN),
– OpenStreetMap tiles,
– Nominatim geocoding (endpoint + contact email are filterable)

Includes fallbacks if geocoding fails (shows what it can, or hides the map with a message).

Tracking Analytics dashboard (inside WooCommerce)

Adds an admin screen under the Kitgenix hub with practical metrics:
– shipped vs unshipped orders,
– total shipments,
– exceptions,
– average/median time-to-ship,
– carrier/status breakdowns,
– recent shipments,
– customer tracking lookup totals,
– date range selection (predefined windows like 7–180 days)

Calculations are batched and cached briefly (transients) to keep the dashboard fast.

How it works (quick overview)

1) Add tracking in wp-admin
Edit an order and use the Order Tracking meta box. Create shipments using the “Add tracking” modal:
– tracking number
– carrier dropdown (explicit selection, or leave blank)
– shipped date
– item quantities (loaded via AJAX)
– optional order status update after save (don’t change / partially shipped / completed)

2) Tracking appears for customers
If shipments exist, customers see a clear “Shipment Tracking” section in key emails and via the tracking page.

3) Customers can track without contacting you
Use the shortcode page so customers can look up tracking by order details or by tracking number.

4) You can measure shipping performance
Open Tracking Analytics to see speed, breakdowns, and customer behaviour.

Quick Start

  1. Install and activate the plugin.
  2. Create a page called “Track Your Order” (or similar).
  3. Add this shortcode:
    [kitgenix_tracking_form]
  4. Edit any order and add a shipment in the Order Tracking meta box.
  5. Send a Completed Order email (or use Partially Shipped) and confirm tracking is shown.

Developers

Text domain:
kitgenix-order-tracking-for-woocommerce

Shortcode:
[kitgenix_tracking_form]

Data model (high level):
– Shipments are stored as order meta under _kitgenix_tracking_shipments (array)
– Tracking numbers are indexed for fast lookup via repeated order meta _kitgenix_tracking_number (one meta row per tracking number)
– Admin UI stores the last chosen “update order status” action as order meta kitgenix_order_status_action (values: no_change, partial, completed)
– Carrier settings are stored in the option kitgenix_order_tracking_for_woocommerce_carriers_settings
– Counter option: kitgenix_order_tracking_for_woocommerce_tracking_numbers_added (privacy-safe total)
– Counter option: kitgenix_order_tracking_for_woocommerce_lookup_count (successful tracking-page lookups)
– Analytics aggregates are cached briefly in transients prefixed kitgenix_order_tracking_for_woocommerce_analytics_...
– Activation redirect uses transient kitgenix_order_tracking_for_woocommerce_do_activation_redirect (about 30 seconds)
– No custom database tables are created
– Uninstall does not automatically remove order meta (to preserve historical tracking)

Nonces / capabilities (summary):
– Order edit tracking save uses nonce action kitgenix_order_tracking_save (kitgenix_order_tracking_nonce) and requires edit_shop_order.
– Order-items modal loads via AJAX action kitgenix_order_tracking_for_woocommerce_get_order_items using nonce action kitgenix_order_tracking.
– Tracking form submissions use nonce action kitgenix_tracking_lookup (kitgenix_tracking_nonce).
– Carriers (Shippers) settings form uses nonce action kitgenix_order_tracking_for_woocommerce_save_carriers (kitgenix_order_tracking_for_woocommerce_carriers_nonce).

Hooks / filters:
– kitgenix_order_tracking_for_woocommerce_debug_save( bool $enabled, int $order_id ): bool (enable debug order note on save)
– kitgenix_order_tracking_for_woocommerce_nominatim_email( string $email ): string (supply/override Nominatim email param)
– kitgenix_order_tracking_for_woocommerce_nominatim_endpoint( string $endpoint ): string (override geocoding endpoint)

Admin AJAX endpoints:
– wp_ajax_kitgenix_order_tracking_for_woocommerce_get_order_items (load order items into the shipment modal)

External Services

This plugin may connect to external services in two situations:

1) When customers click courier tracking links
Tracking links open the carrier’s tracking page (e.g. Amazon Logistics, An Post, DHL, DPD, DX, Evri, FedEx, Parcelforce Worldwide, Royal Mail, UPS, Woodside Distribution, Yodel) or a custom “Other” URL. These links may contain the tracking number.

2) When the optional map is enabled
The tracking view may request:
– OpenStreetMap tile images
– Nominatim geocoding requests (to convert store/customer address details into coordinates)

Map implementation notes:
– Leaflet is bundled locally (no CDN fallback).
– Map tiles are loaded from https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png.
– Geocoding defaults to https://nominatim.openstreetmap.org/search and may include the full store and delivery address string in the q parameter.

3) In wp-admin (Kitgenix hub)
This plugin includes a shared “Kitgenix hub” component in wp-admin which may fetch publicly available plugin metadata from WordPress.org using WordPress core’s plugins_api() function.

Caching:
– Transient: kitgenix_hub_wporg_active_installs_v1
– Transient: kitgenix_hub_wporg_ratings_v1

Leaflet assets are bundled locally (no CDN).

No personal data is sold or shared by this plugin. Where external services are used, requests may include data required to perform the function (for example, a tracking number in a carrier link, or address data used for geocoding). Review the relevant provider policies for your use case.

Trademark Notice

All carrier names and logos are trademarks of their respective owners. This plugin is not affiliated with or endorsed by any courier, carrier, OpenStreetMap, or Nominatim service.

Support Development

If this plugin reduces “where is my order?” tickets and helps customers self-serve tracking, you can support ongoing development here:
https://buymeacoffee.com/kitgenix

Credits

Built with ❤︎ by @kitgenix – https://kitgenix.com

螢幕擷圖

  • Admin order screen: Add shipments with carrier, tracking number, shipped date, and item quantities.
  • Tracking form page: Track by order details or tracking number.
  • Tracking results: carriers, tracking numbers, and “Track shipment” links.
  • Completed Order email: clean Shipment Tracking section.
  • Partially Shipped email: tracking shown for staged fulfilment.
  • Optional route map: Leaflet + OpenStreetMap preview.
  • Tracking Analytics dashboard: shipped vs unshipped, shipments, exceptions, time-to-ship, and lookup totals.

安裝方式

  1. Install via Plugins Add New and search for “Kitgenix Order Tracking for WooCommerce”, or upload the ZIP to /wp-content/plugins/.
  2. Activate the plugin.
  3. Create a tracking page and add:
    [kitgenix_tracking_form]
  4. Add shipments in WooCommerce Orders Edit order.

常見問題集

Can I add multiple tracking numbers to one WooCommerce order?

Yes. You can add multiple shipments per order, including split parcels and partial shipments.

Can different shipments use different couriers?

Yes. Each shipment can have its own carrier and tracking number.

Which couriers are supported?

Built-in carriers include Amazon Logistics, An Post, DHL, DPD Ireland, DPD UK, DX, Evri, FedEx, Other, Parcelforce Worldwide, Royal Mail, UPS Ireland, UPS UK, Woodside Distribution, and Yodel.

Can I use a courier that isn’t listed?

Yes. Use Kitgenix Order Tracking Shippers to add custom carriers (including tracking URL patterns with {tracking_number}) and enable/disable built-in carriers. The built-in “Other” carrier is a fallback option with no automatic tracking URL.

Do customers get tracking in emails automatically?

Yes. Tracking is shown in the Completed Order email and the plugin’s Partially Shipped email when shipments exist.

Why isn’t tracking showing in the Completed Order email?

Common causes: tracking isn’t saved yet, the Completed Order email is disabled in WooCommerce, or another plugin/theme overrides email templates/hooks. You can also test with the Partially Shipped email.

What is the “Partially shipped” email?

It’s a dedicated email included with the plugin, designed for staged fulfilment. It can be triggered when an order status changes to wc-partially-shipped.

Can customers track without logging in?

Yes. The tracking page is public. Customers can look up tracking by order details or by tracking number.

Can customers track by tracking number only?

Yes. Tracking-number lookup is supported.

Does the plugin work with HPOS?

Yes. The plugin declares compatibility with WooCommerce custom order tables (HPOS).

Do I need Google Maps for the map feature?

No. The optional map uses Leaflet + OpenStreetMap. No API key required.

The map is blank — what should I check?

Check for a strict Content Security Policy, blocked OpenStreetMap tile requests, or aggressive script optimisation. Ensure the tracking page is allowed to load tiles and that frontend assets aren’t being stripped.

Does this plugin create WooCommerce Shipping labels or replace fulfilment suites?

No. It stores shipment tracking data and displays it in the right places. It doesn’t replace full shipping/fulfilment suites.

Is this GDPR friendly?

The plugin doesn’t add tracking cookies. It uses WooCommerce order details for lookups. Carrier links and map tiles/geocoding are external services; review their policies for your needs.

使用者評論

這個外掛目前沒有任何使用者評論。

參與者及開發者

以下人員參與了開源軟體〈Kitgenix Order Tracking for WooCommerce〉的開發相關工作。

參與者

變更記錄

1.0.5 (18 February 2026)

  • New: Added a Shippers tab (Kitgenix Order Tracking Shippers) for carrier management.
  • New: Added enable/disable controls for built-in carriers (always keeps the “Other” fallback).
  • New: Added carrier priority ordering so you can control which carriers appear first in the admin carrier dropdown.
  • New: Added custom carriers with per-carrier enabled toggle, name, tracking URL pattern (supports {tracking_number}), optional icon URL, and optional priority.
  • Change: Carrier dropdown now shows enabled carriers only, ordered by priority.
  • Change: Renamed the Kitgenix submenu to “Order Tracking”.
  • UI: Added Stock Sync for WooCommerce to the Kitgenix hub cards.
  • Fix: Corrected Kitgenix hub card markup for consistent layout.
  • Docs: Updated documentation, readme.txt, and WordPress.org screenshots.
  • Dev: Introduced AdminModule entrypoint (keeps settings storage unchanged).
  • Cleanup: Uninstall now removes the carrier settings option.
  • Dev: Regenerated /languages/kitgenix-order-tracking-for-woocommerce.pot translation template.

1.0.4 (27 January 2026)

  • Improvement: Minor bug fixes, i18n and PHPCS improvements; analytics and email template refinements.
  • Change: Declared PHP requirement as 8.1.
  • Cleanup: PHPCS/i18n/security fixes across admin and core files (output escaping, translator comments, optional nonce checks).
  • Change: Standardised allowed HTML and escaping in the admin hub and analytics views for consistent safe output.
  • Fix: Hardened analytics/admin asset enqueue detection to prefer $_GET[‘page’] then fall back to hook-suffix so analytics and hub assets load on existing installs.

1.0.3 (05 January 2026)

  • Improvement: Updated the email hook to align with WooCommerce’s modern email template structure.
  • Cleanup: Implemented minor code refinements and cleanup for better consistency and maintainability.

1.0.2 (01 January 2026)

  • New: Added a new top-level Kitgenix admin hub menu to manage Kitgenix plugins from one place (install/activate/open).
  • New: Tracking Analytics is now available under Kitgenix Tracking Analytics, with a refreshed branded header and quick links to documentation/support/reviews.
  • New: Added a Support tab and a new (privacy-safe) “tracking numbers added” metric; ranklist percentage bars now render reliably via a small admin script.
  • Improvement: Admin order screen refactor — improved “Add tracking” modal markup/CSS class naming and modal show/hide behaviour.
  • Improvement: Admin styling updates — introduced shared Kitgenix design tokens (including better dark-mode support) and added bundled hub styles/logos.
  • Change: Developer-facing — renamed some internal actions/filters/options to match the full plugin slug (e.g. AJAX action, Nominatim filters, lookup counter option). Update any custom code that targets the old names.

1.0.1 (18 December 2025)

  • New: Shortcode tracking page now shows a full order summary and item statuses when an order has not yet shipped (no shipments) — including optional addresses after postcode verification and the map when available.
  • New: Added WooCommerce admin Tracking Analytics dashboard (WooCommerce Tracking Analytics) with KPIs for shipped/unshipped orders, total shipments, exceptions, average/median time-to-ship (days), and all-time tracking lookups.
  • New: Added carrier and status reporting, including ranked breakdowns with percentage bars plus an improved recent shipments view.
  • UI: Redesigned Tracking Analytics into a modern, branded reporting dashboard (hero header, tabs, KPI cards with context text, insights panel, trend sparkline, quick date-range presets, and status pills).
  • Improvement: Improved Analytics performance and stability — orders are fetched in batches (avoids limit => -1), analytics calculations are transient-cached, and assets are enqueued using the correct admin hook for reliable loading.
  • Improvement: Minor UX/copy improvements for the unshipped state (“not shipped yet” messaging) and consistent rendering parity with shipped view.
  • Improvement: Email templates, placement, and styling updates to better match WooCommerce and site branding.
  • Change: Updated the Partially Shipped HTML and plain templates to align with WooCommerce’s modern email structure (header/footer hooks, intro block, and additional content handling).
  • Fix: Guarded template variables to prevent undefined variable notices (e.g., $additional_content).
  • Improvement: Centralised tracking output into a single renderer (Email_Hooks::append_tracking_to_email) to remove duplication and improve maintainability.
  • Change: Updated the Partially Shipped template to call the renderer in the correct placement (above the order summary) and rely on hook-aware logic.
  • UI: Styling improvements — tracking tables and links now use WooCommerce email colour settings (per-email where available, global fallbacks otherwise) with automatic accessible link contrast when needed.
  • Improvement: Improved CTA behaviour and item display.
  • Change: Backwards-compatible changes that avoid modifying WooCommerce core templates — honours WooCommerce Settings Emails colours and remains compatible across WooCommerce versions.
  • UI: Analytics table polish — sticky headers, compact rows, zebra striping, truncation for long cells, and improved hover/readability.

1.0.0 (7 December 2025)

  • New: Initial release.
  • New: Add multiple tracking numbers to WooCommerce orders.
  • New: Customer tracking page via [kitgenix_tracking_form] shortcode.
  • New: Carrier logos and automatic tracking URLs.
  • New: Optional OpenStreetMap delivery route display.
  • New: Custom “Kitgenix Partially Shipped” WooCommerce email.
  • New: Tracking details included in Completed Order email.