Everything WeftKart does between the moment you add a shipment and the moment it lands — where the tracking data comes from, what your customers see, how the WooCommerce plugin fits in, and how to put it all to work. Read it top to bottom, or jump straight to what you need.
WeftKart sits between your orders and your couriers. It fetches every status from the right source, keeps checking, and turns each change into something useful — a message to your customer, a branded page, a webhook, an entry in your NDR inbox.
Type an AWB, upload a CSV, call the API — or let the WooCommerce plugin do it the moment you enter a tracking number on an order.
Every courier is verified before it goes live. WeftKart then checks each shipment with the courier and shows exactly what it reports — nothing guessed.
A background job re-checks live shipments every couple of minutes and maps every courier's wording onto one set of 11 statuses. Finished shipments stop being re-checked.
Your customer gets WhatsApp or email and a branded page. Your store gets a webhook. Your team gets alerts and an NDR inbox.
Want to see it before signing up? Paste any tracking number on Track Now — free, no account needed.
You can be tracking real shipments in a few minutes. This is the whole path, in order.
Free to start, no card. The Starter plan includes 100 shipments. Your team can be invited later.
Paste an AWB, add an order reference if you like, and pick a courier — or leave it on Auto-Detect and WeftKart finds the courier that recognises the number. Live status appears as soon as the courier confirms it.
Add your logo, brand colour and display name. Choose which events send email or WhatsApp, and add your return policy, support link and review link.
From here every status change is picked up automatically: customers are notified, the branded page updates, and your webhooks fire. Connect your WooCommerce store and even step 2 disappears.
Failed deliveries land in your NDR Inbox so you can act on them. Analytics shows delivery time, on-time rate, RTOs and how each courier performs.
Use whichever fits how you ship. They all end up in the same place, tracked the same way — and you can mix them.
Open Shipments → Track a shipment
Enter the tracking number (AWB). An order reference is optional but makes the shipment easy to find later.
Pick the courier — or leave Auto-Detect
Auto-Detect tries a shortlist of couriers live and uses the first one that recognises the number. A wrong guess never costs a credit and never creates a shipment.
Press Track
You land on the shipment page: current status, the full event timeline, the public tracking link to share, and a "Get Shipment Status" button to refresh on demand.
Open Shipments → Bulk upload via CSV
Download the sample file so your columns match exactly.
Fill it in and upload
Only tracking_number is required. courier is the courier's slug (leave it blank if you only have one active courier).
Read the results
Every row is reported individually — tracked, or why it was skipped — so a few bad rows never hide the good ones.
If you sell on WooCommerce, you never open the WeftKart dashboard to add a shipment. Install the plugin, connect your store once, and from then on you type the tracking number into the order — WeftKart registers it and starts tracking straight away.
Push a shipment from your own system the moment you ship. One request registers it, fetches the current status, and hands you back a public tracking link for your customer.
WeftKart never guesses. Every courier is verified before it goes live, every status is mapped onto one shared set, and a courier that stops working is paused instead of shown stale.
WeftKart confirms live tracking works for a courier before marking it live, and keeps re-checking it. That is what the Verified badge on the Carriers page means.
If a courier starts failing, WeftKart automatically takes it back to Setup rather than show you stale data, and WeftKart's admins are alerted. When it's fixed and verified again, it goes live again.
For couriers without live tracking yet, WeftKart can't fetch status, so it hands you a direct link to the courier's own tracking page instead of pretending.
The Verified badge on the Carriers page means our tracking works for that courier — it does not mean the courier has partnered with or endorsed WeftKart.
Right away
The moment you add a tracking number, WeftKart asks the courier and shows what it says.
Every couple of minutes
A background sweep looks for live shipments whose last check is older than the freshness window and re-checks them. You don't click anything.
Until it's finished
Delivered, RTO (returned) and Cancelled shipments stop being re-checked — nothing left to learn, no wasted calls.
Whenever you want
"Get Shipment Status" refreshes on demand. Shipments stuck on Pending are retried automatically until the courier confirms them.
Couriers all word things differently. WeftKart maps each one onto the same 11 statuses, so your dashboard, notifications, analytics and webhooks mean the same thing whichever courier carried the parcel.
The journey
Pending
The courier hasn't confirmed it yet — WeftKart keeps retrying.
Manifested
The courier has the booking.
Picked Up
Collected from you.
In Transit
Moving through the courier's network.
Out for Delivery
On the last mile today.
Delivered
Done.
When something goes wrong
NDR
A delivery attempt failed.
RTO
Being returned to you.
Cancelled
The shipment was cancelled.
Exception
The courier reported a problem in transit.
Unknown
A status WeftKart couldn't map — shown as-is, never hidden.
Your customer hears about every step the moment the courier scans it — and when a delivery goes wrong, the fix is one tap away instead of a phone call to you.
Questions your team stops answering
Shipped, out for delivery, delayed, delivered — every status change fires its own message automatically. Nobody on your team presses a button.
Messages go out over WeftKart's own WhatsApp Business connection with pre-approved templates — no Meta Business Manager and no template approvals on your side.
Each message carries a live tracking link. The page it opens has your logo and brand colour, the expected delivery date, and a Contact Seller link.
When an attempt fails, the customer gets Reschedule, Change address and Cancel buttons. Their choice lands in your NDR Inbox, ready to action with the courier.
Illustrative preview — real messages use WeftKart's pre-approved WhatsApp templates and carry your tracking link; the page it opens carries your brand.
Email goes to the recipient email on the shipment (add it in the CSV, API or shipment page). WhatsApp goes to the recipient's phone number.
| Event | What triggers it | ||
|---|---|---|---|
| Shipped | The courier picks the parcel up. | Yes | Yes |
| Out for delivery | The courier puts it out for delivery. | Yes | Yes |
| Delivered | Delivery is confirmed. | Yes | Yes |
| Delay / exception | NDR, RTO, Cancelled or Exception status. | Yes | Yes |
| NDR quick replies | A delivery attempt fails. | You get an alert when the customer replies | Reschedule · Change address · Cancel buttons |
| Review request | A delivery succeeded (optional — needs your review link). | No | Yes |
In Branding → Notifications, pick Email and WhatsApp independently for Shipped, Out for delivery, Delivered and Delay / exception.
Turn WhatsApp updates on or off for the whole account in one click — email keeps working either way.
WhatsApp messages come out of your plan's allowance (Starter 60 · Basic 750 · Basic 9,000 · Growth 2,500 · Growth 30,000 · Pro 7,000 · Pro 84,000 · Business 22,000 · Business 264,000). Email isn't metered.
More on message types: WhatsApp Notifications · NDR & exception handling
Every shipment gets a public, no-login page. It's what your customers land on from a WhatsApp link, an email, or your order page — so it wears your brand, not ours.
Upload a logo, pick one accent colour and set a display name in Branding. Changes apply to every tracking page at once.
Every scan the courier reports, newest first. You choose whether to show the estimated delivery date.
Add a support link in Branding and a Contact Seller button appears on the page — so a worried customer has somewhere to go that isn't your inbox.
When AI is enabled, the page can answer questions about the order in plain language. It answers returns and refunds only from the policy text you write in Branding — and says so if you haven't written one. Every question is logged on the shipment for you to read.
Show links as track.yourbrand.com. You verify you own the domain with a DNS TXT record, then point it at WeftKart and have SSL issued for it.
More detail on Branded Tracking Pages.
Most shipments need nothing from you. The ones that do — a failed delivery, a parcel that's stopped moving — are surfaced automatically, with a place to work through them.
The courier reports an NDR
WeftKart sets the shipment to NDR and (if you've left it on) sends the customer the WhatsApp message with three buttons.
The customer taps one
Reschedule delivery, Change delivery address, or Cancel order. Their choice is saved on the shipment.
You see it in your NDR Inbox
One list of every unresolved reply — customer, courier, what they asked for, how long ago — and a badge in the sidebar so you notice.
You action it, then mark it resolved
WeftKart doesn't submit the change to the courier for you: it puts the customer's decision in front of you to action in your own courier account. Then press Mark Resolved. If the status changes again, it reopens.
Every day WeftKart checks for live shipments with no real courier movement for longer than expected, and emails you the list. Thresholds are tunable by WeftKart's admins.
Badges on your shipment list compare each parcel's age with that courier's typical transit time — so you see trouble coming instead of finding it.
Unresolved exceptions are collected on your dashboard. On WooCommerce they also show as a badge on the WeftKart menu and a widget on the WordPress dashboard.
Leave internal notes on any shipment (your team sees who wrote what), mark it resolved when handled, and it reopens by itself if the status moves again.
Delivered doesn't mean paid. WeftKart lets you tag COD orders and reconcile them against your courier's remittance report, so you always know what's outstanding.
Tag your COD orders
On Shipments → COD Reconciliation, upload a CSV with tracking_number and cod_amount. It matches shipments you already track. Or mark a single shipment as COD from its page.
Import the courier's remittance report
When the courier pays out, upload their report (tracking_number, remittance_amount). Only shipments already marked COD are matched, so stray rows can't create noise.
Watch pending vs remitted
Analytics shows how many COD shipments — and how much money — is still pending versus already remitted, across all time.
Numbers above are illustrative.
Every scan WeftKart records becomes a number you can act on — which courier is fastest, where parcels go wrong, what's costing you returns.
Shipments tracked
in the period you pick
Avg. delivery time
days from added to delivered
On-time rate
delivered by the courier's own estimate
Exception rate
NDR, RTO, Cancelled, Exception
RTO rate
plus the top reasons couriers give
Credits used
so billing is never a surprise
Each metric has a trend chart for the last 7, 30 or 90 days. On-time rate is only computed for deliveries where the courier gave an estimate, and the page says how many that was — so it never flatters you by counting shipments that couldn't be judged.
Shipments, delivered count, average delivery time, on-time rate and exception rate for each courier — exportable as CSV.
Pending versus remitted cash-on-delivery, by count and amount.
When AI is enabled, a short plain-language read of your last 30 days, refreshed once a day — for the "so what?" the charts don't say.
Every Monday morning, last week's numbers land in your inbox — no need to remember to look.
Building on the API? The Usage page shows your API calls, average response time, top endpoints and your most recent requests. More on the Analytics Dashboard.
Install one plugin, approve access once, and your orders track themselves. You type a tracking number into the order — everything after that is automatic, and it all stays inside WordPress.
In WordPress: Plugins → Add New → Upload Plugin, choose the .zip, activate. WooCommerce needs to be active first.
In your WeftKart dashboard open Connected Apps → Connect a Store and enter your store's URL.
You're taken to your own WordPress admin for WooCommerce's standard "authorise this app" screen — not a WeftKart-hosted page. No API keys to copy or paste.
The plugin configures itself. A "WeftKart" menu appears in wp-admin and every order gets a tracking box.
Stores connected the older way (the "Connect to WeftKart" button inside the plugin) keep working unchanged. Disconnecting an app in Connected Apps revokes its API key and webhook immediately.
You enter the tracking number
On the order screen, type the AWB and pick the courier (or leave it on auto-detect). Shipping in more than one box? Click "Add another parcel" and enter each tracking number. Save the order — it is marked Shipped for you.
The plugin registers it with WeftKart — instantly
Saving a new or changed tracking number tells WeftKart right away, and the order takes on the shipment's current status from that same response — no waiting for the next update.
WeftKart keeps watching the courier
Exactly like any other shipment: re-checked in the background until it's delivered or returned.
Each status change is pushed to your site
WeftKart calls your store's webhook. The plugin verifies its signature (HMAC-SHA256 of the raw request) before trusting it.
The order status follows, your way
The plugin sets the WooCommerce order status from your Status Mapping — e.g. Delivered → Completed. With several parcels the order counts as Delivered only when every parcel is; a problem on any one (NDR, RTO, Exception) shows straight away.
Your customer can see it too
A tracking link on the order page, and a "Track" panel with the live timeline in My Account — one tab per parcel when the order was split. Guests can look an order up by order number and email.
Tracking number and courier on every order, for both classic orders and WooCommerce's High-Performance Order Storage. A "Mark order as Shipped" box is ticked for you, and each parcel has its own timeline and Mark delivered button.
One order, several tracking numbers — each with its own courier. Every parcel is tracked separately; the order is Delivered only when the last parcel is. Import several parcels per order from a CSV, and search the Orders list by any of the numbers.
Choose which WooCommerce status each WeftKart status should set. Sensible defaults out of the box, so it works before you touch Settings.
Optionally add Shipped, In Transit, Out for Delivery, Delivered, NDR, RTO and Partially Shipped as real WooCommerce statuses — each one individually switchable. Classic order storage only, for now.
Your whole shipment book inside wp-admin: status, courier, last update, what needs attention — with Mark Resolved right there. Cached for a minute, with a refresh button.
Stuck, overdue, NDR and RTO shipments show as a badge on the WeftKart menu and a widget on the main WordPress dashboard.
See every tracking number, the courier and the live status without opening the order. One-click Mark delivered and Share buttons, bulk refresh / mark delivered, and Screen Options to choose what the column shows. Works with classic orders and HPOS.
On My Account → Orders (and each order) customers get a slide-over with the live timeline, one tab per parcel. Add the [weftkart_tracking] shortcode to any page for a "Track your order" lookup by order number and email. Nothing is shown for orders that haven't shipped.
From the Orders list or the order screen: send the tracking to the customer on WhatsApp or email, or copy the message or the link. A split order goes out as one message listing every parcel.
Optionally email the customer their tracking automatically (one email per change, all parcels together), add a tracking block to WooCommerce's own emails, and get an alert when any parcel hits NDR, Exception or RTO.
Credits used and remaining, renewal date, recent payments — without leaving wp-admin.
A 30-day view of shipment mix, average delivery time, on-time rate and exception rate. The full charts stay on the WeftKart website, one click away.
Buttons for Branding, Webhooks, Usage & Analytics, Team, API Keys and Billing sign you straight in — the plugin asks WeftKart for a login link server-side, so your API secret never reaches the browser.
If you run out of credits, saving a tracking number still works — the parcel is flagged "Waiting for credits" and starts tracking on its own once you renew (or retry them all in one click). Optional low-credit and out-of-credit emails.
New plugin versions appear under Plugins → Updates in WordPress like any other plugin, straight from your WeftKart account — no re-uploading the zip.
Pick which couriers you actually use and the order box shows just those, so the dropdown isn't a wall of names.
The dashboard, the WooCommerce plugin and your own code all sit on the same REST API. Push shipments in, and get every status change pushed back out.
Create a key pair on the API Keys page (the secret is shown once, so save it). Send both as headers on every request. Base URL: https://weftkart.com/api/v1
| POST | /track | Track one AWB. Uses one credit the first time; repeats within the cache window are free. |
| POST | /track/bulk | Track many AWBs in one call — array size is your plan's bulk limit. |
| GET | /shipments/{tracking_number} | Last known state of an AWB you already track — no courier call, no credit. |
| GET | /couriers | Every courier available on your account — slug, name and logo. |
Add an endpoint on the Webhooks page and WeftKart POSTs to it on every status change. Verify the signature before you trust the payload.
Verify
Recompute the HMAC over the raw body and compare.
Reply 2xx
Anything else counts as a failure.
Retries
5 attempts in all — retried after 1m, 5m, 15m, then 1h — before it's marked failed.
The Logs page lists every webhook and WhatsApp delivery with its status, so a failing endpoint is visible instead of silent.
Bring in the people who need access, keep everyone else out, and know who can do what.
From Team, invite a colleague by email — they need a WeftKart account first. Once they accept, they work inside your account and see your shipments, NDR inbox and analytics.
Billing and Branding stay with the account owner — team members don't see them — so a new hire can handle exceptions without touching money or your brand.
Add an authenticator app to your login. You get one-time recovery codes for a lost phone, and WeftKart support can reset it if you're locked out entirely.
Secrets are shown once. Regenerate a key to rotate it, or revoke it and it stops working immediately — then delete it when you no longer need the record.
WeftKart encrypts courier and integration credentials at rest, and once saved they're never displayed in full again — only a Saved badge and the last few characters.
The Logs page shows every webhook and WhatsApp delivery with its outcome — filter by type, and clear entries older than 30 days.
You pay for new tracking numbers, not for how often we check them.
Adding a tracking number for the first time uses one credit — from the dashboard, a CSV, the API or WooCommerce. Looking the same number up again within the cache window is free.
Once a shipment is added, every automatic re-check, every status change and every notification of it is included until it's delivered or returned.
New tracking numbers are paused until you renew (the API answers 402); shipments already tracked keep updating. You get renewal reminders beforehand, and WooCommerce orders that couldn't register can be retried in one click.
| Plan | Price | Shipments / cycle | Bulk size | API calls / min | WhatsApp messages |
|---|---|---|---|---|---|
| Starter | Free / 30 days | 100 | 20 | 20 | 60 |
| Basic | ₹1,499 / 30 days | 500 | 50 | 30 | 750 |
| Basic | ₹14,990 / 365 days | 6,000 | 50 | 60 | 9,000 |
| Growth | ₹3,499 / 30 days | 1,500 | 100 | 60 | 2,500 |
| Growth | ₹34,990 / 365 days | 18,000 | 100 | 120 | 30,000 |
| Pro | ₹7,999 / 30 days | 4,000 | 200 | 120 | 7,000 |
| Pro | ₹79,990 / 365 days | 48,000 | 200 | 240 | 84,000 |
| Business | ₹17,999 / 30 days | 12,000 | 500 | 300 | 22,000 |
| Business | ₹179,990 / 365 days | 144,000 | 500 | 480 | 264,000 |
Full details and checkout on Pricing. Prices are in Indian rupees; GST invoices are generated for every payment.
Pending means the courier hasn't confirmed the tracking number yet — normal for a few hours after booking, or when the courier or AWB is wrong. WeftKart keeps retrying automatically, and "Get Shipment Status" checks right now. If you picked the wrong courier, you can change it from the shipment page while it's still Pending.
No. A credit is used once, when a tracking number is first added to your account. Automatic re-checks, on-demand refreshes and notifications for a shipment you already track never use another.
WeftKart re-checks live shipments in the background every couple of minutes, so a new scan shows up on the next check after the courier publishes it. Couriers sometimes publish scans late — WeftKart can only show what the courier reports.
Couriers are watched. If one starts failing repeatedly, WeftKart automatically takes it back to Setup and shows a link to the courier's own page instead of stale data, and WeftKart's admins are alerted. When it's fixed and verified again, it goes live again.
No. Delivered, RTO (returned) and Cancelled are final, so WeftKart stops re-checking them. You can still open them, share their tracking page and export them.
WeftKart's own WhatsApp Business connection, using pre-approved templates, so there's nothing for you to set up with Meta. Each message links to your tracking page, which carries your logo and colours.
Yes. In Branding → Notifications switch WhatsApp off for the whole account, or per event, and leave email on (or the other way round).
For the automatic flow, yes: the plugin adds the tracking box to orders and keeps order statuses in sync. Without it you can still add shipments from the dashboard, a CSV or the API.
The order tracking box works with both classic orders and High-Performance Order Storage. The custom order statuses and the orders-list column currently support classic order storage.
Only what's needed to look a shipment up — the tracking number. Your customers' names, emails and phone numbers stay in WeftKart.
Yes. Every shipment has a public tracking link that needs no login, and anyone can try a lookup on Track Now without signing up.
Something else? See the full FAQ or contact us.
Free to start, no credit card — add a tracking number, or connect your store, and watch it move through every step above.