Analytics & Growth

How to calculate marketing ROI

The formula, the inputs, and the attribution choices that change the answer.

8 min read Updated April 29, 2026

Marketing ROI looks like a single number. It isn't. The same campaign can show a 4x return or break even, depending on which costs you include, which conversions you count, and how you split credit across channels. The formula is simple. The honesty is the hard part.

The formula and what it hides

The base formula is unambiguous: ROI = (revenue attributed to marketing − marketing cost) ÷ marketing cost. A 100% ROI means you doubled your money. A 300% ROI means you made three dollars for every dollar spent. The variables in the formula are where the disagreement lives.

Three questions determine whether the same campaign looks like a winner or a loser. What counts as marketing cost? What revenue are you allowed to claim? And how is credit split when a customer touched five channels before buying? Get any one of those wrong and the number is fiction.

What goes in the cost side

The honest cost number includes more than ad spend. Teams that report only "media cost" produce ROI numbers that flatter the channel and mislead leadership. The full cost stack:

  • Media spend — ads, sponsorships, paid placements. The obvious bucket.
  • Production cost — creative, video, photography, copywriting, design. A campaign that needed a $40k shoot has a different ROI than one assembled from existing assets.
  • Tooling and platform fees — your analytics platform, your testing tool, your form builder, ad platform fees beyond CPM. Annualize and allocate.
  • Loaded labor cost — the marketer's time spent planning, running, and reporting on the campaign. Use a fully-loaded hourly rate, not just salary.
  • Agency or contractor fees — usually obvious, occasionally hidden in retainer line items.
  • Promotional cost of goods — discounts, free samples, free shipping, prize values for giveaways. Real money, often forgotten.

If your "ROI" only divides revenue by media spend, you're calculating ROAS — return on ad spend — not ROI. Both are useful. They are not the same number, and confusing them in a board deck is a fast way to lose credibility.

What counts as revenue

The revenue side has its own traps. Gross revenue is the easy number; it's also usually wrong. Marketing teams that report on gross revenue overstate impact compared to teams reporting on contribution margin. The right number depends on your business and how the conversation is framed.

For ecommerce, revenue minus COGS minus refunds is closer to the truth. For SaaS, the right denominator is often new ARR or net new MRR, sometimes discounted by expected churn over an LTV window. For lead-gen businesses, you have to multiply qualified leads by close rate and average deal size — and you should report the leads number alongside the revenue number, because the lag between lead and close hides recent campaign performance for months.

Attribution: the choice that changes the answer

The hardest variable is which marketing touch gets credit. A buyer saw a paid social ad, then a podcast mention, then read three blog posts, then clicked a retargeting email, then bought. Which channel "drove" the sale?

The honest answer is "all of them, partially." The practical answer depends on which attribution model you pick. Six attribution models walk through the trade-offs. The shortest version:

  • Last-touch overcredits closing channels (retargeting, branded search). Easy to compute. Hides upper-funnel value.
  • First-touch overcredits awareness channels and ignores the work that closed the deal.
  • Linear and time-decay spread credit across touches with different weighting rules.
  • Data-driven models use your conversion data to assign credit. They need volume and clean tracking to mean anything.

You can run multiple models in parallel and report a range. That feels less satisfying than a single number, but it's closer to the truth, and good leadership teams learn to read it.

A worked example

A B2C brand spends $20k on a paid social campaign over four weeks. Direct attributable revenue (last-click) is $80k — 4x ROAS, easy story. Plug in the rest of the math: $5k of creative production, $2k of platform tooling, $3k of marketing salary loaded, and $8k of margin lost to a 20% promo code that was the campaign hook. Total cost: $38k. Revenue at 50% gross margin: $40k. ROI: ($40k − $38k) / $38k = ~5%. Same campaign, very different story.

  1. Decide cost stack and revenue definition before you launch — not after the data lands.
  2. Pick a primary attribution model and a secondary one for sanity check.
  3. Tag every campaign source consistently with a UTM taxonomy so attribution data is trustworthy.
  4. Report ROI alongside ROAS and contribution margin so leadership sees the full picture.
  5. Re-run the math at 30, 60, and 90 days post-campaign for SaaS or considered-purchase categories.

The fastest way to lift ROI: lift conversion rate

The cheapest ROI improvement isn't more spend — it's a higher conversion rate on the traffic you already paid for. Doubling conversion doubles ROI without touching the cost side. That's why a serious CRO program usually outperforms an extra channel, and why running tests with real statistical rigor earns its keep over a quarter.

The honest ROI number includes: all costs (media, production, tooling, loaded labor, promo COGS), the right revenue definition for your business model, and a stated attribution model. Anything else is ROAS in a fancy hat.

Frequently asked

What is a good marketing ROI?
It depends on margin structure and business model. High-margin SaaS can survive on ROIs that would crush a low-margin ecommerce business, and brand campaigns often run negative short-term ROI by design. Compare against your own historical baseline rather than a generic benchmark.
How is ROI different from ROAS?
ROAS divides revenue by ad spend only. ROI divides profit by total marketing cost — including production, tooling, labor, and promotional COGS. Both are useful. Confusing them produces flattering numbers that fall apart under scrutiny.
How long should I wait before calculating ROI on a campaign?
Long enough for the typical sales cycle to play out. For impulse-buy ecommerce, a week or two is fine. For B2B with a 60-day sales cycle, you need at least 90 days before the number stabilizes. Reporting too early either over- or under-states impact depending on the channel.
Should brand spend be in the ROI calculation?
Brand spend often shows poor short-term ROI even when it works, because the effect lags. Most teams report brand and direct-response separately, with different time horizons. Lumping them produces a number that satisfies nobody and hides what each is actually doing.
What if I cannot attribute revenue cleanly?
Use marketing-mix modeling, holdout tests, or geo-experiments to estimate channel impact when last-click data is unreliable. For small budgets, a simple before-and-after analysis on a clean experiment window often beats fancy attribution tools.