The short answer

We don't publish ROAS benchmarks because a single number can't do the job people ask of it. A benchmark can't know your margin, your attribution window, or your business model — and once a benchmark becomes a target, it stops being a useful measure. What you need isn't the industry's number. It's your own break-even, computed from your own costs.

Every few months someone asks us to add a benchmarks page: average ROAS by industry, "good" ROAS by channel, that sort of table. The request is understandable — a single number feels like an answer. We keep saying no, because a single number here is not an answer. It is five different errors stacked on top of each other. This is the full explanation — each reason below is sufficient on its own.

The same 4× can mean profit or loss

Imagine two advertisers, both reporting 4× ROAS last month. A benchmark table would call them equals. They are not the same business.

Break-even ROAS = revenue ÷ (revenue − non-ad costs)
Maximum CPA = revenue − non-ad costs

Illustrative: Advertiser A sells a $100 order with $80 of non-ad costs — product, shipping, fees. Contribution margin is 20%, or $20. The most A can spend on acquisition is $20 per order, so A's break-even ROAS is $100 ÷ $20 = 5×. At 4×, A is losing money on every order the ads bring.

Illustrative: Advertiser B sells a $100 order with $20 of non-ad costs. Margin is 80%, maximum CPA is $80, break-even ROAS is $100 ÷ $80 = 1.25×. At 4×, B is wildly profitable.

Same ROAS. One business bleeds; the other prints. A benchmark that says "4× is good" cannot distinguish them, because the one variable that determines whether 4× is good — your margin — is the one variable the benchmark doesn't contain. Any benchmark that ignores margin is ranking businesses by a number that has been stripped of its meaning.

You may be comparing different measurements

Suppose both advertisers have the same margin. Can we compare their ROAS now? Only if "ROAS" means the same thing in both reports. Often it doesn't.

Illustrative: one campaign, $1,000 of spend. Count attributed revenue on a 7-day click window: $3,000, so ROAS is 3×. Extend to a 28-day click window: $4,500, so 4.5×. Add 1-day view-through: $5,200, so 5.2×. Same spend, same ads, three different ROAS figures. The only thing that changed is the ruler.

Published benchmarks rarely specify the ruler. Some blend platform-reported numbers — each platform grading its own homework, on its own window. That last point deserves emphasis: when a platform reports the ROAS of its own inventory, the measurer and the measured are the same party. The platform chooses the window, the attribution model, and which conversions count, and it has a commercial interest in the result looking strong. Some benchmarks mix modeled revenue with observed revenue. Some quietly include view-through, some don't. Comparing your 7-day-click 3.2× against a benchmark's unspecified 4× is not analysis. The two numbers were never measuring the same thing.

Published benchmarks are pre-filtered

Then there is who gets counted. Benchmarks are built from advertisers who survived long enough to have data, chose to share it, and usually had something worth showing. Nobody publishes the quarter they spent learning that their offer doesn't convert. The failures — the most instructive data points — never enter the sample.

Illustrative mechanism, not data: suppose 100 advertisers start running ads. Forty quit within a year because the economics never worked. Of the sixty survivors, ten publish case studies — naturally, the ten with the best numbers. A benchmark built from those ten case studies describes the top decile of survivors, yet it gets presented as "the industry average." Every step of that funnel — surviving, sharing, bragging — selects upward. The number at the end cannot help being flattering.

Platforms and agencies add their own filters. A benchmark published by a platform flatters that platform's inventory; it would be strange if it didn't. An agency's "average client ROAS" quietly excludes the clients who left. What you see is drawn from the winners' distribution and presented as everyone's expectation. Clearing a bar that was set by survivors tells you nothing about whether your own economics work.

One number can't fit every business model

A single benchmark also has to stretch across businesses where revenue doesn't even arrive on the same schedule.

An ecommerce order settles today. A lead-generation form fill produces revenue weeks later, after sales works the pipeline — ROAS on the click date is undefined until those deals close. A subscription business is the sharpest case: Illustrative: $60 of ad spend acquires a subscriber contributing $25 a month. Month-one ROAS is $25 ÷ $60 ≈ 0.42×, which looks catastrophic against a 4× benchmark. But if the subscriber stays 12 months, lifetime revenue is $300 on $60 of spend — 5×.

The benchmark demands that a 12-month payback be judged on a 30-day ruler. That can't be done honestly, so it gets done dishonestly instead: by picking whichever window makes the number look acceptable, and calling the result a benchmark.

A benchmark becomes a target

The deepest problem is what benchmarks do to behavior. Publish "the industry average is 4×" and 4× becomes the target. Teams then do what targets reward: cut prospecting because it drags the average down, harvest branded search that was going to convert anyway, shrink the attribution window, quietly drop the refund reserve. Illustrative: a team at 3.2× "fixes" the number by pausing all prospecting and doubling branded-search bids. Reported ROAS rises to 4.1× — above the benchmark — while total profit falls, because the prospecting they killed was acquiring the customers that branded search later harvested. The reported number climbs toward 4× while actual profit falls.

This is Goodhart's law: when a measure becomes a target, it ceases to be a good measure. A benchmark that was already meaningless — wrong margin, wrong ruler, wrong sample, wrong business model — becomes actively harmful. It redirects effort from making money to making the number. We would rather publish nothing than publish a number that teaches people to optimize the wrong thing.

What to do instead

  1. Compute your break-even. Revenue ÷ (revenue − non-ad costs) gives your break-even ROAS from your own numbers. That line is your benchmark; everything above it is working.
  2. Track your own trend. Compare this month's ROAS to your last six months, on the same attribution definition. Your past self is the only valid benchmark.
  3. Compare like-for-like or not at all. Same window, same revenue basis, same refund handling — or admit the comparison is decorative.
  4. Judge decisions at the margin. The question is never "is 4× good." It is "does the next dollar of spend return more than its cost."

Decision boundary: If you can't state the margin basis and attribution window behind a number, treat it as decoration, not data.

Next reading

Examples are illustrative, not client results or benchmarks. The calculations use the inputs shown; real-world decisions depend on your records and assumptions. Report a correction.