What marketing ROI measures, and why revenue is the wrong numerator
Return on marketing investment answers a question every other marketing metric dodges: for each dollar you handed to marketing, how many dollars of profit came back? A ROMI of 200% means the campaign produced three dollars of gross profit for every dollar invested — one to repay the investment and two of gain. The discipline of the metric lives in two decisions: what goes on top, and what goes underneath.
On top goes gross profit, never revenue. Revenue is not yours. If you sell $250,000 of product at a 60% margin, only $150,000 is available to pay for anything; the rest already left to buy inventory. Divide that $250,000 by a $50,000 investment instead and the campaign reports a 500% return where the honest figure is 200% — which is why finance distrusts marketing reporting.
Underneath goes the whole investment. Media is the obvious part. Agency retainers, creative production, influencer fees, landing-page builds and the marketing software subscription are equally real. A campaign with $40,000 of media and a $10,000 agency fee cost $50,000. Charge only the media and the same $150,000 of gross profit reports a 275% ROMI instead of 200%.
ROMI is not the financial ROI a controller computes on capital projects: no time value of money, no depreciation, no hurdle rate. It is a single-period efficiency ratio, only as good as the period you match.
The formula term by term, and the incremental version
ROMI = (revenue × margin − investment) ÷ investment × 100. Read it as a fraction of what you risked: the numerator is what you gained beyond the money you put in, the denominator is the money you put in. Because both figures are dollars, the result is a pure percentage you can compare against any other use of the same cash.
The break-even revenue is the same equation rearranged. Set the numerator to zero: revenue × margin = investment, so revenue = investment ÷ margin. A $50,000 campaign at a 60% margin needs $83,333 of revenue to wash its face. At a 25% margin the same campaign needs $200,000. This single number does more work in a planning meeting than any ratio, because it converts a budget request into a sales target.
The payback multiple is the version without the subtraction. Gross profit ÷ investment gives 3.00× where ROMI gives 200%. Same information — multiple = ROMI ÷ 100 + 1 — but the multiple reads better beside a ROAS figure and the percentage beside a cost of capital.
Incremental ROMI is the definition the textbooks actually use. Marketing Metrics (Farris and co-authors, 3rd edition) defines ROMI on incremental revenue attributable to marketing, and for good reason: some of the revenue you credited to the campaign was coming anyway. Subtract a baseline — from a holdout group, a matched geography, or the pre-campaign trend — and recompute. In the worked example below, the same campaign scores 200% on attributed revenue and 152% once a modest baseline is removed. The gap between those two figures is the size of the claim you cannot prove.
Worked example: a $50,000 quarter for a 60%-margin brand
You ran paid social and search for a quarter. Media cost $40,000; the agency retainer plus creative production came to $10,000. Analytics credits the campaign with $250,000 of revenue. Gross margin on those products, after cost of goods and shipping, is 60%. A holdout region suggests $40,000 of that revenue would have arrived without any advertising.
- Total marketing investment: $40,000 + $10,000 = $50,000.
- Gross profit generated: $250,000 × 0.60 = $150,000.
- Net gain: $150,000 − $50,000 = $100,000.
- ROMI: $100,000 ÷ $50,000 × 100 = 200%.
- Payback multiple: $150,000 ÷ $50,000 = 3.00× of gross profit per dollar invested.
- Break-even revenue: $50,000 ÷ 0.60 = $83,333. The campaign cleared that bar three times over.
- Marketing as a share of revenue: $50,000 ÷ $250,000 = 20%.
Now the incremental view, which is the number to defend in a board meeting.
- Lift: $250,000 − $40,000 = $210,000 of incremental revenue.
- Gross profit on the lift: $210,000 × 0.60 = $126,000.
- Incremental ROMI: ($126,000 − $50,000) ÷ $50,000 × 100 = 152%.
Two lessons fall out of the arithmetic. First, the honest number is 152%, not 200% — a quarter of the reported gain was baseline demand. Second, watch what the margin does. Had this been a 25%-margin catalogue rather than a 60%-margin brand, the same $250,000 would have produced $62,500 of gross profit against $50,000 invested: a ROMI of 25%, and an incremental ROMI of just 5%. Same campaign, same revenue, an entirely different decision.
How to read the result: zero, the hurdle, and the overhead you left out
Zero is the first threshold. At 0% ROMI the campaign returned exactly the gross profit needed to repay its own cost. That is not neutral — the money could have paid down debt or funded product work — so treat 0% as a failure, not a tie.
Your hurdle is higher than you think. ROMI counts only cost of goods and the marketing bill. It ignores rent, engineering, support, and the salaries of the people who ran the campaign. A ROMI of 30% in a business whose overheads consume 25% of revenue may be nothing once fully loaded.
Compare like periods, not like campaigns. Retargeting harvests demand created elsewhere while brand advertising builds demand that arrives months later, so judge each against its own history and its own incremental test rather than against each other.
Expect diminishing returns. ROMI falls as budget rises, because the first thousand dollars reaches the audience most likely to buy and the twentieth reaches people who barely know you. So a small test campaign will often show a higher ROMI than the scaled-up version of itself, and total profit peaks at a budget above the one that maximises ROMI. Read net gain in dollars alongside the percentage.
Where the payback is long, ROMI is the wrong tool. Subscription and repeat-purchase businesses earn most of the return in later periods, so pair it with a lifetime-value model: the customer lifetime value calculator supplies the numerator and the CAC payback period calculator tells you how many months of cash you must finance. A single-period ROMI on a payback that runs past the period you measured will always look like a disaster.
Break-even revenue and ROMI per $10,000 of marketing investment
| Gross margin | Revenue to break even | Revenue for 100% ROMI | ROMI on $50,000 of revenue |
|---|---|---|---|
| 10% | $100,000 | $200,000 | −50% |
| 15% | $66,667 | $133,333 | −25% |
| 20% | $50,000 | $100,000 | 0% |
| 25% | $40,000 | $80,000 | 25% |
| 30% | $33,333 | $66,667 | 50% |
| 40% | $25,000 | $50,000 | 100% |
| 50% | $20,000 | $40,000 | 150% |
| 60% | $16,667 | $33,333 | 200% |
| 70% | $14,286 | $28,571 | 250% |
| 80% | $12,500 | $25,000 | 300% |
Break-even revenue is investment ÷ margin. The last column is ($50,000 × margin − $10,000) ÷ $10,000, showing how much margin alone decides the verdict on identical revenue.
Attributed revenue is a claim, not a measurement
Every figure you type into the revenue field arrived through an attribution model. Last-click analytics credits whatever the customer touched last; each ad platform credits itself inside its own click and view windows; add two platforms and the same order is claimed twice. Summed channel reports routinely exceed the revenue the business actually banked.
Only an experiment settles it. A geographic holdout, a randomly withheld audience or a scheduled spend-down gives you a baseline you can defend — and that baseline is the difference between a 200% ROMI and a 152% one. Where experiments are impossible, use total revenue over total marketing spend as a ceiling on the sum of your channel claims.
Mistakes that turn ROMI into a vanity number
- Dividing revenue by spend and calling it ROI. At a 60% margin, $5 of revenue per dollar spent is a 200% ROMI, not the 400% the raw ratio implies — and at a 20% margin it is exactly 0%. Convert revenue to gross profit before you divide.
- Leaving agency, creative and tooling out of the denominator. In the worked example the $10,000 non-media load is a fifth of the investment, and dropping it lifts reported ROMI from 200% to 275%. Decide what the denominator covers and label it.
- Ignoring the baseline. Some of the revenue was coming anyway. Without a holdout you are measuring correlation and reporting causation.
- Mismatching the periods. Spend in March and revenue in June belong to the same campaign but not to the same month.
- Using a target margin instead of the realised one. Discounts, promotions and free shipping all cut the margin on exactly the orders a campaign generates, so the campaign's margin is usually below the company average.
- Counting pass-through money and gross sales. Sales tax and shipping you collect are not revenue, and refunded orders keep their marketing cost. Strip both out before entering revenue.
ROMI, ROAS, CPA and payback: which frame for which audience
ROAS divides revenue by media spend and is the right lever for daily bidding, because it updates fast and the platforms optimise against it. Its weakness is the missing margin: use the ROAS calculator to convert your break-even ROAS from the same contribution margin you entered here. On marketplaces the inverted form is ACoS — the Amazon ACoS calculator handles that convention.
CPA and CPC work in dollars per action rather than ratios, which makes them the practical tools for bid setting and for lead generation where there is no order value yet. Start with the cost per acquisition calculator for the ceiling your margin supports, then the cost per click calculator to turn that ceiling into a maximum bid.
ROMI is the reporting metric — the version a CFO, a board or an owner reads, because it is denominated the same way as every other investment decision the company makes. Report it quarterly per channel, always with the investment total and the baseline assumption stated next to it.
For anything with a multi-period return — subscriptions, consumables, high-consideration purchases — move to a discounted framework. Lifetime value against acquisition cost, a payback period in months and a net present value on the programme all handle the timing that ROMI ignores. Rebuild the margin that feeds them with the contribution margin calculator; a ROMI built on a guessed margin is a guess with a decimal point.
