Title: TrackKaro Pakistan &#8211; Courier Tracking &amp; COD
Author: DANGO Solutions
Published: <strong>June 4, 2026</strong>
Last modified: June 4, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/dango-trackkar.svg)

# TrackKaro Pakistan – Courier Tracking & COD

 By [DANGO Solutions](https://profiles.wordpress.org/usmanghazanfar/)

[Download](https://downloads.wordpress.org/plugin/dango-trackkar.1.0.46.zip)

 * [Details](https://wordpress.org/plugins/dango-trackkar/#description)
 * [Reviews](https://wordpress.org/plugins/dango-trackkar/#reviews)
 *  [Installation](https://wordpress.org/plugins/dango-trackkar/#installation)
 * [Development](https://wordpress.org/plugins/dango-trackkar/#developers)

 [Support](https://wordpress.org/support/plugin/dango-trackkar/)

## Description

**TrackKaro is a serviceware plugin.** It connects your WooCommerce store to the**
TrackKaro platform** (https://trackkaro.pk), an external paid SaaS service operated
by DANGO Solutions. All courier API connections, status polling, and tracking data
processing happen on the TrackKaro servers — not locally on your WordPress installation.
A TrackKaro account is required; new accounts include a free trial with no credit
card needed.

Pakistani e-commerce stores lose hours every week manually checking courier websites
and copy-pasting tracking numbers into order notes. TrackKaro fixes that.

Connect your WooCommerce store once, and TrackKaro automatically polls your courier
APIs in the background, updates every order’s status, notifies your customers, and
marks orders complete the moment a delivery is confirmed — all without you lifting
a finger.

**Supported Couriers:**

 * ✅ PostEx
 * ✅ TCS
 * ✅ Leopards Courier (API + real-time Push/webhook support)
 * ✅ CallCourier
 * ✅ Sonic / Trax
 * ✅ Daewoo FastEx
 * ✅ M&P Courier

> **A free TrackKaro account is required.** Sign up at [trackkaro.pk](https://trackkaro.pk)—
> no credit card required for the free trial.

**Why TrackKaro?**

Pakistan’s courier APIs are fragmented, inconsistent, and go down without warning.
TrackKaro’s server layer normalises statuses across all couriers into one clean 
format, handles retries, and keeps your store’s data accurate even when a courier
API is having a bad day. You get dedicated tracking infrastructure without building
or maintaining any of it yourself.

**Key Features:**

#### Automatic Status Sync

TrackKaro polls your couriers in the background via WP-Cron. Statuses update from“
In Transit” to “Out for Delivery” to “Delivered” automatically — no manual refreshes.

#### Branded Customer Tracking Page

Every order gets a tracking page on your own domain. Customers click the link in
their order email and see the full delivery timeline — your store name, your colours,
your brand.

#### Real-Time Leopards Push Updates

Leopards Courier can push status updates to TrackKaro the moment they happen (no
polling lag). Your orders update within seconds of a courier scan.

#### Courier Order Creation

Create shipment bookings with PostEx and Leopards directly from the WooCommerce 
order screen — COD, prepaid, and zero-value orders all supported. No need to log
into courier portals.

#### Bulk Tracking Import

Got a spreadsheet of tracking numbers? Import them all at once via CSV. TrackKaro
creates jobs for each one and starts syncing immediately.

#### Auto-Complete Orders on Delivery

When a parcel is delivered, TrackKaro can automatically mark the WooCommerce order
as Completed.

#### Order List Tracking Column

See every order’s live courier status right in the WooCommerce Orders list.

#### Dashboard Widget

A quick-glance widget on your WordPress dashboard shows active shipments, deliveries
this month, and your delivery rate.

#### Customer Status Email Notifications

Optionally send automated email updates to customers when their parcel moves to 
key milestones (dispatched, out for delivery, delivered). Works via TrackKaro’s 
mail server or your own SMTP.

#### HPOS Compatible

Fully compatible with WooCommerce High-Performance Order Storage (custom order tables).
Tested with WooCommerce 5.0 through 9.x.

**How It Works:**

 1. Install the plugin and activate it on your WooCommerce store.
 2. Sign up for a free TrackKaro account at [trackkaro.pk](https://trackkaro.pk) (takes
    2 minutes).
 3. Copy your API token from the TrackKaro dashboard and paste it into WooCommerce  
    TrackKaro Settings.
 4. Done. Add a tracking number to any order and TrackKaro takes it from there.

Your free trial includes a set number of tracking jobs so you can test with real
orders before subscribing.

**Pricing:**

TrackKaro uses a prepaid credit model billed in PKR. Buy a plan that fits your monthly
order volume. No hidden fees. No long-term contracts. See current plans at [trackkaro.pk](https://trackkaro.pk).

### External Services

**This plugin is SERVICEWARE.** It has no standalone tracking functionality — it
is a connector to the TrackKaro external platform. All courier tracking, status 
polling, API calls to courier companies, and shipment management are processed exclusively
on TrackKaro’s servers. None of this processing can be replicated locally by the
plugin code itself.

**A paid account with TrackKaro is required.** New accounts receive a free trial(
no credit card needed), but continued use requires a prepaid PKR credit plan purchased
at https://trackkaro.pk. The API key that connects this plugin to the service is
obtained only after signing up.

This plugin connects to the **TrackKaro** platform (operated by DANGO Solutions,
https://solutions.dango.pk) to provide all courier tracking and order management
functionality. This connection is mandatory — the plugin cannot function without
it, as all courier API communication and data processing occurs on the TrackKaro
servers, not locally on your WordPress site.

**Service details:**

 * Service name: TrackKaro
 * Service URL: https://trackkaro.pk
 * API endpoint: https://trackkaro.pk/api/v1/
 * Operated by: DANGO Solutions (https://solutions.dango.pk)
 * Privacy Policy: https://trackkaro.pk/page/privacy-policy
 * Terms of Service: https://trackkaro.pk/page/terms-of-service

**What data is sent and when:**

 1. **On every tracking sync (every ~5 minutes for active orders):** The plugin sends
    your WooCommerce order’s tracking number, courier name, and an internal order reference
    to the TrackKaro server. The server queries the courier’s API and returns the current
    status, location, and event history.
 2. **On plugin activation and settings save:** Your store’s domain and the API token
    you entered are sent to TrackKaro to verify the connection. No customer data is
    included.
 3. **On courier order creation (PostEx / Leopards):** When you create a shipment booking
    from the WooCommerce order screen, the customer’s name, phone number, delivery 
    address, order amount, and parcel details are sent to TrackKaro, which forwards
    them to the courier’s booking API to create the shipment. This transmission only
    occurs when you explicitly click the “Generate Courier Order” button.
 4. **On customer email notifications (if enabled):** The customer’s email address (
    stored on the order) may be sent to TrackKaro’s mail server to deliver tracking
    update emails. This feature is off by default and must be explicitly enabled by
    the shop owner.

**What is NOT sent:** Payment details, billing addresses, card numbers, or any information
beyond what is listed above. TrackKaro acts solely as a tracking and logistics coordination
service.

**No tracking functionality can be performed locally** — this plugin is specifically
designed to work with the TrackKaro external service. If you do not agree to the
TrackKaro Terms of Service and Privacy Policy, this plugin is not suitable for your
store.

## Installation

 1. In your WordPress dashboard go to **Plugins  Add New  Upload Plugin**.
 2. Upload the `trackkar-woo.zip` file and click **Install Now**.
 3. Activate the plugin.
 4. Go to **WooCommerce  TrackKaro Settings**.
 5. Paste your API token from your [TrackKaro dashboard](https://trackkaro.pk/panel).
 6. Click **Save Settings**. The plugin will verify your token and confirm the connection.
 7. Open any WooCommerce order and add a tracking number — TrackKaro will start syncing
    within the next cron cycle (typically within 5 minutes).

**First time?** Create your free account at [trackkaro.pk](https://trackkaro.pk)
before step 4.

## FAQ

### Does this plugin work without a TrackKaro account?

No. TrackKaro is a SaaS platform — the plugin is the bridge between your WooCommerce
store and the TrackKaro server, which handles all courier API connections, status
normalisation, and background polling. You need a TrackKaro account to use it. New
accounts include a free trial so you can evaluate the platform with real shipments
before paying anything.

### Is a subscription required?

You start with a free trial (no credit card needed). Once your trial quota is used,
you purchase a prepaid PKR plan. Plans are available at [trackkaro.pk](https://trackkaro.pk).
There is no monthly subscription lock-in — you buy credit when you need it.

### Which couriers are supported?

PostEx, TCS, Leopards Courier, CallCourier, Sonic/Trax, and Daewoo FastEx. More 
couriers are added based on demand — contact support if yours is missing.

### Do I need to add my own courier API credentials?

Not necessarily. TrackKaro maintains central API credentials for most couriers, 
which your store can use out of the box. If you have your own API keys (e.g. a dedicated
PostEx or Leopards account), you can add them in your TrackKaro dashboard for direct
access.

### Will this slow down my store?

No. The plugin loads only on admin pages and offloads all tracking work to WP-Cron
background jobs. There is zero impact on your storefront or checkout speed.

### What is the branded tracking page?

When a customer clicks the tracking link in their order email, they land on a page
on your own domain (e.g. `yourstore.com/track-your-order/`) that shows the full 
delivery timeline in your store’s branding. TrackKaro automatically creates this
page on plugin activation.

### Can I create courier bookings through the plugin?

Yes — for PostEx and Leopards Courier. Open the WooCommerce order, fill in the parcel
details, and submit the booking directly from the order screen. The booking reference
is saved to the order automatically.

### Is it compatible with HPOS (High-Performance Order Storage)?

Yes. TrackKaro is fully compatible with WooCommerce’s High-Performance Order Storage(
custom order tables) and has been tested with WooCommerce 5.0 through 9.x.

### My tracking status isn’t updating — what do I check?

 1. Confirm WP-Cron is running (check **Tools  Scheduled Actions** or use a cron monitoring
    plugin).
 2. Check your quota in **WooCommerce  TrackKaro Settings** — if you’ve used your plan’s
    allowance, new syncs are paused.
 3. Visit your TrackKaro dashboard for detailed tracking logs and diagnostic tools.

### Where can I get support?

Open a ticket at [trackkaro.pk/panel/tickets](https://trackkaro.pk/panel/tickets)
or email support@dango.pk .

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“TrackKaro Pakistan – Courier Tracking & COD” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ DANGO Solutions ](https://profiles.wordpress.org/usmanghazanfar/)

[Translate “TrackKaro Pakistan – Courier Tracking & COD” into your language.](https://translate.wordpress.org/projects/wp-plugins/dango-trackkar)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/dango-trackkar/), check
out the [SVN repository](https://plugins.svn.wordpress.org/dango-trackkar/), or 
subscribe to the [development log](https://plugins.trac.wordpress.org/log/dango-trackkar/)
by [RSS](https://plugins.trac.wordpress.org/log/dango-trackkar/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.46

 * Fixed: Dashboard tracking summary widget no longer counts cancelled or refunded
   orders as “Active” — a cancelled WooCommerce order retaining old tracking meta
   was inflating the active count by 1.

#### 1.0.45

 * Added: A “Mark as Dispatched” checkbox on the Generate Courier Order (COD) form—
   when ticked, the order moves to “Dispatched” the moment the courier booking is
   created and the customer is notified. The choice is remembered per-admin (sticky):
   your last selection becomes the default on the next order, so you set it once.
 * Changed: The previous behind-the-scenes “Mark as Dispatched on COD Order Creation”
   option was replaced by this per-order checkbox, giving you control on each booking
   instead of one global toggle. The box is ticked by default (matching the manual
   tracking entry); untick it on any order and that preference is remembered for
   next time.

#### 1.0.44

 * Compliance: Every register_setting() now passes a literal, type-specific sanitize_callback(
   no callback held in a variable), and the Sync Interval select uses a dedicated
   method that allowlists its four known values — so each field’s sanitizer is statically
   verifiable.
 * Fixed: Dashboard widget “Open TrackKaro Panel” link now correctly points to trackkaro.
   pk/panel (was /panel/dashboard which gave a 404).
 * Fixed: Dashboard widget active-shipment count now uses a positive IN list of 
   known in-progress statuses so orders submitted but never synced (empty status)
   are no longer counted as active.
 * Fixed: Dashboard widget transient is now cleared on plugin upgrade and after 
   each status sync so stale counts are not shown after updating.
 * Added: “Remove all data on uninstall” setting (Settings  Features). Off by default—
   opt-in to permanently delete all tracking meta from orders on uninstall.
 * Server: When a courier API definitively reports a tracking number not found, 
   the error message is now preserved and shown in the admin viewer instead of being
   overwritten by the generic “No tracking method available” message.

#### 1.0.43

 * Compliance: register_setting() now uses a direct, type-specific sanitize_callback
   for every field (sanitize_text_field, sanitize_email, sanitize_checkbox, sanitize_select)
   instead of a shared dispatcher, so the correct sanitizer per field is statically
   verifiable. The remaining inline-closure callback on the debug-mode option was
   also replaced with a named method.
 * Fixed: Removed a duplicate plugin header file that caused two plugins of the 
   same name to register on install. The plugin now ships a single main file (dango-
   trackkar.php) under the dango-trackkar slug.

#### 1.0.42

 * Rebranded: Domain changed to trackkaro.pk and product name updated to TrackKaro
   throughout plugin UI, settings, links, and external service references.

#### 1.0.41

 * Improved: Beta couriers now show a dimmed “beta” tag next to their name in the
   admin couriers list.
 * Improved: “Custom / Other Courier” now shows a “Manual tracking only” note in
   the order metabox when selected — makes clear no live status updates will occur.

#### 1.0.40

 * Fixed: “Open TrackKaro Panel” link in the WP dashboard widget now correctly points
   to trackkaro.pk/panel/dashboard (was referencing a removed option and resolving
   to an invalid URL).

#### 1.0.39

 * Compliance: Replaced the two remaining inline `<script>` blocks (proactive quota
   notice + trust badge dialog) with properly enqueued scripts via wp_add_inline_script();
   the trust badge dialog now enqueues jQuery UI dialog through the WordPress script
   API.
 * Compliance: register_setting() now uses a named sanitize callback (sanitize_setting)
   so the sanitizer is statically recognizable; per-field type-specific sanitization
   is preserved.
 * Compliance: Hardened input handling — AJAX tracking/courier fields now pass through
   WP core sanitizers (sanitize_text_field / sanitize_key) before custom sanitizers,
   and bulk-action notice GET reads are unslashed before sanitizing.
 * Fixed: The first-run trust badge dialog now updates the Features checkbox on 
   the settings page immediately after you choose, so the saved value is reflected
   without a refresh and cannot be accidentally reverted by a subsequent Save.

#### 1.0.38

 * Improved: TrackKaro metabox action buttons redesigned as equal-weight compact
   pills matching the height of the status badge. Labels shortened to Refresh / 
   ePOD / Restart.

#### 1.0.37

 * Improved: TrackKaro metabox action buttons redesigned — “Refresh Status” is now
   a full-width primary button; “Get ePOD” and “Reactivate” appear as a compact 
   secondary row below it.

#### 1.0.36

 * Fixed: “View details on TrackKaro” button in customer tracking shortcode is now
   centred in the card footer.
 * Fixed: Trust Badge setting checkbox now appears in the Features section of the
   plugin settings page with the correct checked/unchecked state.
 * Fixed: Green “TrackKaro is connected and active” banner on settings page is now
   a compact single-line strip instead of a full-height box.

#### 1.0.35

 * Changed: Customer tracking shortcode footer button now links to “View details
   on TrackKaro” for all couriers instead of “View on [Courier] website”. The tracking
   number in the status header still links directly to the courier’s portal. Applies
   to PostEx, TCS, Leopards, CallCourier, Sonic, Daewoo, and all future couriers.

#### 1.0.34

 * Added: First-run opt-in dialog on the TrackKaro Settings page asks whether to
   display the “Tracking by TrackKaro Pakistan” trust badge on the customer tracking
   page (recommended for customer confidence). One-time prompt; choice saved immediately.
   Addresses WordPress.org attribution guideline.
 * Changed: “Trust Badge” replaces the old “Powered by” wording — the badge now 
   reads “Tracking by TrackKaro Pakistan” and is disabled by default. Enable under
   TrackKaro Settings  Feature Settings.
 * Changed: Code comment in tracking submission updated to clearly describe serviceware
   architecture — only the comment changed, tracking submission behaviour is unchanged(
   server confirmation is still required before order meta is written). Addresses
   WordPress.org Guideline §6 (Serviceware) language concern.
 * Improved: Settings fields now use type-specific sanitization callbacks — checkboxes
   validate yes/no, selects validate against the allowed option list, text fields
   use sanitize_text_field(). Addresses WordPress.org Plugin Check sanitization 
   requirement.

#### 1.0.33

 * Fixed: Test Connection now works after v1.0.32 removed the Server URL field —
   PHP falls back to the hardcoded endpoint instead of returning “Server URL is 
   required”.
 * Fixed: Quota warning notice no longer shows “Critical — plan expires in 0 day(
   s)” for free-plan stores; expiry-based alerts are skipped for free plan types.
 * Fixed: Billing URL in quota notice was built from a removed WP option — now uses
   the correct hardcoded TrackKaro URL.
 * Improved: Quota API responses are now logged (WP debug log) so unexpected data
   is visible without needing server log access.

#### 1.0.32

 * Fixed: JS global variables renamed to `dangoTrackkarAdmin` / `dangoTrackkarFrontend`
   to satisfy WordPress.org unique-prefix requirement.
 * Fixed: All echoed variables now use proper WP escaping functions (`esc_html()`).
 * Fixed: Sanitization chain updated to use WordPress built-in functions (`sanitize_key()`,`
   sanitize_text_field()`) before custom sanitizers, satisfying Plugin Check.
 * Fixed: Settings hint URL updated to the official service domain.
 * Added: Governing Law section to Terms of Service; Cookies and Session section
   to Privacy Policy.

#### 1.0.31

 * Fixed: Fatal error “Cannot use object of type WP_Error as array” on order screens
   when TrackKaro server returns 401 for courier capabilities fetch. get_courier_capabilities()
   now guards against WP_Error and falls back to all-enabled (buttons visible) on
   any server error. Short 5-min retry TTL on failure instead of 24-hr cache.
 * Fixed: CourierApiController now accepts X-TK-Token header (plugin standard) in
   addition to the legacy X-Api-Token, so GET /api/v1/couriers returns 200 instead
   of 401.
 * Fixed: CourierApiController falls back to base query if migration 051 (enable_airway_bill/
   enable_load_sheet columns) has not been applied yet.

#### 1.0.30

 * Added: “Download Load Sheet” button in COD order box for PostEx and Leopards 
   shipments.
 * Added: Admin per-courier settings to enable/disable Airway Bill and Load Sheet
   download buttons (TrackKaro server admin panel).
 * Added: ePOD (electronic proof of delivery / signature) button in order tracking
   metabox for Leopards delivered shipments. Signature URL cached in order meta 
   after first fetch — subsequent views show a direct link.
 * Added: Dashboard widget now computes delivery rate and stats locally from WooCommerce
   order meta — no TrackKaro server call required.
 * Added: AWB, Load Sheet, and ePOD action buttons in TrackKaro server panel tracking
   list (/panel/tracking) and admin monitoring view.
 * Added: generic API GET method (Dango_TrackKar_API::get()) for couriers list and
   ePOD endpoint calls.

#### 1.0.29

 * Fixed: Log timestamps now show local (admin-configured) timezone alongside UTC
   WooCommerce header.
 * Fixed: COD amount field now correctly sends 0 when intentionally set to zero;
   previous guard silently substituted order total.
 * Added: Leopards “View on Leopards” tracking portal link in COD order box.

#### 1.0.28

 * Internal release.

#### 1.0.27

 * Internal release.

#### 1.0.26

 * Fixed: Leopards shipper name/phone/address now correctly attached to bookings.
   Previously the literal string “self” was sent causing blank shipper fields in
   the Leopards portal. Now shipment_id is sent when a shipper is selected; when
   no shipper is selected all shipment fields are omitted so Leopards uses account
   defaults.
 * Fixed: Area field no longer auto-loads and disappears on city selection. Area
   is now fully on-demand — a “Load areas” link appears and the dropdown only loads
   when clicked.
 * Area cache extended to 30-day transient (same as cities and shippers).
 * PHPCS: suppressed direct-DB-query warnings for bulk transient deletion (no WP
   API alternative).

#### 1.0.25

 * Fixed: Leopards shippers list was never cached (empty-city cache key was silently
   skipped). Shippers now cache for 30 days like cities.
 * Fixed: Shippers dropdown now shows “Use account defaults” when no shippers are
   returned instead of appearing blank.
 * Added diagnostic logging for Leopards getAllShippers API call — failures now 
   appear in the tracking log with the raw response.

#### 1.0.24

 * Leopards Courier: complete booking form — Division, Origin City, Shippers, Area,
   No of Items, extra phone fields, Return Address.
 * Leopards Courier: Airway Bill (slip) download added to the order screen after
   booking.
 * Cache refresh on plugin update: cities, areas, and shipper caches are cleared
   automatically on each version upgrade.
 * Fixed submission error when no shipper is selected (empty shipper fields now 
   correctly default to account settings).
 * Fixed area dropdown visibility logic; area row now appears only when areas load
   successfully.
 * Postal Code field removed from COD booking form.

#### 1.0.23

 * Leopards Courier: searchable Origin City dropdown (before Shippers), Shippers
   dropdown (optional), Area dropdown (30-day cache).
 * Special Instructions pre-filled with “Handle with care” (editable).
 * Weight field defaults to 450 g for Leopards shipments.
 * Dimensions field removed; Postal Code field removed.
 * Shippers default option set to “Use account defaults” — order creation works 
   even without selecting a shipper.

#### 1.0.22

 * PostEx and Leopards COD booking forms now use separate field sets — PostEx fields
   are hidden for Leopards orders and vice versa.
 * Leopards: weight in grams (vs PostEx kg), Division (Express / Logistics), Shipment
   Type (Overnight / Economy) fields added.
 * City list for Leopards cached for 30 days (same as PostEx); cache is shared and
   keyed per courier.

#### 1.0.21

 * Plugin version option stored on activation for future cache-clear-on-update logic.

#### 1.0.20

 * Leopards Courier city list now cached for 30 days to reduce API calls.
 * Airway Bill print button added to order screen for PostEx bookings.

#### 1.0.19

 * Leopards tracking URL updated to new merchant portal (old URLs returned 404).
 * Leopards: direct tracking URL with TN now available — no more manual lookup required.
 * Stability improvements for push/webhook status updates.

#### 1.1.0

 * Added Daewoo FastEx courier support.
 * Leopards: real-time Push/webhook support — statuses update instantly, no polling
   lag.
 * Trial plan system: new accounts automatically receive a free trial on signup.
 * Paybost payment gateway (PKR billing) with HMAC-SHA256 signature verification.
 * Manual-only tracking mode: couriers can be set to manual status updates only.
 * Improved error messages when courier credentials are missing or invalid.
 * Log Search: filter audit logs and file logs from the admin panel.
 * Various stability and settings-persistence fixes.

#### 1.0.0

 * Initial release.
 * Tracking number management on WooCommerce orders.
 * Courier order creation for PostEx and Leopards.
 * Bulk CSV tracking import.
 * Auto-complete orders on delivery.
 * Dashboard usage widget.

## Meta

 *  Version **1.0.46**
 *  Last updated **15 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [cod](https://wordpress.org/plugins/tags/cod/)[courier tracking](https://wordpress.org/plugins/tags/courier-tracking/)
   [pakistan](https://wordpress.org/plugins/tags/pakistan/)[postex](https://wordpress.org/plugins/tags/postex/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/dango-trackkar/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/dango-trackkar/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/dango-trackkar/reviews/)

## Contributors

 *   [ DANGO Solutions ](https://profiles.wordpress.org/usmanghazanfar/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/dango-trackkar/)