Tracking purchases for cash-on-delivery stores
When should a COD order count as a purchase for Meta and GA4: placed, confirmed or delivered? Trade-offs, refunds and cancellations, and how to keep one order counted once.
With card payments, a completed checkout is money received. With cash on delivery, a placed order is a promise: some are never confirmed, some are refused at the door. Which moment you report as the Purchase decides what the ad platform learns to optimize for.
Three options
- At order placement. Fastest feedback for the algorithm, but it also rewards ads that bring orders that never pay.
- At confirmation (the call or SMS check). Filters most fake and impulse orders, with a delay of hours, not days.
- At delivery. Only real revenue, but it can be days later, and a long gap weakens attribution.
Many COD stores settle on confirmation: a strong signal with a short delay. Whatever you pick, pick it once and keep it stable, so the platform isn't learning from a moving target.
Keep it one purchase
Use the order id as the event identity: event_id purchase_{order_id}. The browser thank-you page, the server confirmation and any retry then describe the same purchase, and are merged instead of added. If your order moves from placed to confirmed, you do not send a second purchase.
Refunds and cancellations
Send a refund event with the same order id when money goes back, and a cancel event when an order dies before delivery. GA4 has a refund event for revenue correction. Meta has no standard refund event, so keep the cancellation in your own reporting rather than inventing one.
Send the payment method
Include payment_method (cod, bkash, nagad, card) on every purchase. It lets you compare which campaigns bring prepaid buyers and which bring COD orders that are more likely to be refused.
Sources
Try it on your store
Trakero applies all of this for you: first-party SDK, server-side delivery to Meta, TikTok, GA4, Snapchat and Pinterest, deduplication by order id, and a debugger that explains every event.
Start free