25-30%
COD orders end up as RTO in Indian D2C
NEW CUSTOMER ACQUISITION
Your campaigns are optimized for “Purchase”. But Meta or Google doesn’t know if that order was delivered or sent back. So it keeps finding customers who click, checkout, and return every time
25-30%
COD orders end up as RTO in Indian D2C
60-65%
Indian ecommerce orders are COD; the single biggest profit leak
THE CORE PROBLEM
Algorithm optimized for exactly what you asked: a purchase event. Whether the order was delivered or returned? It has no idea. So it keeps sending you the same RTO-prone customers, campaign after campaign.
“Your ROAS is a lie. Your CAC is a lie. Your CPP is a lie. Not because the platform is broken because you never told it what a real conversion looks like.”
You're only blocking known RTO customers. Meta still keeps finding new RTO-prone users because the model hasn't learned who not to optimize for.
If your seed audience includes RTO buyers, your lookalikes will find more people like them. Bad signal in, bad audience out.
Shopify, WooCommerce, BigCommerce, etc. send "Purchase" as the final signal. They don't tell Meta whether the order was delivered or returned.
The same customer can return multiple times using different emails, phones, or devices. Without ID resolution, they keep looking like new buyers.
THE SOLUTION
Training the algorithm means telling it to find customers who actually pay and receive their orders, not someone who clicks, COD’s, and cancels at the door.
Use Signal Engineering for RTO reduction:
Send prepaid purchase events, return order, COD purchase, and order delivered by splitting the conversion events.
Don't just rely on the generic purchase event. Start measuring the campaigns on which are giving high returns and COD.
Start optimizing the campaign for prepaid purchase or any relevant business goal to train the ad algorithm.
Once signals are engineered server-side, every connected platform reports on them natively. No separate dashboard. No manual reconciliation. The split you’ve been trying to reverse-engineer in spreadsheets is now a column in every tool your team opens.
CLIENT RESULTS
Real results from brands using the same signal infrastructure you can deploy for your clients.
Smars ditched Shopify CAPI, 86% of their purchases are now first-time buyers — at 14% lower CPP
Read full storyHow Bartos Nutrition Cut New Customer Acquisition Cost by 19% Using First-Party Data Signals
Read full storyCustomerLabs 1PD Ops Platform made server-side tracking, offline conversions, and CAPI integration seamless, significantly improving our data quality and ad performance. Setup was incredibly fast15 minutes to get started, integrations within an hour, and just a day for data layer implementation. With strong customer support and wide integrations across CRM and ad platforms, it’s an easy 10/10 recommendation.
FAQ
The questions revenue teams ask before switching from Shopify CAPI to a delivered-orders signal.
How does CustomerLabs know an order was actually delivered?
CustomerLabs ingests delivery confirmation events from your ecommerce platform (Shopify, WooCommerce, BigCommerce, Magento, custom storefront), one-click checkout tools (Shopflo, GoKwik, Razorpay Magic Checkout, Simpl), your shipping and logistics layer (Shiprocket, Delhivery, BlueDart), your CRM, or a direct webhook. Once the courier confirms delivery and your platform updates the order status, CustomerLabs fires order_delivered to Meta and Google with the original ad attribution attached. The feedback loop closes at delivery, not checkout.
Will this slow down my Meta and Google learning phase?
Meta needs a minimum of 50 conversions in 7 days for any event you optimize toward, otherwise the learning phase doesn't exit. The same threshold applies whether you optimize for Purchase, prepaid_purchase, or order_delivered. Make sure the event you choose has at least 50 conversions per ad set per week. For brands with the volume, this means optimizing on order_delivered works cleanly. For brands below the threshold, optimize on prepaid_purchase first and work up to order_delivered as volume grows.
Do I need to replace my Shopify CAPI or existing pixel setup?
No. CustomerLabs starts powering first-party data signals on top of your existing setup. The Shopify pixel and Shopify CAPI continue working where they are. CustomerLabs adds prepaid_purchase, cod_purchase, and order_delivered as first-party data events with full identity attribution, so the algorithm trains on the right signal without disrupting what's already in place.
How is this different from just running CAPI?
CAPI sends events server-side. It doesn't tell the algorithm which event matters. You can send a Purchase event via CAPI all day and Meta still has no way to distinguish prepaid from COD from delivered. Signal engineering decides what event gets tagged and sent in the first place. CAPI is the transport layer, signal engineering is the optimization layer.
How long does implementation take?
Setup and audit are done in 2 to 3 days. Campaigns start running on the new signals within a week. CustomerLabs handles the connection to your ecommerce platform, one-click checkout tool, and logistics layer, sets up the event split, and configures Meta and Google to optimize against order_delivered. Your team approves the event mapping. No engineering required on your side.
How does CustomerLabs know an order was actually delivered?
CustomerLabs ingests delivery confirmation events from your ecommerce platform (Shopify, WooCommerce, BigCommerce, Magento, custom storefront), one-click checkout tools (Shopflo, GoKwik, Razorpay Magic Checkout, Simpl), your shipping and logistics layer (Shiprocket, Delhivery, BlueDart), your CRM, or a direct webhook. Once the courier confirms delivery and your platform updates the order status, CustomerLabs fires order_delivered to Meta and Google with the original ad attribution attached. The feedback loop closes at delivery, not checkout.
Will this slow down my Meta and Google learning phase?
Meta needs a minimum of 50 conversions in 7 days for any event you optimize toward, otherwise the learning phase doesn't exit. The same threshold applies whether you optimize for Purchase, prepaid_purchase, or order_delivered. Make sure the event you choose has at least 50 conversions per ad set per week. For brands with the volume, this means optimizing on order_delivered works cleanly. For brands below the threshold, optimize on prepaid_purchase first and work up to order_delivered as volume grows.
Do I need to replace my Shopify CAPI or existing pixel setup?
No. CustomerLabs starts powering first-party data signals on top of your existing setup. The Shopify pixel and Shopify CAPI continue working where they are. CustomerLabs adds prepaid_purchase, cod_purchase, and order_delivered as first-party data events with full identity attribution, so the algorithm trains on the right signal without disrupting what's already in place.
How is this different from just running CAPI?
CAPI sends events server-side. It doesn't tell the algorithm which event matters. You can send a Purchase event via CAPI all day and Meta still has no way to distinguish prepaid from COD from delivered. Signal engineering decides what event gets tagged and sent in the first place. CAPI is the transport layer, signal engineering is the optimization layer.
How long does implementation take?
Setup and audit are done in 2 to 3 days. Campaigns start running on the new signals within a week. CustomerLabs handles the connection to your ecommerce platform, one-click checkout tool, and logistics layer, sets up the event split, and configures Meta and Google to optimize against order_delivered. Your team approves the event mapping. No engineering required on your side.
READY TO MOVE?
In 30 minutes, we'll map which signals apply to your business, show you what your campaigns are currently training on, and identify the gaps. No commitment required.