Two campaigns at the same ROAS can differ by thousands in actual profit.
Your best-performing campaign by ROAS might be your least profitable, and your reporting has no way to tell you.
4 min read
ROAS is revenue divided by ad spend. It counts exactly one cost — the advertising — and ignores every other cost involved in delivering the order.
For a business where the ad platform is the largest variable cost, that would be defensible. For an ecommerce business, it is not. Cost of goods, shipping, payment processing, discounts, packaging and returns typically dwarf media cost, and they vary enormously between the products different campaigns happen to sell.
The consequence is precise and expensive: two campaigns reporting an identical ROAS can produce wildly different profit, and the campaign you are scaling may be the one destroying margin.
The example that makes it concrete
Two campaigns, both at a 3.0 ROAS, both spending $10,000 and returning $30,000.
| Campaign A — premium product | Campaign B — entry product with a discount | |
|---|---|---|
| Revenue | $30,000 | $30,000 |
| Ad spend | $10,000 | $10,000 |
| Reported ROAS | 3.0 | 3.0 |
| Cost of goods (35% / 55%) | $10,500 | $16,500 |
| Shipping and fulfillment | $2,100 | $3,600 |
| Payment fees (2.5%) | $750 | $750 |
| Returns (8% / 22%) | $2,400 | $6,600 |
| Contribution margin | $4,250 | -$7,450 |
Campaign B is not a bad campaign by any measure the ad platform can see. It sells a lower-margin product, discounted, in a category with high returns. Every one of those facts lives in your store, not in Ads Manager.
Calculating contribution margin per campaign
The formula is not complicated. The work is in getting the inputs.
- Start with revenue attributable to the campaign — with all the attribution caveats that implies, so use it directionally.
- Subtract cost of goods for the products actually sold, not a blended average across the catalog.
- Subtract shipping and fulfillment, which varies by weight, zone and whether shipping was free.
- Subtract payment processing fees, and in cash-on-delivery markets, the collection fee too.
- Subtract discounts actually redeemed, which is often materially different from the discount offered.
- Subtract the cost of returns and cancellations at the rate for those specific products.
- Subtract the ad spend.
- What remains is contribution margin — the money the campaign actually contributed toward fixed costs and profit.
What changes when you switch
- Campaigns selling high-margin products get more budget, even at a lower ROAS. This is usually the largest single reallocation, and it feels wrong for about a week.
- Discount-led campaigns get scrutinized properly. A 25% discount on a 50% margin product halves your contribution — the campaign has to work twice as hard to stand still.
- Free shipping thresholds get set on evidence rather than on what competitors do.
- High-return products stop being scaled just because they convert well. Conversion rate and profitability are frequently in tension, and only one of them appears in Ads Manager.
- Break-even ROAS becomes a per-campaign number instead of an account-wide article of faith.
Your break-even ROAS is not one number
Break-even ROAS is 1 divided by contribution margin rate. At a 60% margin, break-even is about 1.7. At 30%, it is about 3.3. A single account-wide target ROAS applied across products with different margins guarantees that you are overspending on some and starving others.
Returns: the cost most brands never assign to a campaign
A return is not a neutral event. You paid to acquire the customer, paid to ship the product, will pay to ship it back, will pay to inspect and restock it, and may not be able to resell it at full price. In cash-on-delivery markets, an undelivered order costs you the full logistics round trip and returns nothing.
Return rates vary sharply by product, and therefore by campaign. Fashion and apparel run far higher than most categories; in India, fashion and ethnic wear see returns between roughly 25% and 35%.
If your reporting treats returns as a company-wide overhead rather than a campaign-level cost, the campaigns driving the most returns look like your best performers. They are not.
Making this practical without a data team
Nobody needs a warehouse of data to start. A monthly spreadsheet does most of the work.
- List your top ten campaigns by spend
- For each, note the products it predominantly sells and assign a margin band
- Apply your average shipping cost, payment fee and category return rate
- Compute contribution margin per campaign
- Rank by contribution margin, not by ROAS, and compare the two rankings
The gap between those two rankings is the single most useful thing most D2C brands can look at. In many accounts, the top campaign by ROAS is not in the top three by contribution — and the budget has been allocated on the wrong list for months.
Common questions
What is contribution margin in ecommerce?
Revenue minus all the variable costs of delivering that revenue — cost of goods, shipping, payment fees, discounts, returns and advertising. What remains contributes toward fixed costs and profit.
Why is ROAS misleading?
It counts advertising as the only cost. Two campaigns at the same ROAS can differ by thousands in profit because they sell products with different margins, shipping costs and return rates — none of which the ad platform can see.
What is a good break-even ROAS?
It is 1 divided by your contribution margin rate, which means it differs per product. At 60% margin, break-even is around 1.7; at 30%, around 3.3. A single account-wide target guarantees you are wrong on some products.
How do I account for returns at campaign level?
Apply the return rate for the products that campaign predominantly sells, not a company-wide average. Campaigns that push high-return products carry a cost that never appears in their reported ROAS.
Do I need product-level cost data to start?
No. Three or four margin bands across the catalog, applied to the products each campaign mostly sells, will change your budget decisions immediately. Refine the precision later.
How Glimmio handles this
Because Glimmio reads Shopify orders alongside Meta and Google Ads spend, campaign performance is judged against what the store actually recorded rather than against platform-reported revenue alone.
Marketing Mix modeling looks at where the next unit of budget contributes most across channels, which is the question contribution margin is really asking.
- Manual approval by default — nothing runs unattended
- New campaigns and ads are always created paused
- 7-day recovery window on eligible changes
- 48 permissions across 13 roles, scoped per client account
Go deeper on this
The product pages and setup guides that cover what this article describes.
Searches this answers
- contribution margin vs roas
- profit based ad optimization ecommerce
- true roas after cogs
- d2c contribution margin calculation
- profitable ad spend shopify
Read next
Blended ROAS and MER: The Number That Cannot Be Gamed
Every channel reports a profitable ROAS, the totals do not add up to your actual revenue, and you cannot tell whether spending more is making you money.
ReadCAC and LTV Benchmarks for D2C Brands, and What They Hide
You know acquisition is getting more expensive but you cannot tell whether your numbers are normal, bad, or about to become a solvency problem.
ReadRTO Is Eating Your Margin: A COD Playbook for Indian D2C
Your ad dashboard shows orders. Your bank statement shows something much smaller, and the difference is sitting in a warehouse.
Read
