Why "AI for Ads" Means Something Different Than You Think

Why "AI for Ads" Means Something Different Than You Think

AI driven Ads isn't a magic pill that solves for bad campaigns. It does more harm than you thinkg

AI driven Ads isn't a magic pill that solves for bad campaigns. It does more harm than you thinkg

10 min read

10 min read

Sanya Shah

,

,

Co-Founder

Co-Founder

hero image
hero image

The performance review happens every Monday.

Meta ROAS: 3.5x. Google ROAS: 2.8x. The marketing team is celebrating. They just got approval to scale their top campaign 3x. The CPMs are down. Order volume is up. The dashboard shows ₹18 lakhs in revenue from that campaign alone this month.

Two weeks later, the finance team runs the real numbers.

Of that ₹18 lakhs in "revenue": ₹6.2 lakhs were COD orders that were refused at delivery. ₹1.8 lakhs in return shipping costs. ₹90,000 in inventory that can't be resold because the packaging got damaged in transit. The actual revenue that hit the bank account? ₹9.1 lakhs.

That 3.5x ROAS campaign is actually running at 1.1x.

The marketing team didn't know. How could they? No one connected ad data to delivery data. Meta counted every checkout as a conversion. Shopify recorded every order as revenue. The numbers looked great all the way until the delivery partner sent the monthly reconciliation report.

This isn't a rare edge case. This isn't bad luck with one campaign. This is the default state of Indian D2C performance marketing.

The Conversion That Isn't

Let's walk through what actually happens when someone places a COD order.

Customer clicks your ad. Lands on product page. Adds to cart. Checks out. Shopify records it as revenue. Meta records a conversion. Your dashboard updates in real-time. ROAS looks good.

Product gets picked, packed, shipped. Logistics partner attempts delivery.

Here's where it gets interesting.

Possible outcomes:

  1. Delivered and paid. Actual revenue. This is what the platform thought would happen.

  2. Refused at door. Zero revenue + shipping cost both ways. Platform still shows it as a conversion.

  3. Fake address / phone switched off / customer unreachable. Zero revenue + shipping cost. Platform still shows it as a conversion.

  4. Delivered, then returned within 7 days. Negative margin after return shipping + restocking. Platform still shows it as a conversion.

None of these outcomes flow back into Meta or Google. The ad platform recorded the win at checkout. What happened at the doorstep three days later? Not their problem.

But it's very much your problem.

Here are the numbers that Indian D2C brands deal with every single day:

  • Average COD failure rate nationally: 15-25%

  • Certain pin codes: 35-45% failure

  • Tier 3 cities: often higher

  • Each failed COD delivery costs ₹80-150 in forward + return shipping alone

  • That doesn't include inventory lock during the 5-7 day delivery + return cycle

  • Or re-stocking costs

  • Or packaging damage

  • Or the customer service time spent calling unreachable numbers

The platform says 100 conversions. Reality says 70-80 conversions that actually resulted in money hitting your account.

That difference isn't a rounding error. That difference is your margin.

The Geography Nobody Tracks

Here's the thing: not all COD is equally bad.

The variance by geography is massive. But most brands treat COD as a single flat percentage. "Our COD failure rate is 22%." That number hides the real story.

Let me show you what we saw with a fashion brand we looked at recently.

Mumbai / Pune:

  • COD failure rate: 12%

  • Prepaid ratio: 65%

  • Campaigns targeting these cities are genuinely profitable

  • Higher CPMs, but conversions actually stick

Delhi NCR:

  • COD failure rate: 18%

  • Prepaid ratio: 55%

  • Marginal but workable

  • Middle ground

Certain UP / Bihar pin codes:

  • COD failure rate: 42%

  • Prepaid ratio: 25%

  • Every campaign targeting these areas is bleeding money

  • Cheap CPMs, high order volume, terrible delivery economics

The Meta dashboard doesn't know geography at this level. It shows one ROAS number for the entire campaign. You see 3.5x. You scale the campaign. Budget flows disproportionately to wherever clicks are cheapest.

And clicks are cheapest where? In the highest COD failure regions.

Lower CPMs. More orders. More failures. You're literally scaling the problem.

Nobody told the media buyer that a ₹15 CPM in Lucknow costs more than a ₹45 CPM in Bangalore when you factor in delivery economics. The dashboard shows cheaper acquisition. The P&L shows expensive losses.

This is why brands celebrate campaign performance on Monday and wonder why the bank balance doesn't match by Friday.

The Real P&L of a COD Order

Let's do the math on actual unit economics. Same product. Same ad. Two different payment methods.

Prepaid order (₹1,800 product):

  • Revenue: ₹1,800 (confirmed at checkout)

  • COGS: ₹600

  • Shipping: ₹80

  • Ad cost: ₹350 (at 5x ROAS)

  • Payment gateway fee: ₹40

  • Net margin: ₹730

Clean. Simple. Money hits your account in 2-3 days.

COD order (₹1,800 product): successful delivery

  • Revenue: ₹1,800 (confirmed at delivery, not checkout)

  • COGS: ₹600

  • Shipping: ₹80

  • COD handling fee: ₹30-50

  • Ad cost: ₹350

  • Net margin: ₹720-740

Basically the same as prepaid, just with a 5-7 day delay and operational headache. Fine.

COD order (₹1,800 product): failed delivery

  • Revenue: ₹0

  • Shipping (forward): ₹80

  • Shipping (return): ₹80

  • Packaging / handling: ₹30

  • Ad cost: ₹350 (already spent, non-recoverable)

  • Net: -₹540

You didn't just lose the revenue. You lost ₹540. And Meta still shows it as a conversion. Your dashboard still counted it toward that 3.5x ROAS.

Now let's scale this.

At a 30% COD failure rate, here's what happens per 10 orders:

  • 3 orders fail → 3 × ₹540 = ₹1,620 in losses

  • 7 orders succeed → 7 × ₹730 = ₹5,110 in profit

  • Net: ₹3,490 from 10 orders

That's ₹349 per order, not ₹730.

Your effective margin just dropped 52%. And none of this shows up in any ad dashboard. Your attribution tool doesn't know. Your ROAS calculator doesn't care. Triple Whale isn't built for this. Northbeam doesn't track it.

Because they're all built in the US, where "conversion" means the money is yours. In India, "conversion" means maybe the money will be yours, pending delivery, pending payment, pending the customer not refusing at the door because they changed their mind or ordered from three other brands and only wanted one.

What Changes When You Connect the Data

Here's what happens when delivery data actually flows back to marketing decisions:

You discover which campaigns have high COD failure rates. Not just high order volume.

You discover which pin codes are profitable and which are bleeding. Certain regions might show great ROAS on the ad platform but terrible delivery-adjusted ROAS once you factor in failures.

You can actually adjust targeting. Exclude high-failure pin codes. Push prepaid offers aggressively in risky regions (free shipping on prepaid, COD charges, etc.). Allocate budget to geographies where conversions don't just happen. They stick.

You stop celebrating campaigns that look great on Meta but lose money on delivery.

The entire question changes.

From: "How many orders did this campaign generate?"

To: "How many delivered, paid orders did this campaign generate?"

One question. Completely different budget allocation. Completely different understanding of what's working.

A brand I know recently did this exercise. They had two campaigns running. Campaign A had higher CPMs, lower order volume, looked worse on the Meta dashboard. Campaign B had lower CPMs, higher order volume, looked like a winner.

When they connected delivery data:

  • Campaign A: 8% COD failure rate, mostly metro cities, high prepaid ratio. Actual ROAS after delivery: 4.1x.

  • Campaign B: 34% COD failure rate, mostly tier 2/3 cities, low prepaid ratio. Actual ROAS after delivery: 1.6x.

They killed Campaign B. Scaled Campaign A. Profitability improved within two weeks.

Not because they got better at media buying. Because they finally knew which media buys were actually making money.

The India Layer

In India, conversion equals maybe revenue.

Pending delivery. Pending payment. Pending the customer answering the door. Pending the address being real. Pending them not refusing because they saw it cheaper somewhere else or because their family member already ordered it or because bhai, mann nahi kiya.

The entire performance marketing stack in India is built on data that stops at checkout. But the real P&L starts after checkout. After the product leaves your warehouse. After the delivery partner attempts delivery. After the customer either pays or doesn't.

That's where the money actually is. Or isn't.

That's why we built Predflow's semantic layer to connect all of it: ad data, checkout data, delivery data, returns, COD success rates, pin code performance. Because in Indian D2C, if you're not tracking delivery-adjusted ROAS, you're not tracking ROAS. 👇

Improve Ad performance with Predflow

Diagnose performance drops, creative fatigue, and attribution shifts

Learn how to use AI to boost your marketing

Competitive Edge

Simple Attribution

Ad Intelligence

Ad Intelligence

Social Analysis

Social Analysis

Social Analysis

Social Analysis

Social Analysis

Social Analysis