Meta ads ROAS changes because at least one of four things changed: the cost of buying impressions, the clicks earned per impression, the conversions earned per click, or the revenue earned per conversion. Nothing else can move it.
With consistent definitions, that is an identity rather than a theory:
ROAS = 1,000 x CTR x CVR x AOV / CPM
This turns "ROAS is down" into a diagnosis. It also shows, immediately, why a creative refresh cannot fix a decline that came from average order value.
Deriving the formula
Start from ROAS = revenue / spend, and take 1,000 impressions as the unit.
- Spend equals CPM. - Clicks equal 1,000 x CTR. - Conversions equal 1,000 x CTR x CVR. - Revenue equals 1,000 x CTR x CVR x AOV.
Divide revenue by spend and the impressions cancel. Use rates as decimals throughout: a 1.2% CTR is 0.012, not 1.2. Here CTR is link clicks / impressions, CVR is purchases / those same link clicks, and AOV is revenue / those same purchases. All terms must use consistent time and attribution definitions. If CVR uses landing-page views instead, multiply by landing-page views / link clicks as an additional factor. With view-attributed purchases included, purchases / clicks is an algebraic ratio, not evidence that all those purchases followed a click.
A worked week-over-week decline
The inputs below are a worked example, not an account benchmark.
| Driver | Prior week | Recent week | Relative change |
|---|---|---|---|
| CPM | $12 | $14 | +16.7% |
| CTR | 1.20% | 1.00% | -16.7% |
| Click-to-purchase CVR | 3.00% | 2.70% | -10.0% |
| AOV | $80 | $76 | -5.0% |
Prior period: 1,000 x 0.012 x 0.03 x $80 / $12 = 2.40
Recent period: 1,000 x 0.010 x 0.027 x $76 / $14 = 1.47
That is a 38.9% decline, and no single input fell by anything close to it. The drop compounds across all four, which is the usual reason a team investigating one driver never finds an explanation proportional to the damage.
Attribute the decline with a log decomposition
The exact relationship is multiplicative:
new ROAS / old ROAS = CTR ratio x CVR ratio x AOV ratio / CPM ratio
Taking natural logarithms makes those multiplicative changes additive, so the total decline can be divided into shares.
| Driver | Log-drag magnitude | Share of the modeled decline |
|---|---|---|
| Higher CPM | 0.154 | 31.3% |
| Lower CTR | 0.182 | 37.0% |
| Lower CVR | 0.105 | 21.4% |
| Lower AOV | 0.051 | 10.4% |
| Total | 0.493 | 100.0% |
Read these as mathematical shares, not as blame. CTR may have fallen because the placement mix changed. CVR may have fallen because an event broke. CPM may have risen because of seasonality or a country shift. The decomposition tells you where to look, not what happened.
Map each driver to the right investigation
| Driver | What it represents | Questions to ask | Owner |
|---|---|---|---|
| CPM | Auction cost per 1,000 impressions | Did country, audience, placement, season, bid or competition change? | Media buyer |
| CTR | Ad-to-click efficiency | Did the hook, proof, format, placement mix or message relevance change? | Creative and media |
| CVR | Click-to-conversion efficiency | Did landing speed, offer, checkout, inventory, traffic quality or tracking change? | Growth, web, analytics |
| AOV | Revenue per conversion | Did product mix, discounting, upsell, currency or refund behaviour change? | Commercial and finance |
This is the step that stops a creative refresh from being assigned to an AOV problem, which is the most common misdirection in a ROAS post-mortem.
ROAS is revenue efficiency, not profit
Take the same worked example at a 55% contribution margin before ad spend, per 1,000 impressions.
| Prior period | Recent period | |
|---|---|---|
| Revenue | $28.80 | $20.52 |
| Media spend | $12.00 | $14.00 |
| Contribution before ads | $15.84 | $11.29 |
| Contribution after ads | +$3.84 | -$2.71 |
Break-even ROAS in this simple one-period model is 1 / 0.55 = 1.82. The account moved from 2.40, above that line, to 1.47, below it. The same 38.9% decline reads very differently once the margin is in the frame: it is not a worse campaign, it is a loss-making one.
For a real business, adjust contribution margin for shipping, payment fees, discounts, returns, support cost, sales commission, repeat purchase value and cash timing where those are material.
Separate mix shift from within-segment change
An account-wide average can decline while every segment inside it is stable.
Suppose Country A runs at ROAS 3.0 and Country B at 1.5. Both hold their own ROAS exactly. Spend shifts from A toward B. The blended number falls anyway, purely through mix.
So decompose by prospecting versus retargeting, country, placement, device, product or offer, new versus returning customer, campaign objective, and creative concept. Then report two numbers separately:
1. Within-segment change - did performance actually deteriorate? 2. Spend-mix change - did the money move somewhere structurally cheaper or dearer?
Without that split, a team can spend a month fixing ads when the result came from deliberately scaling a lower-ROAS but strategically valuable segment.
Measurement can move reported ROAS without moving reality
Before concluding that performance changed, rule out the reporting layer: attribution-setting changes, pixel or server event duplication, missing event IDs, currency or value errors, consent-driven coverage changes, refunds absent from platform value, delayed conversions, and analytics model differences.
Platform ROAS, analytics ROAS, backend ROAS and incremental ROAS answer four different questions. Label which one you are quoting every time. A 12-point measurement-first audit is the systematic version of this check.
A seven-step diagnostic workflow
1. Freeze the comparison windows and use complete days only. 2. Reconcile spend, purchases and value against the backend. 3. Calculate CPM, CTR, CVR, AOV and ROAS with consistent definitions. 4. Decompose the total change mathematically. 5. Split within-segment change from spend-mix change. 6. Map each driver to an owner and a test. 7. Change one decision layer at a time where feasible, and log the result.
The AdRiseLab Meta ads ROI calculator handles the scenario arithmetic, and performance reports provide the ongoing reporting context.
Related Reading
For the threshold question underneath step 3, see what counts as a good ROAS. If the CTR term is the one carrying the decline, creative fatigue versus creative failure separates wear-out from an ad that never worked. And before trusting any of these numbers, run the 12-point Meta ads audit.
