Open Meta Ads Manager on any given Monday and you'll see a ROAS column full of numbers that look, on the surface, like good news. 2.1×. 3.4×. 1.8×. Every one of them reads as "profitable": spend a dollar, get more than a dollar back. For a lot of e-commerce brands, that number is the main thing deciding which campaigns get more budget and which get paused.

The problem is that the number is incomplete. Platform-reported ROAS is a ratio of attributed revenue to ad spend, nothing else. It doesn't know what the product cost you to make or source. It doesn't know how many of those orders will come back as returns. It doesn't know what your payment processor takes off the top. It is, by design, the most optimistic number your ad account can show you.

What "true ROAS" actually adjusts for

True ROAS is the same calculation, but with the three inputs that determine whether an order was actually profitable layered back in:

  • Cost of goods sold (COGS), applied at the SKU level rather than as a blended store-wide average, since margin varies a lot between products.
  • Return rate, because a sale that looks profitable on day one can become a loss once the return window closes.
  • Payment and fulfilment fees, which are easy to forget because they're billed monthly, separately from the ad platform entirely.

None of this is exotic. It's the same arithmetic a careful operator does by hand in a spreadsheet on a Sunday night. The difference is that doing it by hand, per campaign, every week, doesn't scale, so most stores either do it occasionally, do it for one or two "problem" campaigns, or don't do it at all and just trust the platform number.

// Why this matters

A campaign reporting 1.8× ROAS on Meta can easily be sitting at 0.9× true ROAS once cost of goods, a normal return rate, and processing fees are factored in: profitable-looking, actually losing money on every order.

A worked example

Take a campaign spending $1,000 a week and generating $1,800 in attributed revenue. Reported ROAS: 1.8×. Now apply three realistic adjustments for a mid-market DTC brand:

40%COGS as a share of revenue (typical for many physical-product DTC categories)
15%Return rate on this SKU, applied with a return-window lag
3.4%Combined payment processing + fulfilment fee

Run those three deductions against the $1,800 in revenue and what's left to compare against the $1,000 spent is meaningfully smaller than the platform implies. Depending on the exact mix, that 1.8× reported figure can land anywhere from modestly profitable to underwater, and the only way to know which is to actually run the calculation, not estimate it.

Why this gets missed so often

It's not that store owners don't know COGS and returns matter. It's that the information lives in three different places: the ad platform, the store's order data, and a billing statement. Reconciling them by hand takes 45 minutes to an hour per week, per store, done properly. Most weeks, that time doesn't exist, so the platform's number becomes the de facto source of truth by default, not by choice.

What to do with a true ROAS number once you have it

The point of calculating true ROAS isn't to distrust every campaign; most of the time the picture is fine, sometimes even better than reported once a high-margin SKU is driving the traffic. The point is that budget decisions made on reported ROAS alone are, some fraction of the time, exactly backwards: scaling the campaign that's quietly losing money and leaving the genuinely profitable one under-funded.

This is the specific gap 7Captur is built to close: pulling ad spend and revenue data directly from Meta and Google via API, blending it against COGS, return rate, and fee data from Shopify or WooCommerce, and turning the output into three plain-English budget decisions each Monday, each one requiring your explicit approval before anything changes in the ad account.

See your true ROAS, not just what Meta reports.

A 20-minute walkthrough using your actual store and ad account data, no pitch deck, no guessing.

Get your report →