Meta Ads & CAPI

How to Track Cash on Delivery and WhatsApp Orders from Meta Ads

Many stores sell by cash on delivery or WhatsApp, which breaks normal tracking. Here is how to send those orders back to Meta so ads optimise for real buyers.

Quick answer

Cash on delivery and WhatsApp orders break normal tracking because the sale is confirmed later or outside the website. Track the website order or WhatsApp click as it happens, keep the visitor's identifiers with the order, and send confirmed orders back to Meta through the Conversions API, so Meta learns from real, delivered buyers instead of fake or cancelled orders.

Key takeaways
  • COD orders can be fake or refused, so placed orders are not the same as sales.
  • WhatsApp sales happen in chat, outside your website tracking.
  • Track the first action (order or WhatsApp click) immediately.
  • Send confirmed or delivered orders to Meta through the Conversions API.
  • Keep fbc, fbp and phone number with the order so Meta can match it.

In Bangladesh and many other markets, a large share of online orders are cash on delivery (COD), and many sales happen in WhatsApp or Messenger chat. That is good for customers, but it confuses Meta. A COD order placed on the website may be fake or refused at the door, and a WhatsApp sale never touches your website at all. If Meta learns from the wrong signals, it finds more fake orders and fewer real buyers.

Why are COD and WhatsApp orders hard to track?

  • COD: the website order is placed immediately, but the money arrives days later, and some orders are cancelled or refused.
  • WhatsApp: the visitor clicks a WhatsApp button, chats, and orders in the chat. The website only sees the click.
  • Both: Meta sees the first step, not the real result.

Step 1: Track the first action immediately

Send Meta the first action as soon as it happens, so it gets fast feedback:

Action Event
COD order placed on the website Purchase (with value, currency, order ID)
WhatsApp button clicked Contact or a custom whatsapp_click event
Messenger button clicked Contact

Use both the Pixel and the Conversions API, with the same event_id, as in Meta Pixel vs Conversion API. On WooCommerce stores I usually send purchases from the order itself, as covered in WooCommerce server-side tracking.

Step 2: Keep the identifiers with the order

When the order is placed or the WhatsApp click happens, save what Meta needs to match the customer later:

  • _fbc and _fbp cookies (click and browser IDs)
  • the customer's phone number and email, if given
  • the order or chat reference

For a WhatsApp click, you can add a short reference code to the pre-filled message, so the chat can be linked to the click.

Step 3: Send confirmed orders back to Meta

When an order is confirmed or delivered, send it to Meta through the Conversions API, with hashed phone and email and the saved identifiers. Meta has moved offline events into the Conversions API, so the same connection works for website and offline sales.

You have two common options:

  1. Separate event: keep Purchase for placed orders and send a custom event such as ConfirmedPurchase for delivered orders. Later, you can optimise for the confirmed event once there is enough volume.
  2. Corrected purchase: send Purchase only when the order is confirmed, if speed matters less than accuracy.

For WhatsApp, record confirmed chat orders in a sheet, CRM or order system that can send events to your server container.

Which should Meta optimise for?

  • New store, few orders: optimise for Purchase (placed) to get enough volume.
  • High fake or refused rate: move optimisation to the confirmed event once it has steady volume.
  • Mostly WhatsApp sales: run messaging campaigns, and use confirmed chat orders to judge which ads bring real buyers.

See how to choose the right optimisation event for the trade-offs.

Checklist

  • COD purchase sent with value, currency and order ID, from browser and server
  • WhatsApp clicks tracked as Contact or a custom event
  • fbc, fbp and phone saved with each order
  • Confirmed or delivered orders sent through the Conversions API
  • Cancelled and refused orders excluded from optimisation

Final thoughts

COD and WhatsApp selling do not have to mean guessing. Track the first step quickly, keep the identifiers, and tell Meta which orders became real sales. This is the setup I build for Bangladeshi stores in my Meta Ads management service; you can book a free audit to see how it would work for yours.

Related
Chamok Mahonto
Written by Chamok Mahonto

I'm a conversion tracking & google ads specialist from Rangpur, Bangladesh. I set up GA4, GTM, server-side tracking and Meta Conversion API, and manage Google Ads for businesses worldwide. More about me

FAQ

Frequently asked questions

Should COD orders be sent to Meta as purchases?

Sending them when placed gives Meta fast feedback, but includes fake orders. Many stores send placed orders and then also send confirmed orders as a separate, more valuable event.

Can Meta track sales made inside WhatsApp?

Not automatically. You track the WhatsApp click on the website, and send confirmed chat orders through the Conversions API with the customer's hashed phone number.

Do I need a developer for this?

For website COD orders, a server-side GTM setup can handle it. For WhatsApp orders, you need a simple way to record confirmed orders, such as a sheet, CRM or order system that can send events.

Does this work for Messenger orders too?

Yes, the principle is the same: record the order with the customer's details and send confirmed orders back to Meta.

Case studies

See it in a real project

Completed Jul 2026Meta Pixel & CAPI+ Google Ads Tracking

Sunnaher Sopan

A browser + server-side Meta tracking build for a rechargeable lighting brand, with deduplicated purchase events, order webhooks into server GTM and a 9.1/10 match quality score.

  • WooCommerce
  • Meta Pixel
  • Conversions API
Read case study
Completed Dec 2025Meta Pixel & CAPI

Histro Clothing

A hybrid browser + server-side tracking build for a Bangladeshi fashion brand, recovering lost purchase events and lifting Meta event match quality from 3/10 to 9/10.

  • WooCommerce
  • Meta Pixel
  • Conversion API
Read case study
Keep reading

Related articles

Meta Ads & CAPI

How to Improve Meta Event Match Quality With CAPI

What Meta Event Match Quality measures, which customer information parameters raise it, and how I normalise, hash and test the data sent through CAPI.

7 min read · October 31, 2026
Meta Ads & CAPI

iOS Privacy Changes: How to Recover Lost Facebook Ads Data

Apple's privacy changes hid many conversions from Meta. Here is what changed, what is gone for good and how to recover the data you can still measure.

6 min read · October 30, 2026

Ready to fix your tracking and scale your ads?

Get a free audit of your tracking and ad account. Usually replies within 1–2 hours.