(—) Cash on delivery

How to reduce fake and refused cash-on-delivery orders on Shopify

Every refused parcel costs you twice: once in shipping and stock, and again in the ad data that teaches Meta to find more people who never pay. This playbook fixes both.

3 min readUpdated By Momo Digitals

Why cash on delivery costs more than it looks

In markets such as Egypt, Pakistan, Saudi Arabia and the UAE, cash on delivery is how most shoppers prefer to pay. It lowers the barrier to buying, but it moves the risk to you. A customer can order on impulse, order twice by mistake, give a wrong address, or simply refuse the parcel at the door.

Industry estimates across the Middle East and South Asia put refused, returned or fake COD orders at roughly 10–25% of all orders, and higher in some categories. Each one costs outbound shipping, return shipping, packaging, courier fees and stock that sits in a van instead of on your shelf.

The hidden second cost: your ad data

The standard Meta Pixel fires a Purchase event the moment someone completes checkout, before any cash has changed hands. If a fifth of those orders are refused, Meta is optimizing your campaigns, and building your lookalike audiences, partly from people who never paid.

The result is inflated return on ad spend in Ads Manager, budgets that scale on the wrong signal, and audiences that get worse over time. Fixing fake orders at the warehouse without fixing the data leaves half the problem in place.

The playbook

  1. Confirm every order before it ships

    Send each new COD order a WhatsApp message from your own business number with Confirm and Cancel buttons. Whapi tags the Shopify order to match the answer, so accidental, duplicate and fake orders are filtered out before you pay for shipping.

    With Whapi · WhatsApp automation
  2. Hold unconfirmed orders, then follow up

    Filter your Shopify order list by the confirmation tag and only fulfil confirmed orders. Set a clear cut-off, for example 24 hours, after which unconfirmed orders get one reminder or a phone call if the basket is large enough to be worth it.

    With Whapi · WhatsApp automation
  3. Tell customers the courier is coming

    Many refusals come from customers who forgot they ordered or did not expect the delivery that day. Automatic shipping updates with the tracking link, in the customer’s own language, keep the order top of mind until the courier arrives.

    With Whapi · WhatsApp automation
  4. Only report paid orders to Meta

    Trackinator holds the Purchase event until a real-world signal confirms the sale, then sends it server-side through Meta’s Conversions API. Choose the trigger that matches your operation: courier delivery, order archived in Shopify, or a tag such as PAID_VERIFIED. Refused and returned orders are never reported, so Meta learns from real buyers.

    With Trackinator · Server-side pixel
  5. Answer “where is my order?” before it becomes a refusal

    Customers ask on WhatsApp, Instagram and email, sometimes all three. Convo Desk puts every channel in one inbox with the Shopify order beside the conversation, so your team can fix an address or reassure a customer before the courier’s first attempt.

    With Convo Desk · Unified inbox + AI
  6. Measure the right numbers

    Track your confirmation rate, refusal rate by courier, region and product, and the gap between the revenue Meta reports and the cash you actually collect. When that gap shrinks, your ad budget starts working on real demand.

(—) FAQ

Questions, answered.

Does WhatsApp order confirmation really reduce COD refusals?

Confirmation filters out orders that were never going to be accepted, such as accidental, duplicate, prank or wrong-address orders, before you pay to ship them. Customers who confirm have made a second, deliberate decision to buy, which is the strongest signal you can get before delivery.

Do I need the WhatsApp Business API to send order confirmations?

Automated confirmations need Meta’s official WhatsApp Business API. Whapi connects it to your own business number inside Shopify, and coexistence lets you keep using the WhatsApp Business app on your phone with the same number.

Will delaying the Purchase event hurt my Meta campaigns?

Delivery usually takes one to five days, and Meta’s Conversions API accepts events sent up to seven days after they happen. You send fewer events, but every one of them is a real paying customer, which gives Meta a cleaner signal to optimize and build audiences from.

Which couriers does Trackinator work with?

Trackinator works with couriers including Bosta, Aramex, J&T, Leopards and TCS. If your courier is not connected, you can fire the event when an order is archived or tagged in Shopify instead.

(—) Trackinator

Start with Trackinator today.

14-day free trial. Built and supported by the Momo Digitals team.