What is ROAS?
ROAS, or return on ad spend, compares the revenue attributed to advertising with what that advertising cost. It answers a narrow question: for each unit of currency spent on ads, how much revenue did your attribution credit back to them? It says nothing by itself about profit, and attribution showing a sale followed an ad doesn't prove the ad caused it.
ROAS formula
A campaign that cost $1,000 and is credited with $3,500 in revenue has a ROAS of 3,500 ÷ 1,000 = 3.50x. As a percentage, multiply by 100: 3.50x is 350%. That is not a 350% profit margin; it is revenue, before the cost of the product, payment fees or the ads themselves.
How to calculate ROAS
- Find the ad spend for the campaign or channel, from your ad platform's billing for the period.
- Find the attributed revenue for the same campaign over the same period, using one attribution model throughout.
- Divide revenue by spend. $3,500 ÷ $1,000 = 3.50x.
- Read it against your margin. Compare it with your break-even ROAS, below, before calling the campaign a success.
What is a good ROAS?
There is no universal good ROAS. The same 3.00x can be comfortable for one business and loss-making for another, because it depends on:
- your contribution margin, which sets the break-even point;
- your industry, business model and price point;
- whether you're buying growth or buying profit this quarter;
- customer lifetime value, if customers keep paying after the first purchase;
- the attribution model and window behind the revenue figure;
- refunds, and how long your sales cycle is.
Start from your own break-even ROAS rather than a benchmark from someone else's business.
ROAS vs ROI
ROI needs a return and a cost defined on the same basis, usually profit and the full cost of the investment. Take the example campaign with a 40% contribution margin: $3,500 of revenue leaves $1,400 of contribution before ads. Counting only the ad spend as the investment, ROI is ($1,400 − $1,000) ÷ $1,000 = 40%, while ROAS is 3.50x. Same campaign, very different-looking numbers, because ROAS uses revenue and ROI uses what's left of it.
Break-even ROAS
Your contribution margin is the share of revenue left after variable costs such as cost of goods, payment fees and fulfilment, before advertising. The thinner it is, the more revenue each unit of ad spend has to bring in just to pay for itself:
| Contribution margin | Break-even ROAS | Revenue needed per $1,000 of ads |
|---|---|---|
| 25% | 4.00x | $4,000 |
| 40% | 2.50x | $2,500 |
| 50% | 2.00x | $2,000 |
Above break-even, the campaign's attributed revenue more than covers its ad spend under this model; below it, it doesn't. The model assumes the margin excludes ad spend, includes every relevant variable cost, and is applied to revenue recognised on a consistent basis. It leaves out fixed overhead, taxes, refunds not yet reflected in revenue, acquisition lag, renewals, lifetime value, cash timing and incrementality, so treat the result as an estimate, not a profit statement.
ROAS for SaaS businesses
Subscriptions make ROAS harder to pin down than a one-off sale:
- Free trials and delayed conversion. The ad click and the first payment can be weeks apart, so this month's spend pays off in next month's revenue.
- Monthly subscriptions and renewals. A $29 first payment from a customer who stays two years is worth far more than $29.
- Refunds and cancellations reduce revenue after the fact.
- Lifetime value. Using expected lifetime revenue instead of the first payment can multiply ROAS, and makes it a forecast rather than a measurement.
- First touch vs last touch. A campaign that introduces customers who later return directly gets credit under first touch and none under last touch.
For example (illustrative numbers): $1,000 of ads brings 20 customers paying $29 a month. On first payments, attributed revenue is $580 and ROAS is 0.58x. If the same customers each pay for 12 months, revenue is $6,960 and ROAS is 6.96x. Both are "the ROAS"; say which one you mean, and keep it the same across campaigns.
How SuprAnalytics helps measure revenue sources
The hard half of ROAS is the revenue side: which payments came from which campaign. SuprAnalytics is web analytics that ties payments to the visits that produced them:
- Traffic analytics with referrers and UTM campaign tracking: each campaign gets its visitors, customers and revenue.
- Payments from Stripe, Polar, Lemon Squeezy, Paddle and Dodo Payments by webhook, or any other provider through the Payment API, each tied to the visitor who paid.
- Revenue attribution to the first or the last visit before payment (last touch by default), with renewals credited to the customer's original source. See how it works.
- Subscription revenue: renewals marked apart from new payments, and lifetime value by the source customers first came from. That's the revenue side of a lifetime ROAS you work out yourself; there's no ROAS report.
What it doesn't do: SuprAnalytics doesn't connect to ad accounts or import ad spend from Google Ads, Meta or anywhere else, and it doesn't calculate ROAS for you. Take the attributed revenue for a campaign from your dashboard, the spend from your ad platform, and put both into this calculator. Payments that can't be matched to a visitor count in your revenue without a source, so they won't be in any campaign's figure, and visits with no referrer or tags count as Direct.
Common ROAS mistakes
- Confusing ROAS with profit. 4.00x on a 20% margin loses money on first-period revenue.
- Ignoring contribution margin. Compare against your break-even, not against 1.00x.
- Mixing attribution models. Last-touch revenue for one campaign and first-touch for another aren't comparable.
- Inconsistent periods. Spend and revenue must cover the same window.
- Counting unmatched payments. Revenue with no source isn't attributed to any campaign.
- Ignoring refunds. Use revenue net of refunds where you can.
- Comparing first-month revenue with lifetime revenue across campaigns.
- Treating attribution as incrementality. Some attributed customers would have bought anyway.
- Expecting conversions immediately. Long trials and sales cycles push revenue past the reporting window.
Every figure on this page is calculated in your browser from the numbers you enter; the examples use made-up numbers. To tag your ad links so their revenue can be attributed, see tracking parameters (utm_source, utm_campaign and more). Plans and prices are on the pricing page.