Using Our Tools · Guide · Money & Finance
How to calculate marketing ROI
ROI vs ROAS, three flavors (revenue, gross-profit, contribution), attribution models that shift the number 5x, and the incrementality test most teams skip.
Marketing ROI is the arithmetic of whether a campaign made money or lost money — a surprisingly contested number, because what counts as “cost” and what counts as “return” can be defined a dozen ways. This guide walks through the base formula, the three most common ways teams calculate it, why attribution ruins everything, and how to report an ROI number that’s honest enough to survive a CFO’s questions.
Advertisement
The base formula
ROI = (Gain − Cost) / Cost × 100%
Spend $10k on a campaign, generate $40k in attributable revenue: ROI = ($40k − $10k) / $10k × 100% = 300%. For every dollar spent, you got three dollars in profit back on top of recovering your spend.
Marketing ROI vs ROAS — don’t confuse them
ROAS (Return on Ad Spend) is revenue ÷ ad spend. The same campaign above: $40k / $10k = 4.0x ROAS. ROAS ignores profit margin. If your gross margin is 20%, that $40k of revenue actually generated $8k in gross profit — and you spent $10k to get it. ROAS says you’re winning; true ROI says you’re losing money.
Actual ROI = (Revenue × Gross margin − Marketing cost) / Marketing cost. Always do the margin step when reporting ROI to anyone above the marketing team, or you’ll get caught lighting money on fire while the dashboard says everything’s great.
Three common flavors of Marketing ROI
(1) Revenue ROI. (Revenue − Marketing cost) ÷ Marketing cost. Ignores margin. Inflated. Marketing teams often report this. Fine internally, misleading externally.
(2) Gross-profit ROI. (Revenue × Gross margin − Marketing cost) ÷ Marketing cost. The honest version. CFOs expect this.
(3) Contribution-margin ROI. Accounts for all variable costs (gross margin + customer service + shipping + payment processing). Used in unit-economics-focused companies and venture-backed growth modeling.
The time-horizon problem
Acquisition marketing pays off over the customer’s lifetime, not on first purchase. A SaaS business that spends $1,000 to acquire a customer who pays $100/month for 36 months shouldn’t report a negative ROI after month one. Use payback period and LTV:CAC ratio alongside ROI:
LTV (lifetime value) = average customer revenue × average margin × average lifespan. CAC (customer acquisition cost) = marketing spend ÷ customers acquired. LTV:CAC ratio of 3:1 or higher is the SaaS benchmark. Under 2:1 usually means unit economics are broken.
Annualize it when comparing campaigns: see the ROI calculator for single-period ROI and annualized ROI (CAGR) side-by-side.
Attribution — where ROI claims go to die
Attribution is the question “which campaign caused this purchase?” Most conversions involve 3–8 touchpoints — a Google ad, a retargeting display, an email, an organic search, a podcast mention — and attribution models assign credit differently:
Last-click: 100% credit to the final touchpoint. Favors bottom-funnel campaigns. The iOS 14.5 tracking changes broke this model for most mobile apps.
First-click: 100% credit to the first touchpoint. Favors top-funnel brand campaigns. Rarely used alone.
Linear: Equal credit across all touchpoints. Simple and defensible, but treats a brand-awareness impression the same as a checkout-page retargeting ad.
Data-driven / algorithmic: GA4’s default, and similar models in HubSpot and Salesforce. Uses your own historical conversion paths to assign weights. Usually the most defensible, but requires enough data volume (thousands of conversions) to produce a meaningful model.
The honest version of ROI always names the attribution model alongside the number. “Campaign ROI: 240% (last-click)” is truthful. “Campaign ROI: 240%” alone is a number someone will disagree with the second it shows up in the monthly review.
Incrementality — the harder question
Even with perfect attribution, some of the conversions you paid for would have happened anyway. This is the incrementality problem. The only reliable way to measure it is holdout tests: withhold advertising from a random 10% of your audience, compare conversion rates, and the delta is your true incremental contribution.
Most teams skip this because it feels like losing conversions on purpose. The ones that run holdouts routinely find that 20–50% of “attributed” conversions are non-incremental. If you haven’t run a holdout test, your reported ROI is optimistic by an unknown amount.
A campaign-level ROI worked example
LinkedIn ads for an enterprise SaaS. Spend: $15,000. Attributed revenue (last-click, GA): $180,000 in first-year contract value. Gross margin: 75%. Ad-ops labor (10% of media cost allocated): $1,500.
Full cost: $15,000 + $1,500 = $16,500. Gross profit from attributed revenue: $180,000 × 0.75 = $135,000. ROI = ($135,000 − $16,500) / $16,500 = 718% on a gross-profit basis.
Now discount for attribution model risk. If an incrementality test would show 60% of those conversions were non-incremental, real-world ROI = ($135,000 × 0.40 − $16,500) / $16,500 = 227%. Still profitable, but dramatically different, and only one is going to be defensible six months later.
The shortcut for small campaigns
For campaigns under $10k in spend and under 100 conversions, skip the attribution modeling. Just look at spend and revenue from matching time periods, accept last-click attribution as good-enough, and calculate gross-profit ROI. The variance is too high for precision modeling to beat back-of-envelope at that scale.
For the core math, use the ROI calculator (handles both simple and annualized). Pair with the break-even calculator when deciding whether a campaign cost is recoverable, and the profit margin calculator to convert revenue inputs to the gross-profit version of ROI.
Advertisement