PixelMili

COD fake-order filter

Cash-on-Delivery orders get cancelled, refused at the door, or were never real. If every COD order is sent to Meta as a Purchase the moment it's placed, Meta learns to find more people who order and don't pay — and your ROAS looks better than it is.

Choose when a COD order counts as a Purchase

Dashboard → Settings → Courier & COD. Applies to every store in the workspace (Growth plan).

SettingWhat Meta receivesTrade-off
When confirmed or delivered (default) Purchase once you confirm the order (for example after a phone call) or once it is delivered, whichever comes first. Orders cancelled before that are never sent. Confirming by phone: Meta hears within hours and most fake orders are filtered out, but an order returned after you confirmed it still counts. Waiting for delivery only: most accurate, 1–7 days later.
Both Purchase immediately, plus DeliveredPurchase on delivery. Purchase count includes fake orders. Create a custom conversion on DeliveredPurchase to optimise on real buyers. Only real delivery sends it — a phone confirmation doesn't.
When placed Purchase immediately for every COD order. Fastest, but fake and returned orders count as sales. This is what plans without the COD filter get.

Online-paid orders (bKash, Nagad, card) are always sent immediately.

Confirming orders by phone

Many stores call every COD buyer before shipping. Confirm the order and the Purchase goes to Meta right after the call instead of after delivery:

  • Any store, no code: Dashboard → Pending COD lists every order PixelMili is holding. Press Confirm after the call, or Cancel for a fake order — one at a time or many at once, from your phone too.
  • WooCommerce (plugin 1.0.10+): WordPress → PixelMili → COD order confirmed when status becomes — pick the status you move orders to after the call (for example On hold → Processing, or your own "Confirmed" status). Left at Completed, only delivery counts.
  • Shopify: add the tag confirmed to the order.
  • Custom sites: the tracking script marks an order as COD when your thank-you page says "Cash on Delivery" (or turn on My site only takes Cash on Delivery under Settings → Courier & COD), then confirm it on Pending COD. Developers can also send OrderConfirmed from your server — see Server-side API for Laravel, PHP and Node code.

How PixelMili knows an order was delivered

  • WooCommerce (plugin 1.0.7+): marking the order Completed counts as delivered; Cancelled, Refunded or Failed drops it.
  • Steadfast Courier: connect your Steadfast API key under Settings → Courier & COD and we check every waiting order with Steadfast every 30 minutes — delivered is sent, cancelled is dropped, automatically. Parcels are matched by Invoice = your order number. Optionally paste the webhook URL shown there into Steadfast for faster updates.
  • Pathao Courier: connect your Pathao Client ID and Client Secret (merchant panel → Developer API) under Settings → Courier & COD, then paste the Callback URL and Secret we show you into Pathao's Webhook Integration and turn on the order events. Delivered is sent, returned or cancelled is dropped, the moment Pathao reports it — a failed delivery attempt keeps waiting, since Pathao tries again. Parcels are matched by Merchant Order ID = your order number (Pathao's WooCommerce plugin fills this in).
  • Shopify: orders paid with "Cash on Delivery (COD)" are recognised automatically. Marking the order paid, or a fulfillment reaching Delivered, counts as delivered; cancelling it drops it. Steadfast / Pathao work too, matched by the Shopify order number. See Shopify.
  • Custom sites: send the Purchase with cod: true and an order_id, then send OrderConfirmed (confirmed by phone), OrderDelivered (delivered) or OrderCancelled with the same order_id.
js
// When the order is placed
pm('track', 'Purchase', { value: 1490, currency: 'BDT', order_id: 'ORD-42', cod: true }, { phone: '01712345678' });

// Later, from your order-management page
pm('track', 'OrderConfirmed', { order_id: 'ORD-42' });   // confirmed by phone → Purchase is sent
pm('track', 'OrderDelivered', { order_id: 'ORD-42' });   // delivered → Purchase is sent (if not already)
pm('track', 'OrderCancelled', { order_id: 'ORD-42' });   // cancelled before that → never sent

The Orders page in your dashboard (see Verify events) shows how many COD orders are waiting for delivery and how many cancelled or returned orders were kept out of your ad data.

ESC

Full-text search is coming soon. Use the sidebar for now.