PostlytixGuidesMeta Ads ROAS vs true contribution margin
Guide

Meta Ads ROAS vs
true contribution margin.

A 4.2x ROAS campaign can lose money on every order. Here is the arithmetic Meta does not run for you.

Meta reports 4.2x ROAS on a campaign. You spent $7,200 and Meta attributes $30,240 in revenue. By every number on the dashboard, that campaign is working, so you scale it.

Run the same campaign through your actual cost structure and it produced a contribution margin of negative $2,043. Every additional dollar you put into it makes the business slightly worse.

Both statements are true. ROAS is not a profitability metric and was never meant to be one. It is a revenue-to-spend ratio, and revenue is the number furthest from your bank account.

What ROAS leaves out

ROAS divides attributed revenue by ad spend. That is the whole formula. It contains no information about:

A brand with 30 percent COGS and a 5 percent return rate can be genuinely profitable at 2.5x ROAS. A brand with 49 percent COGS and a 41 percent return rate can be losing money at 4.2x. The ratio alone tells you nothing without the cost structure behind it, and the cost structure varies by SKU.

The arithmetic on one SKU

Crestline Co. ran $7,200 of Meta spend against the CL-7732 Trail Boot over thirty days. Here is what Meta saw, and what actually happened.

What Meta reportsAmount
Ad spend$7,200
Attributed revenue, 168 orders at $180$30,240
ROAS4.2x

Now the same 168 orders, carried all the way through.

LineAmountWhy
Gross revenue$30,240168 orders at $180
Less refunds($12,420)41% return rate, 69 units back
Net revenue$17,82099 orders actually kept
Less COGS on kept units($8,712)99 at $88 landed cost
Less outbound shipping($1,512)All 168 orders shipped at $9
Less return shipping($1,242)69 at $18 round trip
Less restocking labor($290)69 at $4.20 per unit
Less payment processing($907)~3% charged on gross, not net
Contribution before ad spend$5,157
Less ad spend($7,200)The 4.2x campaign
Contribution margin($2,043)About $12.16 lost per order

Crestline Co. is a simulated DTC brand used for demonstration. These figures are illustrative and are not a client result. Our interactive demo cites roughly $12.40 per order on marginally different COGS assumptions.

Notice which line does the damage. It is not the ad spend. Contribution before ad spend was $5,157 on $30,240 of gross revenue, a 17 percent margin, and the 41 percent return rate is why. Two thirds of the gross revenue never stayed.

Notice also that returns are charged three times: you refund the sale, you eat the return shipping, and you pay someone to put it back on the shelf. Only the first of those appears anywhere near a marketing dashboard.

The return rate is usually a product problem

A 41 percent return rate on one SKU when the brand average is 22.4 percent is not a marketing signal. It is a product signal that happens to be showing up in your ad account.

For CL-7732, 74 percent of return reasons said some version of "runs small." The fix was a sizing guide update, which had been flagged to the product team eight weeks earlier and was still in a backlog. In the meantime the ad account kept spending, because the ad account could see a 4.2x ROAS and nothing else.

This is the shape of the problem worth internalizing. The support tickets knew. The returns data knew. The product backlog knew. The ad account, which controlled the spending, knew none of it, and none of those four systems talk to each other.

Pausing the campaign is the smaller half of the fix. It stops the bleeding at roughly $7,200 a month. Fixing the sizing guide is what lets the SKU sell profitably again. Doing only the first turns a product problem into a permanently dead SKU.

What to measure instead

Compute contribution margin per SKU, then per campaign. The formula that matters:

Net revenue after returns, minus COGS on units kept, minus all shipping, minus restocking, minus payment fees, minus ad spend.

From there you can derive your real break-even ROAS, which is specific to each SKU rather than a single company-wide target. For CL-7732 at a 41 percent return rate, break-even sits near 5.9x, which no boot campaign is going to hit. At the brand's normal 22.4 percent return rate, the same SKU breaks even around 3.4x and the 4.2x campaign would have been genuinely profitable.

That is the entire story: the campaign was not badly targeted, it was selling a product with a defect nobody had connected to the spend.

What to do

  1. Get landed COGS per SKU into one place your reporting can reach. Nothing downstream works without it.
  2. Attach return rate to every SKU-level ad report. A campaign report without a return rate column is not a profitability report.
  3. Set a per-SKU break-even ROAS rather than a company-wide target. One number across a catalog with different margins and return rates will always be wrong somewhere.
  4. Alert on return rate divergence, not just on ROAS. A SKU running well above your brand average is a product issue that is currently costing you ad budget.
  5. Route the root cause to whoever can fix it, with the dollar figure attached. "Update the sizing guide" gets ignored. "Update the sizing guide, it is costing $7,200 a month in ad spend" does not.

The reason this persists is organizational, not analytical. Ads, returns, support and product each hold one piece, and no single team can see the whole shape. Postlytix reads all of them at once, calculates true contribution margin per SKU, and surfaces the ones where spend is outrunning margin, along with the root cause and a pause plan you approve before anything runs.

Common questions

Can a campaign be profitable on ROAS and unprofitable in reality?
Yes, routinely. ROAS divides attributed revenue by ad spend and contains no information about cost of goods, returns, shipping, restocking or payment fees. A brand with 49 percent COGS and a 41 percent return rate can lose money at 4.2x ROAS, while a brand with 30 percent COGS and a 5 percent return rate can be profitable at 2.5x.
What is a good break-even ROAS?
There is no single answer, and using one company-wide target is the mistake. Break-even is specific to each SKU because COGS and return rates differ across a catalog. On the example SKU here, break-even is about 5.9x at a 41 percent return rate and about 3.4x at the brand's normal 22.4 percent.
Why do returns cost more than the refund?
Because you pay three times. You refund the sale, you absorb the return shipping, and you pay someone to inspect and restock the item. On the example, 69 returns cost $12,420 in refunds plus $1,242 in shipping plus $290 in labor. Only the refund is visible anywhere near a marketing dashboard.
Should I just pause campaigns with negative contribution margin?
Pausing stops the loss but leaves the cause in place. A return rate well above your brand average is usually a product problem, so pausing without fixing it turns a fixable SKU into a permanently dead one. Do both: pause the spend, and route the root cause with the dollar figure attached.