Your Meta ROAS Beat Target - So Why Did Revenue Miss?

It's the last Friday of the month and six people are on a call staring at the same dashboard. The media buyer is talking first, and the news sounds good. Meta came in 20% above the ROAS target. Google held its number. Email did its job. Everyone nods. Then the founder pulls up the Shopify revenue line, and the room goes quiet, because revenue landed 10% under projection and the profit number is worse than that. Somebody says "we're still working out the attribution gaps." Nobody has an answer. The meeting ends with more questions than it started with.
I've watched a version of that meeting more times than I can count. Every channel reports a win and the business still loses. If that scene feels familiar, the problem usually isn't your media buying. It's that the numbers everyone celebrated in that call don't connect to the number in the bank account.
This is the ROAS vs revenue disconnect, and it's worth pulling apart properly, because once you see it you can't unsee it.
Why every channel can "win" while the business loses
Channel ROAS is a metric each platform marks for itself. Meta tells you how Meta did. Google tells you how Google did. They both want to take credit for the same sale, so they both claim it. Add the reported revenue across your channels and you'll often get a number bigger than what Shopify actually recorded. That's not a glitch, it's just how platform attribution works.
So in that Friday meeting, "Meta beat target by 20%" might be true inside Meta's own world and still mean almost nothing about the business. The platform got more efficient at claiming credit. That's a different thing from the business making more money.
Here's the part that stings. Attributed ROAS can climb at the exact moment your real profit is falling. Picture a brand where Meta's reported ROAS lifts from 2.4 to 2.9 over a month. On the dashboard that's a clear win. But under it, the spend mix has quietly shifted toward retargeting and branded search, which is spend that mostly catches people who were going to buy anyway. The platform number goes up because you're paying to take credit for easy sales. New customer revenue goes flat. The business stalls while the dashboard throws a party.
That's the trap. The metric and the business are pointing in opposite directions, and the metric is louder.
The number that was missing from that call
In all the back and forth about ROAS, nobody on that call mentioned the one figure that actually decides whether the month was good. Contribution margin.
Contribution margin is what's left after you take net sales and strip out the cost of goods, the shipping, the fulfilment, and the ad spend that earned the sale. It's the money that's genuinely yours to cover overheads and turn into profit. It's the number that shows up in your bank account. Everything else is a proxy for it.
Here's my take after years of staring at these dashboards: contribution margin should be the top of your scoreboard, and ROAS should sit well below it. Most teams have that hierarchy upside down. They lead with channel ROAS because it's the number the platform shoves in their face every morning, and they treat contribution margin as something the bookkeeper works out weeks later.
To put this into perspective, you can hit every channel ROAS target you set and still go backwards on margin. Say your blended target was 3x and you landed it. If your discount got deeper to get there, or your shipping costs crept, or your product mix tilted toward your lower-margin SKUs, the 3x is real and the profit still shrank. ROAS doesn't know any of that. Contribution margin knows all of it.
MER, and why it isn't the boss either
The usual fix people reach for is MER, the blended number: total revenue divided by total spend across everything. It's a big step up from staring at one channel in isolation, and I'd take blended MER over per-channel ROAS any day for a top-line gut check.
But I don't think MER should be the governor of the account either. MER still doesn't know your margins. A brand running at a 4 MER on 70% margins is in a completely different reality from a brand at a 4 MER on 35% margins, and the dashboard shows them the identical number. MER tells you how hard the marketing is working. It doesn't tell you whether the business is making money.
So the honest answer is that no single ratio is the boss. The thing you steer by is contribution margin, in dollars, and MER becomes one of the dials you watch on the way there, not the destination.
What the dashboard should actually show you
When we take over an account, the first thing we build before touching a single budget is a blended view that puts these numbers in the right order. It looks roughly like this.
- Contribution margin in dollars, at the top. The biggest number on the screen, because it's the game you have to win above everything else. Net sales, minus COGS, minus shipping and fulfilment, minus ad spend.
- New customer revenue and new customer efficiency, sitting just under it. This is the guardrail against quietly squeezing your existing customers for a good-looking month while starving future growth. You can be ahead on margin and still be in trouble here.
- Blended MER, as a dial not a target. A read on how hard the whole machine is working, checked against margin, never on its own.
- Channel ROAS, normalised and near the bottom. Useful for spotting where to shift budget between channels, useless as a measure of whether the month worked. We line the channels up on a comparable scale so you're not comparing Meta retargeting to Google non-brand as if they're the same thing, because they're not.
The order is the whole point. When the biggest, top number is the one that matches your bank account, you stop being fooled by a channel that got better at claiming credit.
The daily check-in that replaces the Friday autopsy
The other fix is about timing, and it's the one that quietly changes everything.
That end-of-month meeting was an autopsy. By the last Friday, the month is over. Whatever went wrong has already happened and the budget is already spent. You're not managing the result anymore, you're explaining it.
I'd replace it with a short daily check-in against an expectation. Think of it like a map. You set the destination at the start of the month, which is your contribution margin goal, broken down into what each day needs to look like. Then each morning you ask one question: where are we against the plan, and what's the single thing to fix today? You'll never hit day one exactly, nobody does. The point isn't to be right on day one. The point is to spot you're off course on day three instead of day thirty, while you can still do something about it.
That shift, from a monthly autopsy to a daily course-correction, is worth more than almost any targeting change. A brand that catches a margin slide on the 4th has the whole month to fix it. A brand that finds out on the last Friday just has a story about why it missed.
Where to go from here
If your channels keep reporting wins while your bank balance disagrees, the issue almost certainly isn't the media buying. It's that you're steering by the wrong number, and finding out too late to act on it.
So here's a quiet challenge. Pull last month's reported channel revenue, add it up, and put it next to what Shopify actually recorded. Then work out your contribution margin for the month and ask whether your scoreboard would have shown you that in time. If you'd like a fresh pair of eyes to map your channel numbers back to the profit that actually hit your account, that's exactly the kind of thing a Signal/Noise Audit lays bare in an afternoon.
.webp)





