🔌 Integrations

WhatsApp tracking updates for Leopards, PostEx and M&P

How a Leopards, PostEx or M&P parcel status becomes a WhatsApp message: the keys each courier needs, the daily check, and what to send for each status.

A courier status update on WhatsApp is a message sent to the customer when their parcel's status changes at the courier — delivered, on its way back, or stuck — using the courier's own record of what happened. ConvoFly reads those statuses from Leopards, PostEx and M&P once a day and can start a WhatsApp flow the moment one changes.

It does not book parcels. You keep booking in your courier's portal or your Shopify courier app; ConvoFly only reads where each parcel got to and talks to the customer about it.

Which couriers work today

CourierStatusWhat you enter to connectWhere to get it
Leopards CourierLiveAPI key and API passwordLeopards merchant portal, under API settings
PostExLiveAPI tokenPostEx merchant portal, under API / integrations
M&PLiveAPI username, API password, account numberIssued by M&P — ask your account manager
DexBetaA Daraz seller authorisation, not a keyThe Connect Daraz account button
TCSComing soon——
TraxComing soon——

M&P's API username is not your mnpcourier.com login; the setup page says so and gives M&P's support line, 021-111-202-202. M&P itself reports 750+ courier centres in Pakistan and more than 2 million shipments a year on its website; PostEx describes nationwide COD delivery with upfront payments to merchants on postex.pk.

How a parcel status becomes a message

  1. You fulfil the order in Shopify with the courier's name in the tracking company and the CN in the tracking number.
  2. The shipped rule saves both onto the customer as Tracking Number and Courier. The starter rule "Order shipped — tracking details" does this.
  3. Every day at 5am ConvoFly asks each connected courier for the status of parcels shipped in the last 15 days, up to 300 per run. You can change the time in the Scheduler, or press Check my parcels now.
  4. When a status changes, a Courier status changed event starts your flow, carrying the courier's words, the tracking number and the COD amount.

The very first check only records where parcels are, so connecting does not fire a burst of messages about old parcels. Flows start from the next real change.

Setting it up, step by step

  1. Open Settings → Courier integrations → Browse couriers. Pakistan is selected under Where do you ship from?
  2. Pick your courier. The page shows a checklist; the first item, What we read off each order, shows whether your orders already carry a tracking number and courier name.
  3. Under Which names mean Leopards (or your courier), tick the other spellings your team types — "LCS", say — and press Add the ticked names. Capitals and punctuation are ignored.
  4. Under Connect your account, enter the keys from the table above, press Connect, then Test.
  5. Create the two WhatsApp templates the page shows — the wording is there to copy — in Message templates, and wait for Meta's approval.
  6. Press Build my Leopards flow. It installs the courier status updates flow as a draft; pick your teams and tags, then publish.

The setup page puts the rule plainly: "We only look — we never book, cancel, or message anyone from here." Messages only go out from a flow you have published.

What to send for each status

ConvoFly sorts every courier's wording into five classes, so one flow can handle Leopards' "Ready for Return" and PostEx's return statuses alike:

Status classMeansWhat the ready-made flow does
deliveredThe customer has itAsks for a delivery score out of 10; under 7 goes to your team
returningDelivery failed, parcel on its way backTells the customer the courier's reason and offers Reship it or Cancel my order
returnedBack with youNothing by default
attentionStuck or held — needs a personNothing by default; shows on the shipments screen
movingNormal progressNothing, on purpose

The returning row is the valuable one. The customer hears, in the courier's words, why the parcel did not arrive — "Consignee Not Available", say — while it is still in the network and a second attempt is cheap. A tap on Reship it tags the chat and hands it to your team with a note of the tracking number; your team then re-arranges delivery with the courier, because ConvoFly does not book. Cancel my order asks why and passes the answer to the team.

Messaging on every scan is how a useful update becomes one people mute. The flow ends quietly on in-transit statuses; add a message there only if customers ask for it.

What the customer actually receives

The two templates the setup page gives you to copy are short, and both are utility messages about an order the customer placed. The return message reads:

"Hi Ali, we tried to deliver your parcel LE100241 but it is on its way back to us. According to Leopards Courier, the reason is: Consignee Not Available. Would you like us to send it again?"

…with two buttons, Reship it and Cancel my order. If you write your own version, keep those two button labels exactly: the flow matches the tap by its text, and a different label means the tap goes nowhere. The delivered message asks the customer to rate the delivery out of 10 by replying with a number.

Two details make these work in Pakistan. The courier's reason is shown in its own words, cleaned up from capitals — "READY FOR RETURN" reads "Ready for Return" — so the customer is not shouted at. And the message names the courier, which matters because customers ring the courier, not you, when a rider cannot find them.

Why a parcel is not being checked

When a customer says they heard nothing, work down this list — it covers nearly every case:

  1. No tracking number on the fulfilment. Nothing looks the CN up for you; if the order was marked fulfilled without it, ConvoFly has nothing to ask the courier about.
  2. An unmapped courier name. "Leopard", "LCS" or "Leopards COD" only match once they are added on the setup page.
  3. The shipped rule is off. The tracking number reaches the customer's record through the "Order shipped — tracking details" rule; with it switched off, the check has no parcels.
  4. Shipped more than 15 days ago. Older parcels drop out of the daily check unless you raise "Only check parcels shipped in the last (days)" on the Courier status sync rule in the Scheduler.
  5. The keys stopped working. Press Test on the courier page; a changed API password is the usual cause.
  6. No flow published. The check records statuses either way, but only a published flow sends anything.

You can also add a parcel by hand from the shipments screen with Track a parcel by hand — the customer's WhatsApp number, the tracking number and the courier — for orders that never went through Shopify.

The shipments screen

Shipped, not delivered lists every parcel your couriers still hold: when it shipped, its last status, how long since it moved, when ConvoFly last checked, and its COD amount. Filter by courier, status, or "Needs attention only", and a banner totals the cash on delivery sitting on parcels that need attention. Select parcels and use Tag & message to send them a broadcast.

For a COD store that screen answers a question couriers' portals make hard: how much of my money is stuck, and where.

What the customer's tracking link opens

The shipping message itself uses Shopify's tracking link from the fulfilment — shipping and tracking updates covers writing it. On the shipments screen, the Leopards link opens Leopards' tracking page with the CN already filled in; the PostEx and M&P pages open empty and the number has to be pasted.

Limits to know before you promise anything

What it costs to message

Both courier templates are utility templates. Per Meta's pricing page, a utility template is charged when it lands outside a customer service window and free inside one — and most status changes happen days after the customer last wrote, so expect to pay for them. When the customer taps Reship it, the 24-hour window opens and your team's replies are free. Rates are in WhatsApp API pricing in Pakistan.

These messages also count toward your messaging limit — 250 unique customers in 24 hours for a new account, rising through 2,000, 10,000 and 100,000 to unlimited per Meta's messaging limits. A sale week of dispatches and a campaign share that one allowance.

Common questions

Does ConvoFly book Leopards or PostEx shipments?

No. It reads statuses only. Book in the courier's portal or your Shopify courier app as you do now.

Can it tell customers "out for delivery"?

Yes, if you add a message on that status — but it arrives after the next daily check, which may be after the rider has been.

We use LCS as the courier name. Will it match?

Once you add "LCS" under the courier's names on the setup page.

What if my courier is TCS?

TCS is listed as coming soon. Until then, time a check-in from dispatch instead, as in connecting your courier.

Need help? Message us