fb-pixel
Back to Blog
Case Study — October 20265 min read

I Killed a Campaign Showing 5x ROAS. Here’s Why.

Last quarter, I was reviewing campaign performance with a D2C founder. Fashion brand. ₹12L/month in Meta spend. Growing fast.

5.1x ROAS campaign with a 31% return rate: was it profitable?

Their best campaign: 5.1x ROAS.

Their agency loved it. Their team celebrated it. Every Monday call started with this campaign as evidence that things were working.

I killed it.

Here’s why, and why it was the right decision.

The Campaign That Looked Perfect

On paper, everything about this campaign checked out.

Strong ROAS (5.1x). Low CPA (₹310). High click-through rate. Healthy impression volume. The creative was a 30% off sale, and it was converting beautifully.

But when we pulled the full picture:

Platform ROAS

5.1x

What Ads Manager reported

Return Rate

31%

Nearly 1 in 3 buyers returned

Real POAS

0.28x

Gross profit per ₹1 of ad spend

Nearly 1 in 3 customers who bought through this campaign returned the product. And when we ran the real numbers:

The real P&L of the 5.1x campaign

Gross revenue attributed
₹28L
Return-adjusted net revenue
₹19.3L
COGS (52% on shipped units)
₹14.56L
Outbound shipping (₹130 × 2,000 orders)
₹2.6L
Return processing (₹110 × 620 returns)
₹68,200
Payment fees (2.5%)
₹48,250
Ad spend
₹5.49L
Gross Profit₹1,51,550

Gross profit

₹19.3L − ₹14.56L − ₹2.6L − ₹68,200 − ₹48,250 = ₹1,51,550

POAS

₹1,51,550 ÷ ₹5,49,000 = 0.28x

28 paise of gross profit for every rupee of ad spend.

5.1x ROAS. 0.28x POAS.

The campaign was generating ₹0.28 in gross profit per rupee of ad spend, before team costs, before rent, before software. Effectively burning cash at scale.

Profit waterfall: ₹28L revenue falling to ₹1.52L profit on ₹5.49L ad spend

Why ROAS Couldn’t See This

Meta’s pixel sees the purchase event.

It does not see the return.

When 620 customers returned their products 10–14 days after purchase, those conversions stayed in Ads Manager unchanged. Revenue stayed attributed. ROAS stayed at 5.1x.

The return hit Shopify. It hit the logistics partner. It hit the founder’s bank account.

Meta never knew.

And so the algorithm kept optimising toward this campaign. Kept finding more customers who would click a 30% off offer, buy, and return. The cycle kept running. The losses kept accumulating.

The Customer This Campaign Was Acquiring

Here’s the thing about 30% off campaigns with 31% return rates.

You’re not acquiring customers. You’re acquiring transactions.

Customers who were attracted by a 30% discount have a specific profile:

  • Price-driven, not brand-driven
  • Higher likelihood of returning if the product doesn’t immediately wow them
  • Lower LTV (they wait for the next sale rather than repurchasing at full price)
  • Sometimes buying from multiple brands simultaneously, intending to keep only the best

The 5.1x ROAS campaign was efficiently finding and acquiring exactly these people. At enormous cost.

What Happened After We Killed It

The founder was nervous. Understandably. The campaign was their highest ROAS. Killing it felt like choosing to perform worse.

Two things happened in the four weeks after:

Result 1

Overall ROAS dropped. MER stayed flat.

Individual campaign ROAS declined, we’d removed a high-ROAS campaign. But MER (Shopify net revenue ÷ total marketing spend) barely moved. Which told us what we suspected: the campaign was attributing revenue that was either coming back as returns or coming from other channels anyway.

Result 2

Return rates fell significantly.

Overall brand return rate dropped from 19% to 13% in six weeks. The campaign had been responsible for a disproportionate share of all returns, and without it, the whole brand’s return economics improved.

Brand return rate

19% → 13%

In six weeks

Contribution margin

+11 pts

No change to remaining campaigns

Contribution margin improved by 11 percentage points. Without a single change to the remaining campaigns.

The Lesson

ROAS rewards campaigns that generate attributed revenue efficiently.

It does not reward campaigns that generate profit.

A discount campaign that converts brilliantly, 30% off, high CTR, high CVR, will always show strong ROAS. The discount is priced into the conversion, not into the return.

The return, which is where the damage lives, happens after the attribution window. After the platform has already celebrated the conversion. After the ROAS has already been calculated and reported.

You need a metric that catches what ROAS misses.

POAS would have caught the loss-making campaign in week two

The Metric That Would Have Caught This Earlier

POAS. Profit on Ad Spend.

If the founder had been tracking POAS per campaign, not just ROAS, this campaign would have been flagged in week two. Not month four.

Profit on Ad Spend

POAS = Gross Profit ÷ Ad Spend

The break-even is always 1.0. 0.28x POAS is unmistakably below break-even, regardless of what ROAS says.

The fix isn’t stopping discount campaigns. Discounts have a legitimate role in D2C marketing.

The fix is measuring discount campaigns on POAS, knowing your return rate for each campaign and applying it to the calculation. So when a “30% off” campaign has a 31% return rate that pushes POAS to 0.28x, you catch it before it costs you ₹20L.

What to Do Right Now

Pull your current campaigns. For each one, especially your best-performing ones by ROAS, ask:

What is the return rate on this campaign specifically?

Then run the POAS calculation.

  1. Pull every active campaign, starting with your top performers by ROAS.
  2. Find each campaign’s own return rate.
  3. Run the POAS calculation with return-adjusted revenue.

The campaign you’re most proud of might be the most important one to look at first.

Frequently Asked Questions

How can a campaign show 5x ROAS and still lose money?

ROAS divides attributed revenue by ad spend. It ignores COGS, shipping, payment fees and returns. In this case a 31% return rate, 52% COGS and shipping costs turned a 5.1x ROAS into a 0.28x POAS: 28 paise of gross profit for every rupee of ad spend.

Why doesn't Meta Ads Manager show returns?

Meta's pixel sees the purchase event, not the return. Returns arrive 10 to 14 days later in Shopify and with the logistics partner, after the attribution window has closed, so the conversion stays in Ads Manager unchanged and ROAS is never corrected.

What happened after the 5x ROAS campaign was paused?

Overall ROAS dropped but MER stayed flat, showing the campaign's attributed revenue was either coming back as returns or coming from other channels anyway. The brand's return rate fell from 19% to 13% in six weeks and contribution margin improved by 11 percentage points.

Should D2C brands stop running discount campaigns?

No. Discounts have a legitimate role in D2C marketing. The fix is to measure discount campaigns on POAS using each campaign's own return rate, so a 30% off campaign with a 31% return rate is caught in week two rather than month four.

What is the break-even POAS?

POAS is Gross Profit divided by Ad Spend, and its break-even is always 1.0. Anything below 1.0 means the campaign is destroying margin, regardless of what ROAS says.

Catch the 0.28x Before It Costs You

Flable AI calculates real-time POAS per campaign, connecting your ad spend, Shopify revenue, returns data and COGS automatically.

Book a Live Demo → Backed by Microsoft & NVIDIA