Skip to content
Strategy & Scale

True ROAS Exposed a Fake Winner: A DTC Brand's Story

8 min read
GE

Giada Esposito

E-commerce Performance Manager

Every quarter, this direct-to-consumer skincare brand held a scaling meeting, and every quarter the same campaign won the room. On the ad platform it posted a revenue ROAS north of four — the highest in the account — so the team did the obvious thing and poured budget into it. Yet the bank balance never moved the way the dashboard promised. This is the story of how a true ROAS fake winner campaign got exposed: a glowing revenue number that was quietly losing money on every order, surfaced only when the brand started measuring profit instead of revenue and valuing orders at the rate they actually happened.

Quick answer: A campaign can show a great revenue ROAS and still lose money, because revenue ROAS ignores COGS, fees, shipping and returns. Switching to profit-based True ROAS — fed by Shopify order data, with FX converted at the day-of-transaction rate — revealed that the brand's "best" campaign was profit-negative, while a quieter campaign was the real winner. The fix was a rule: scale on profit, never on revenue ROAS.

This is a composite drawn from common DTC patterns, but the failure mode and the fix are real. The names and exact figures are illustrative; the mechanism that produced a fake winner is not.

The "winner" everyone wanted to scale

The campaign had a name everyone in the meeting knew. It targeted a broad lookalike audience around the brand's hero product — a discounted starter bundle — and it produced sales reliably. On the platform's own reporting it carried the account's best revenue ROAS by a wide margin, and that single number drove the agenda. More budget here, less everywhere else. The logic felt airtight: this is the campaign making the most money per euro, so feed it.

The buyer was not careless. He was doing exactly what the tool in front of him told him to do. The ad platform reported revenue against spend, the ratio was excellent, and there was no visible reason to doubt it. The problem is that the platform's revenue number is the top of the funnel, not the bottom of the P&L, and the gap between those two is where fake winners live. This is the same disconnect dissected in why your ROAS doesn't match your profit: the ad manager and the bank account are measuring two different things.

A campaign's revenue ROAS answers one question only: did people buy? It says nothing about whether those purchases made money. Treating it as the scaling metric means scaling on the wrong axis — and the better the revenue ROAS looks, the more confidently you pour budget into the loss.

The first crack: the bank account disagreed

The crack opened the way it usually does — not in the dashboard, but in the books. The founder ran a manual margin check at the end of a strong month, the kind of month the dashboard celebrated, and the contribution margin had barely moved. Spend was up sharply, reported revenue was up to match, the platform ROAS was glowing, and yet the money left over after costs was flat. Something in the chain between "great ROAS" and "more profit" was broken.

The first instinct was to blame the data — a tracking gap, a pixel firing twice, attribution overcounting. But the revenue the platform reported was, broadly, real. Orders existed. The error was not in counting sales. It was in what the brand was doing with that count: treating gross revenue as if it were profit. The discounted starter bundle that made the "winner" convert so well also carried the thinnest margin in the catalog, and the campaign was selling almost nothing else.

The most expensive number in a DTC account is a revenue ROAS the team trusts blindly. It feels like a profit signal, so nobody re-examines it — and the misallocation compounds silently, one scaled budget cycle at a time, until a manual margin check finally exposes the flat contribution underneath the rising revenue.

Where revenue ROAS hides the truth

Pull the "winner" apart and the leak is obvious in hindsight. The bundle sold at a discount, so the average order value was low and the gross margin on each sale was thin. Cost of goods ate most of what was left. Payment-processing and platform fees took a slice off the top of every transaction. Shipping was partly subsidized to hit the free-shipping threshold that made the bundle convert. And the discount-driven audience returned product at an above-average rate, so a meaningful share of "revenue" reversed weeks later.

None of those four costs — COGS, fees, shipping, returns — appears anywhere in a platform's revenue ROAS. The ad manager sees a sale and books the revenue. It never sees the refund, never sees the cost of the goods, never sees the processor's cut. So a campaign that loses a little on every order can post a revenue ROAS of four and look like the best thing in the account. The framework for separating these two numbers is laid out in the reported ROAS versus true ROAS framework: one measures traffic, the other measures whether that traffic paid.

Revenue ROAS and profit move together right up until a discount, a fee structure, or a returns spike pulls them apart — and that is precisely when you most need them to disagree out loud. A metric that cannot show you a profit-negative sale is not a safety metric. It is a blindfold with good lighting.

The multi-currency trap underneath it

There was a second distortion stacked on the first. The brand sold into the eurozone, the UK and the US, so revenue arrived in three currencies. The manual margin checks — and the spreadsheet the founder used to sanity-test the account — converted everything at whatever exchange rate happened to be current on the day the spreadsheet was built. That meant an order placed three months ago, when the pound sat at one level, was being re-valued at today's level, which was different.

Applied across a quarter of orders, that single-rate conversion smeared the revenue side of every ROAS calculation. Some campaigns looked better than they were, some worse, and none of it tied to what the store had actually banked. The "winner" benefited from the noise in one direction; a genuinely profitable UK campaign was being undersold by it in the other. The mechanics of why this happens are walked through in why multi-currency ROAS doesn't add up: a single rate cannot represent orders that happened across many days at many rates.

Currency drift is a method error, not an effort error. Converting historical orders at today's rate guarantees the revenue side of ROAS disagrees with the ledger — and once revenue is wrong, every campaign ranking built on it is partly fiction. The fix is valuing each order at the rate from the day it actually occurred.

Connecting Shopify and switching to True ROAS

The brand moved its measurement onto Wevion's profitability layer, and the unit of decision changed at the foundation. Instead of reading revenue ROAS off the ad platform, the team connected its Shopify store so order-level data — line items, cost of goods, processing fees, currency and returns — flowed into the same view as ad spend. With both sides present, the layer could compute True ROAS: net profit, after COGS, fees, shipping and returns, divided by spend, per campaign.

For the first time the scaling meeting had a number that meant what everyone had always assumed revenue ROAS meant. The same Shopify-and-WooCommerce order sync that feeds the profitability view also keeps the cost side current as catalog prices and supplier costs change, so True ROAS does not quietly go stale. The platform reported a roughly 15-minute sync cadence rather than an instant one, which for a profit decision made over days or weeks is invisible — a margin call is not a millisecond call.

The single most important change was moving the decision number from gross revenue to net profit. Once True ROAS sat where revenue ROAS used to, the question in the scaling meeting flipped from "which campaign sells the most?" to "which campaign makes the most after everything it costs to fulfill?" — and the answer was not the same campaign.

FX at the day of transaction

Switching the metric to profit only worked because the currency problem was solved underneath it. The profitability layer values each order at the day-of-transaction exchange rate — the rate from the day the order was actually placed — rather than one rate stretched across the whole period. A UK order from three months ago is converted at the rate that existed three months ago, the way the books recorded it.

That re-valuation did two things. It made the brand's blended True ROAS tie to the ledger instead of drifting a few percent every time the spreadsheet was rebuilt, the reconciliation problem one DTC team solved for its board. And it removed the currency noise that had been flattering the fake winner and penalizing the genuine one. With both the profit subtraction and the per-day FX in place, the campaign rankings finally reflected reality instead of a conversion artifact.

Profit-based ROAS and day-of-transaction FX are not two features; they are two halves of one true number. Subtract the real costs but convert at the wrong rate and the answer still drifts. Convert correctly but ignore COGS and you scale a loss with great precision. You need both before the ranking can be trusted.

The reveal: the fake winner, and the real one

The new ranking rearranged the entire account. The celebrated "winner" — the discounted bundle on the broad lookalike — landed below break-even on True ROAS. Its revenue ROAS of four translated to a profit ROAS under one once the thin margin, fees, subsidized shipping and elevated returns were subtracted. Every euro the team had been proudly pouring into it was buying revenue at a small loss. Scaling it had been scaling the leak.

The real winner was a campaign nobody had argued for: a smaller, full-price effort selling a higher-margin serum to a warmer, more specific audience. Its revenue ROAS was unremarkable — middle of the pack — which is exactly why it had never won the room. But its True ROAS, once profit and correct FX were applied, was the best in the account by a wide margin. It had been the quiet engine of the brand's profit the whole time, starved of budget because it never topped the chart the team was reading.

The campaign that tops a revenue ROAS chart and the campaign that tops a profit chart are often different campaigns. A measurement system that only shows you the first will reliably push budget toward your worst unit economics and away from your best — confidently, every cycle, until you change what you are measuring.

The reallocation and the new rule

The reallocation was undramatic precisely because the number was now trustworthy: cap the fake winner, shift budget to the proven profit campaign, and treat any campaign's revenue ROAS as a traffic-quality signal rather than an allocation metric. The brand did not need to relitigate the math in every meeting, because the profitability view had already done the work — one True ROAS number per campaign, founder and buyer reading the same screen.

The lasting output was a rule, not a one-time fix: no campaign gets more budget unless its True ROAS clears the contribution target after COGS, fees and returns. Revenue ROAS still gets a glance — it is a fine early read on whether an audience converts at all — but it never decides where the money goes. The brand turned a quarterly argument about which dashboard to believe into a single profit number both sides already trusted.

Wevion's plans start at a permanent free tier (€0), then Starter at €99/mo, Pro at €499/mo, and Plus at €1,499/mo (€1,199 annual, billed yearly at -20%), with Enterprise as a custom plan, and every paid tier includes a 14-day trial that coexists with the free plan. The store connection and profit view sit inside that, so a brand can wire Shopify and see True ROAS before committing to a paid tier. The rest of the playbook lives in the campaign-scaling cluster.

The lesson generalizes to any store buying ads against physical product: the ad platform will always tell you which campaign sold the most, and it will almost never tell you which one made the most. Subtract the real costs, value every order at the rate it happened, and let one profit number — not the prettiest revenue ratio — decide where the budget goes. The fake winner only wins for as long as you let revenue do the talking.

Frequently Asked Questions

Newsletter

The Ad Signal

Weekly insights for media buyers who refuse to guess. One email. Only signal.

Related Articles

Ready to Automate Your Ad Operations?

Start launching campaigns in bulk across every account. Start free, forever. No credit card required. Cancel anytime.