Performance · 8 min read ·
ROAS Formula and Automated Meta Ads Reporting (with Break-Even ROAS)
ROAS is simple to calculate and easy to misread. Here's the formula, the break-even number that actually matters, and how to stop building reports by hand.

Return on ad spend (ROAS) is the headline number of every e-commerce ad account. It is also the most misread one. A 3x ROAS can be excellent for one brand and a loss for another. This guide gives the formulas, the break-even threshold that matters and a way to automate reporting across Meta, TikTok and Google Ads.
The ROAS formula
ROAS = revenue attributed to ads ÷ ad spend
Spend €1,000 and generate €4,000 in attributed revenue: ROAS is 4 (often written 4x or 400%).
Break-even ROAS: the number that matters
ROAS ignores costs. To know whether ads are profitable, compare it with your break-even ROAS:
Break-even ROAS = 1 ÷ gross margin
With a 40% gross margin (after product, shipping, payment and fulfilment costs), break-even ROAS is 1 ÷ 0.40 = 2.5. Below 2.5 you lose money on the first order; above it you make a contribution. For cash-on-delivery brands, use delivered revenue — returned parcels have no margin.
The other metrics, correctly calculated
| Metric | Formula | Use it to… |
|---|---|---|
| ACoS | Ad spend ÷ revenue × 100 | See ad cost as a share of sales (the inverse of ROAS) |
| CTR | Clicks ÷ impressions × 100 | Judge creative and audience fit |
| CPC | Spend ÷ clicks | Track traffic cost |
| CPM | Spend ÷ impressions × 1,000 | Track auction pressure |
| CPA | Spend ÷ conversions | Compare with margin per order |
| Conversion rate | Conversions ÷ clicks × 100 | Separate ad problems from site problems |
One detail that breaks spreadsheets: division by zero. A new ad set with zero clicks should show "no data", not an error or an infinite CPC.
Why automate ad reporting
Each platform exports different column names, currencies and attribution windows. Rebuilding the same weekly sheet by hand wastes hours and introduces mistakes exactly where decisions are made. Automated reporting gives one schema, one set of formulas and the same numbers for everyone.
An automated reporting stack
- Collect — pull insights through the Meta Marketing API, or ingest exports. Our meta-ads-api-client reads account- and campaign-level insights and computes ROAS per row; meta-ads-roas-reporter turns a Meta insights export (JSON or CSV) into a ROAS / ACoS / CTR / CPC report by campaign.
- Normalise — map every platform to one schema. marketing-automation-engine ingests Meta, TikTok and Google Ads CSVs and computes ROAS, ACoS, CTR, CPC, CPM, CPA and conversion rate with zero-safe maths, grouped by platform, campaign, ad set or date.
- Visualise — a dashboard with the few numbers that drive decisions. ecommerce-analytics-dashboard shows sessions, orders, revenue, conversion rate, spend and ROAS, plus spend vs revenue by channel.
- Deliver — a scheduled daily summary by email or Slack; our n8n templates include a Meta Ads daily ROAS report.
Reading ROAS without fooling yourself
- Platform ROAS is attributed, not incremental. Compare with blended ROAS (total revenue ÷ total ad spend) from your store.
- Retargeting always looks great — many of those buyers would have purchased anyway.
- Judge prospecting on new-customer revenue, not total revenue.
- Keep attribution windows consistent when comparing periods.
Want reporting that tells you what to do next? Our performance marketing team builds automated dashboards with break-even ROAS for every product line.
Frequently asked questions
What is a good ROAS?
Any ROAS above your break-even ROAS (1 ÷ gross margin) is profitable on the first order. With a 40% margin, break-even is 2.5.
What is the difference between ROAS and ACoS?
ROAS is revenue ÷ spend; ACoS is spend ÷ revenue × 100. They describe the same relationship from opposite sides.
Why does Meta's ROAS differ from my store's numbers?
Meta reports attributed conversions within its attribution window and may model some of them. Your store counts all orders. Compare both, and use blended ROAS for the full picture.

