How to Track COD Orders and Delayed Purchases for Facebook Ads in Bangladesh

How to Track COD Orders and Delayed Purchases for Facebook Ads in Bangladesh

Cash-on-delivery dominates Bangladesh e-commerce, but standard Facebook tracking misses COD conversions entirely. Learn how to properly track delayed purchases, reduce fake orders, and optimize your ad spend.

Quick Answer

Standard Facebook tracking fires Purchase events when COD orders are placed, not when they are delivered and paid. With 15-40% COD rejection rates in Bangladesh, this means Facebook optimizes for fake orders. The fix is delayed purchase tracking via Meta Conversions API: only send Purchase events when orders are confirmed delivered. This gives accurate ROAS data and teaches the algorithm to find customers who actually pay.

E-Commerce Mar 05, 2026 · 7 min read · 10 views

Cash-on-delivery isn't optional for e-commerce in Bangladesh — it's the default. Over 85% of online purchases here are COD. Customers don't fully trust online payments yet, and bKash or Nagad still feel new to most shoppers outside Dhaka.

But here's the problem nobody talks about. Facebook doesn't know what happens after someone places a COD order. The standard Facebook Pixel tracks the checkout completion, but it can't tell whether that customer actually paid when the delivery person showed up at their door. And in Bangladesh, COD rejection rates can run anywhere from 15% to 40% depending on your product category.

This means your Facebook ad data is fundamentally broken. You're optimizing for orders placed, not orders delivered. And those are very different things.

The COD Tracking Problem Explained

Let me paint the picture of what happens with standard Facebook tracking for a typical Bangladeshi e-commerce store.

A customer sees your Facebook ad for a kurta priced at 1,200 BDT. They click through, browse a few options, and place a COD order. Your Facebook Pixel fires a Purchase event worth 1,200 BDT. Facebook records a conversion. Your ROAS looks great.

Three days later, Pathao or Steadfast tries to deliver the order. The customer isn't home. Second attempt, they changed their mind. The order comes back to your warehouse. You have spent money on the product, packaging, and delivery attempt, but you've received zero payment.

Meanwhile, Facebook still thinks that was a successful conversion. It's optimizing your ads to find more people like that customer, people who place orders but never pay. Your algorithm is literally learning to find the wrong audience. Combined with ad blockers eating your tracking data, the picture gets even worse.

This isn't a small problem. If your COD rejection rate is 30%, nearly a third of the conversions Facebook is optimizing for are fake. Your reported ROAS of 4x might actually be 2.5x when you account for returned orders. And your CPA is much higher than what the dashboard shows.

Why Standard Tracking Fails for COD

Facebook Pixel and even the basic Conversions API setup track events at the moment they happen in the browser or on your server. A Purchase event fires when someone completes the checkout form. But for COD orders, the actual purchase (money changing hands) happens days later at the customer's doorstep.

Standard tracking has no mechanism for:

  • Delayed confirmation — There's no way to tell Facebook "that purchase I reported 3 days ago? It actually happened" or "it was cancelled."
  • Partial deliveries — When a customer accepts only some items from a multi-item order, the actual purchase value differs from what was tracked.
  • Status updates — COD orders go through multiple stages: placed, dispatched, out for delivery, delivered, returned. Standard tracking captures only the first stage.
  • Revenue reconciliation — Your actual revenue from delivered COD orders doesn't match what Facebook reports as purchase value.

The Solution: Delayed Purchase Tracking

The solution is something called delayed purchase tracking, and it uses Meta's Conversions API to send purchase events only when orders are actually delivered and paid for.

Here's how the flow works:

  1. Customer places a COD order — Your system records the order but does NOT fire a Purchase event to Facebook. Instead, it fires an InitiateCheckout or AddPaymentInfo event so Facebook knows there was intent.
  2. Order is dispatched — No Facebook event. This is an internal logistics step.
  3. Order is delivered and payment collected — NOW your server fires a Purchase event through the Conversions API with the actual paid amount. This is the real conversion.
  4. Order is returned or rejected — No Purchase event is ever sent. Facebook never counts this as a conversion.

The result? Facebook only sees real, paid conversions. Your ROAS calculation is based on actual revenue, not hopeful order placements. And the algorithm optimizes for finding people who actually pay, not just people who click the order button.

Implementing Delayed Purchase Tracking

There are two ways to implement this, depending on your e-commerce platform and technical resources.

Method 1: Custom Integration with Courier API

If you use a courier service like Pathao, Steadfast, RedX, or Paperfly, most of them offer webhooks or APIs that notify your system when an order's delivery status changes. You can build a system that:

  1. Listens for delivery confirmation webhooks from your courier
  2. Matches the delivered order to the original customer and order data
  3. Sends a Purchase event to Meta's Conversions API with the customer's hashed email or phone number

This requires development work and ongoing maintenance, but gives you complete control over the tracking logic.

Method 2: Using a Tracking Platform

PixelFly supports delayed purchase tracking out of the box. You configure your order statuses (pending, confirmed, delivered, returned), and the platform automatically fires the correct events at the right time. When an order moves to "delivered" in your system, PixelFly sends the Purchase event to Meta CAPI. Returned orders are never reported as conversions.

This is particularly useful if you sell on multiple channels (like WooCommerce) or use multiple ad platforms, as the delayed tracking works across Facebook, Google, and TikTok simultaneously.

Reducing Fake Orders with Better Data

Here's something interesting that happens when you implement delayed purchase tracking: your fake order rate actually goes down over time. Why? Because Facebook is now optimizing for delivered orders, not placed orders.

Think about what Facebook's algorithm is learning in each scenario:

Without delayed tracking: Facebook sees that a certain type of person (young, impulsive, browses late at night) places lots of orders. It finds more people like them. These people also place orders but have high rejection rates. Your fake order rate stays high or gets worse.

With delayed tracking: Facebook sees that a certain type of person (has purchased before, middle-income area, shops during business hours) actually pays for their orders. It finds more people like them. Your customer quality improves. Rejection rates drop.

I've seen stores in Bangladesh reduce their COD rejection rate from 35% to under 20% within two months of implementing delayed purchase tracking. The algorithm just needed accurate data to do its job properly.

Additional Tips for Bangladesh E-Commerce Tracking

Beyond delayed purchase tracking, here are some practical tips specific to the Bangladesh market:

Track phone numbers, not just emails

In Bangladesh, most customers use phone numbers rather than email addresses. When sending events through the Conversions API, always include the hashed phone number. This dramatically improves Meta's ability to match conversions to ad clicks. Use the Bangladeshi format with the country code: +880 followed by the number.

Account for bKash and Nagad prepayments

For orders paid via bKash or Nagad, you can fire the Purchase event immediately since payment has been confirmed upfront. Only delay the Purchase event for COD orders. This hybrid approach gives you the fastest possible data for prepaid orders while maintaining accuracy for COD.

Track delivery zones

COD rejection rates vary significantly by location within Bangladesh. Dhaka typically has lower rejection rates than other divisions. If you track delivery zones alongside your conversion data, you can adjust your ad targeting accordingly, perhaps increasing bids for Dhaka customers and decreasing them for areas with higher rejection rates.

Use event match quality as your benchmark

Check your Event Match Quality score in Meta Events Manager. For Bangladesh e-commerce with server-side tracking, you should aim for a score of 7.0 or higher. The score improves when you send more customer parameters (phone, email, name, city) with your events.

Built for Bangladesh e-commerce

PixelFly supports delayed purchase tracking for COD orders, bKash/Nagad payment confirmation, and WooCommerce integration — all with a free plan.

Start Free Trial   Learn More About COD Tracking →

The Bottom Line for Bangladesh E-Commerce

If you're running Facebook ads for a COD-heavy e-commerce business in Bangladesh, standard tracking is giving you a false picture of your business. You're optimizing for the wrong metric (orders placed instead of orders paid), and it's costing you money through higher fake order rates and misallocated ad spend.

Delayed purchase tracking through Meta's Conversions API fixes this by only reporting conversions that actually generate revenue. The implementation takes some effort, but the payoff is substantial: accurate ROAS reporting, lower fake order rates, and Facebook algorithms that actually learn to find your best customers.

In a market where every BDT of ad spend matters, having accurate data isn't a luxury. See why Bangladesh businesses are choosing PixelFly over Stape.io. It's the foundation of a profitable e-commerce operation.

cod tracking cash on delivery bangladesh e-commerce delayed purchase tracking meta capi facebook ads fake orders
Share:

Frequently Asked Questions

Facebook Pixel fires a Purchase event when someone completes checkout, not when they actually pay. For COD orders, the customer may reject the delivery. Facebook counts these rejected orders as conversions, inflating your ROAS and optimizing for people who place orders but do not pay.
Delayed purchase tracking means holding back the Purchase conversion event until the COD order is actually delivered and paid for. Instead of tracking at checkout, you use Meta Conversions API to send the Purchase event only when your courier confirms delivery. Rejected orders are never reported as conversions.
Yes. When Facebook receives accurate data about which orders are actually paid for, its algorithm learns to find similar customers who are more likely to accept deliveries. Stores implementing delayed tracking in Bangladesh have seen COD rejection rates drop from 35% to under 20% within two months.
Yes. For bKash or Nagad prepayments, fire the Purchase event immediately since payment is confirmed upfront. Only use delayed tracking for COD orders. This hybrid approach gives Facebook the fastest data for prepaid orders while maintaining accuracy for cash-on-delivery.
P
PixelFly Team
E-Commerce & Analytics

Discussion (0)

Login to join the discussion.

No comments yet. Be the first to share your thoughts!

Ready to Improve Your Tracking?

Start capturing 95%+ of your conversions with PixelFly's server-side tracking. Free plan available.

Start Free Trial

We use cookies to enhance your experience, analyze site traffic, and for marketing purposes. By continuing to use our site, you consent to our use of cookies. Learn more