Evaluating a Marketing Campaign Beyond Platform ROAS
A worked example that turns platform ROAS into campaign profit, with VAT, returns, margin, all campaign costs, incremental orders and measurement limits.
7 min readBranislav Mateas
Copy post as Markdown
On this page
A platform report can show a ROAS of 4.84 for a campaign that loses money. Nothing in the report has to be wrong for that to happen. ROAS divides the value a platform credits to itself by media spend. It leaves out most of what decides whether the campaign paid for itself.
An earlier article explains why a better return percentage can mean less growth. This one covers the practical next step: how to evaluate one finished campaign. The method has three stages. Turn reported value into contribution, deduct every campaign cost, then replace credited orders with incremental orders.
All figures below describe a hypothetical shop and a hypothetical one-month campaign. They are invented to show the arithmetic. They are not benchmarks.
From reported value to contribution
The platform credits the campaign with 800 orders worth 48,400 EUR on 10,000 EUR of media spend. That gives the reported ROAS of 4.84.
In this example, the tag sends order value with 21% VAT included. Your setup may differ, so compare the tag value of a few orders with your order system. The shop also sees 10% of orders returned. Campaign revenue here is already after discounts, so discounts are not deducted a second time.
Contribution is what remains after the costs caused by the orders themselves.
Contribution is 13,800 EUR, or 17.25 EUR per shipped order. Shipping and payment fees apply to all 800 orders in this example, because returned orders were also sent and paid for.
Use order-level product cost if you have it. A campaign that sells mostly low-margin products will not earn the shop's average margin.
Add every cost the campaign created
Media is only part of the bill. List the other costs from invoices and time records.
Campaign cost
Amount (EUR)
Media spend
10,000
Agency or freelancer fee
1,000
Creative production
1,200
Internal time, 20 hours × 40
800
Total
13,000
If every credited order was truly caused by the campaign, profit is 13,800 minus 13,000, which is 800 EUR. The healthy-looking ROAS of 4.84 sits barely above break-even. You can calculate the break-even point directly:
Contribution per reported EUR = 13,800 / 48,400 = 0.2851
Break-even reported value = 13,000 / 0.2851 = about 45,600 EUR
Break-even reported ROAS = 45,600 / 10,000 = about 4.56
This figure treats non-media costs as fixed and changes with margin and return rate. A generic ROAS target can't replace it.
Replace credited orders with incremental orders
The 800 EUR profit still assumes every credited order would have disappeared without the ads. Some of those buyers would have ordered anyway. Credit rules also differ between tools, so Google Ads, Meta and GA4 can report different numbers for the same month. The reported figure can't settle this question.
An experiment can give an estimate. Google's Conversion Lift documentation describes comparing a group that sees the ads with a control group that does not, using either user-based or geography-based studies. It defines incremental cost per action as spend divided by incremental conversions. Access is not universal, as the page directs advertisers to their Google account representative. A regional holdout measured in your own order system is another option.
Suppose a regional test, scaled up to the full campaign, estimates 480 incremental orders. The interval runs from 300 to 660. Scaling assumes the test regions behave like the rest of the market, and that assumption belongs in the report.
Low: 300 orders
Middle: 480 orders
High: 660 orders
Contribution at 17.25 per order
5,175
8,280
11,385
Result after 13,000 of campaign costs
−7,825
−4,720
−1,615
The campaign needed about 754 incremental orders to break even (13,000 ÷ 17.25). That is 94% of the 800 credited orders, and the whole interval falls below it. At the middle estimate, 60% of credited orders are incremental, so the campaign would have needed a reported ROAS of about 7.60 (4.56 ÷ 0.6).
Put another way, each incremental order cost 27.08 EUR in full (13,000 ÷ 480) and brought 17.25 EUR of contribution. This assumes incremental orders have the same value, returns and costs as credited ones.
Add later value only with labelled assumptions
A first order can bring repeat purchases, and a one-month test can't see them. They may change the result, but they are the easiest place to talk a campaign into profit.
For this example, assume 60% of incremental orders come from new customers. Assume each new customer adds 15 EUR of contribution over the next 12 months. Both numbers should come from your own cohort data, and comparable customers acquired through other channels are a useful check.
Low
Middle
High
New customers
180
288
396
Later contribution
2,700
4,320
5,940
Result including later contribution
−5,125
−400
4,325
The interval now crosses zero, and the result depends on an estimate of future behaviour. Report both views. This calculation also ignores the time value of money.
Know which inputs can move the answer
Each input carries a different kind of uncertainty. Label them in the report.
Input
Source
Main limit
Orders, returns, product cost
Order and finance systems
Returns may still be arriving, so wait until the return window closes
Media and fees
Invoices
Shared fees need an allocation rule, which is a choice
Reported conversions
Ad platform
Credit rules, not proof of effect
Incremental orders
Experiment
An interval, specific to that period, those regions and that spend
Repeat value
Cohort assumption
Past customers may differ from those the campaign brought
Experiments have limits of their own. A short test can miss delayed effects. Regions can influence each other. A test of the whole campaign also shows average performance, which doesn't tell you what the next 1,000 EUR would do. Answering that requires testing a change in spend.
Turn the result into a decision
Evaluating the past and deciding the future use different costs. The evaluation above counts all 13,000 EUR. A decision about next month counts only costs you can still avoid. If creative can be reused and the agency fee is fixed during a notice period, the avoidable cost may be just the 10,000 EUR of media. Under that assumption, the middle estimate gives 8,280 minus 10,000, or −1,720 EUR, from first orders alone. With later contribution, it gives 12,600 minus 10,000, or 2,600 EUR.
Agree on the rule before you see the results:
Scale in a controlled step if the low estimate is profitable on first orders. Then test the higher spend, because the current average doesn't describe the added budget.
Keep spend flat and improve the evidence if the result only turns positive with later contribution. Check the repeat assumption against cohorts, or run a longer test.
Reduce spend or change the campaign if the high estimate stays negative even with later contribution on avoidable costs.
The example falls in the second group. Against avoidable costs, later contribution moves the middle estimate above zero, but the low estimate stays negative at −2,125 EUR (7,875 minus 10,000). Under this rule, the next step is to hold the budget, check the repeat assumption and test a lower spend level.