Ask AI Which Meta Campaigns Lose Money After Returns
Meta ROAS counts orders that come back. Work out break-even ROAS after returns, ask an AI to check each campaign against it, and confirm before you pause.
On this page
A Meta campaign loses money after returns when its Meta ROAS is below a break-even ROAS that already allows for your store's usual returns, margin, payment fees and shipping. Meta counts attributed sales when the order is placed, including orders that later come back, so a campaign can clear your break-even on paper and still cost more than it earns. An AI that can read both Meta and your store can check every campaign against that line in one question, as an estimate.
Key takeaways
- Meta's purchase value includes orders that are later returned and refunded, so Meta ROAS overstates what a campaign earned.
- Break-even ROAS after returns is 1 divided by what you keep from each $1 of Meta-attributed sales.
- In the illustrative store below, break-even moves from 2.13x to 3.07x once a 20% return rate is counted.
- A campaign-level answer is an estimate: it applies the store's usual return rate to Meta's attributed sales.
- Before you pause or scale, check whole-store profit from your own orders and give low-data campaigns more time.
Why Meta ROAS hides returns
Meta reports the purchases and purchase value it attributes to your ads, under your attribution setting, at the moment the order is placed. When a customer sends the product back three weeks later and you refund them, Ads Manager doesn't take that sale back out. Your store knows about the refund; Meta's report doesn't reflect it.
That matters most when returns are uneven. Two campaigns can both show 3.0x in Ads Manager, but if one sells a product that comes back twice as often, it earns far less. The usual break-even calculation makes it worse, because it's normally worked out from margin alone, as if every order were kept. True ROAS after refunds shows the store-wide version of this gap, and why Meta Ads and Shopify disagree covers the other reasons the two numbers drift apart.
The fix is not to stop using Meta ROAS. It's the only number you have for each campaign. The fix is to raise the bar it has to clear.
Break-even ROAS after returns
Your break-even ROAS is the ROAS at which ad spend exactly equals what the sales earn you before ads. The break-even ROAS guide covers the basic version. To allow for returns, first work out what you keep from each $1 of Meta-attributed sales:
Earnings per $1 = (1 − return share) × (margin − payment fee) − (shipping + packaging + return share × cost per return) ÷ average order value
Break-even ROAS = 1 ÷ earnings per $1
Each part has a reason. A returned order loses its revenue, but you get the product back, so the return share comes off margin and fee together. Shipping and packaging are paid on every order, kept or not. And each returned order adds its own cost: a return label, handling, items you can't sell again. What a Shopify return really costs breaks that last one down.
| Input | What it means | Where to find it |
|---|---|---|
| Return share | Share of sales value refunded | Shopify refunds ÷ gross sales, for orders old enough that returns have come in |
| Margin | Share of the price left after product cost | Shopify's cost per item, or your supplier invoices |
| Payment fee | Share of each order your payment provider keeps | Your payment provider's statement |
| Shipping and packaging | Cost per order, including orders that come back | Shipping app and packaging invoices |
| Cost per return | Return label, handling and write-offs per returned order | Your returns log |
| Average order value | Sales ÷ orders, after discounts | Shopify analytics |
Use sales after discounts and without sales tax or VAT, and check whether the purchase value your pixel sends to Meta includes tax and shipping. If it does, Meta ROAS is higher than the sales you can spend; sales tax, VAT and ROAS explains the adjustment.
A worked example
These numbers are illustrative, chosen to be round, not a benchmark. Take a store with a $100 average order, a 60% margin, a 3% payment fee, $10 of shipping and packaging per order, a 20% return share and $15 of cost for each returned order.
| Ignoring returns | With 20% returns | |
|---|---|---|
| Margin minus payment fee | 57% | 57% of the 80% kept = 45.6% |
| Shipping, packaging and returns per order | $10 ÷ $100 = 10% | ($10 + 20% × $15) ÷ $100 = 13% |
| Earnings per $1 of attributed sales | $0.47 | $0.326 |
| Break-even ROAS | 2.13x | 3.07x |
The bar moves from 2.13x to 3.07x. A campaign at 2.5x in Ads Manager looks comfortably profitable against the first number. Against the second, every dollar of spend brings back about 81.5 cents of earnings, a loss of about 18.5 cents per dollar.

Checking each campaign against the line
With earnings per $1 known, each campaign's estimated profit after returns is its attributed sales times earnings per $1, minus its spend. Here are four illustrative campaigns from the same store.
| Campaign | Spend | Meta ROAS | Attributed sales | Estimated profit after returns | Verdict |
|---|---|---|---|---|---|
| Prospecting, broad | $3,000 | 2.5x | $7,500 | −$555 | Losing money |
| Advantage+ shopping | $4,000 | 3.0x | $12,000 | −$88 | Around break-even |
| Retargeting | $1,000 | 4.5x | $4,500 | +$467 | Making money |
| Creative test | $500 | 2.0x | $1,000 | −$174 | Losing money |
Together they spend $8,500 for $25,000 of attributed sales, a 2.94x blended ROAS that looks healthy against 2.13x. After the store's usual returns, the account is about $350 under water, and almost all of the loss sits in one campaign.
"Around break-even" needs a band, because the inputs are estimates. A sensible one is 10% of spend either side: the Advantage+ campaign's −$88 on $4,000 of spend is well inside it, so the right call is to watch it, not to pause it.

Asking an AI to run the check
You can do this by hand in a spreadsheet, but it's exactly the kind of repetitive maths an assistant does well. There are two ways.
With exports. Export a campaign report from Ads Manager with spend, purchases and purchase value, plus a Shopify sales and refunds report for a mature period. Upload both to ChatGPT or Claude, give it your margin, payment fee, shipping, packaging and cost per return, paste the formula above and ask it to show its working. ChatGPT for ad analysis covers how to prepare the files.
With a connector. An MCP connector that reads both your Meta account and your store does the same without exports. In Tera Ads Connect, one tool, get_ads_review, runs the whole check in a single call from Claude or ChatGPT; connecting Facebook ads to ChatGPT covers setup.
What get_ads_review does, exactly: for each campaign that spent money, it takes Meta's attributed sales, removes the store's usual return rate, applies the owner's own profit settings (margin, shipping and packaging per order, payment fee and cost per return) and subtracts spend. It gives each campaign a verdict of losing money, around break-even, making money or too little data, with one suggested next step: pause, raise the budget by about 20% when Meta ROAS is well above break-even, wait, or keep it running. It also returns the store's break-even ROAS on Meta's own basis, so you can hold it against the ROAS in Ads Manager.
It is an estimate, and it says so: every figure rests on Meta's attribution and the store's usual returns. The whole store's profit, from its own Shopify orders and refunds, comes from a different tool, get_profit.
Questions that work well, with exports or a connector:
- "Using my break-even ROAS after returns, which Meta campaigns earned less than they cost in the last 30 days? Show the working."
- "Which campaigns are within 10% of break-even, and which have too few purchases to judge?"
- "If I paused the campaigns that are losing money, how much spend would that free up?"
- "Do these campaign estimates add up to roughly my store's profit after returns for the same period?"
What the estimate can't tell you
Each campaign's own return rate. The estimate applies the store's usual return rate to every campaign. A campaign that sells a product customers return more often will do worse than estimated, and one that sells a rarely returned product will do better. If returns vary a lot by product, compare the campaign's products using contribution margin by product before acting on a borderline call.
Whether Meta's attribution is right. Attributed sales are Meta's own estimate under your attribution setting. View-through credit and overlap with other channels can make a campaign look better than its true contribution.
Order value differences. The formula uses the store's average order value. A campaign that sells mostly low-priced items pays shipping on more orders per dollar of sales than the average suggests.
Recent returns. Returns arrive weeks after the order. A return share taken from last week's orders is too low; use orders old enough for most returns to have come in.
The safety check is the whole store. Add up the campaign estimates and compare them with your store's profit after returns for the same period. If they disagree by a lot, trust the store's own orders, and look for the cause before you move budget.
Acting on the answer
Pause what clearly loses. A campaign well below break-even, with enough purchases to judge, is a pause candidate. Meta ads kill rules starts from break-even and sets simple rules for when to cut.
Fix before you kill. A losing campaign may have one tired creative or one bad ad set. Finding wasted ad spend shows where to look first.
Scale slowly. Raise budgets on clear winners in steps of about 20% and let delivery settle between steps; scaling Meta budgets explains why big edits can send an ad set back into learning.
Keep a person in the loop. With the ask first mode in Tera Ads, a pause or budget change your assistant requests waits until you approve it on the Tera Ads website. A pause, turn-on or budget change can be undone for 7 days, and one budget change can at most triple a budget or cut it to a tenth.
Common mistakes
Using margin-only break-even. If your break-even ignores returns, campaigns that sell often-returned products will look fine while they lose money.
Judging on fresh returns. Last week's orders haven't had time to come back. Use a period old enough for most returns to arrive.
Pausing on two sales. A campaign with a handful of purchases can swing either way. Wait for enough data unless the loss is already large.
Reading Meta ROAS as profit. ROAS is attributed sales over spend. Profit needs product cost, fees, shipping and returns taken off.
Forgetting tax in purchase value. If Meta's purchase value includes sales tax or VAT, your real ROAS is lower than Ads Manager shows.
Tera Ads Connect puts this check inside Claude or ChatGPT: live Meta reads, your Shopify sales, estimated profit after returns for the whole store and the get_ads_review estimate, with changes only as far as you allow. It's free for 30 calls a week, and Connect Pro is $15 a month; see pricing and the Connect page.
Frequently asked questions
What is a good break-even ROAS after returns?
There isn't one number; it depends on your margin, fees, shipping and return share. In the illustrative store in this guide it was 3.07x, against 2.13x when returns are ignored.
Why does Meta show a profitable ROAS when I'm losing money?
Meta counts attributed sales when the order is placed and doesn't remove refunded orders. Its ROAS is also sales over spend, not profit, so product cost, fees and shipping aren't in it.
How do I find my return share?
Divide refunded sales by gross sales in Shopify, for orders placed long enough ago that most returns have come in. Use the share by value for revenue and the share by orders for the cost per return.
Can ChatGPT or Claude tell me which campaigns lose money after returns?
Yes, as an estimate, if it can read your Meta campaign data and knows your store's return share and costs. Give it exports and the formula, or use a connector that reads both.
Should I pause every campaign below break-even?
No. Pause campaigns that are clearly below it with enough purchases to judge. Watch those near the line, and give new campaigns time to leave the learning phase.
Is a campaign estimate the same as my real profit?
No. It applies the store's usual returns to Meta's attributed sales. Your real profit comes from your store's own orders and refunds, for the whole store.