Marketing ROI is calculated as (Sales Growth − Marketing Cost) ÷ Marketing Cost × 100, using a cost figure that includes ad spend, tools, and labor, not just media budget. A $10,000 campaign that drives $15,000 in incremental sales has a 50% ROI. The hard part isn’t the math, it’s isolating the sales growth a specific campaign actually caused from everything else happening in the business that month.
This guide walks through the formula in both its basic and fully-loaded forms, how to calculate ROI for individual channels like paid search, SEO, and email, and the KPIs worth tracking at each stage of the funnel. It closes with the two problems that break most ROI calculations in practice: data silos and multi-touch conversion crediting.
The marketing ROI formula
Basic formula:
ROI = (Sales Growth − Marketing Cost) / Marketing Cost × 100
This works for a quick estimate, but it undercounts cost. A fully-loaded formula gives a more honest number:
ROI = (Revenue Attributable to Marketing − Total Marketing Cost) / Total Marketing Cost × 100
Where Total Marketing Cost includes media spend, tool/software costs, agency or freelancer fees, and the loaded cost of internal team time on that campaign.
Worked example: A campaign spends $8,000 on ads, $500 on a landing-page tool, and $1,500 in internal team time, for $10,000 in total cost. It drives $18,000 in attributable revenue.
ROI = ($18,000 − $10,000) / $10,000 × 100 = 80%
Leaving out the $2,000 in tooling and labor would have overstated ROI at 125%, a common way marketing ROI gets inflated by accident.
The KPIs that feed into ROI, by funnel stage
ROI is a single output number. Getting it right, and knowing what to fix when it’s low, means tracking the metrics that build up to it:
| Funnel stage | Metrics to track | Why it matters |
|---|---|---|
| Top of funnel | Impressions, traffic, reach | Shows whether spend is reaching anyone at all before judging conversion |
| Mid funnel | Leads, cost per lead (CPL), conversion rate | Where most budget waste actually gets caught |
| Bottom of funnel | Customer acquisition cost (CAC), cost per acquisition (CPA), revenue | Ties spend directly to the number the ROI formula needs |
| Post-purchase | Customer lifetime value (LTV) | A campaign with weak first-purchase ROI can still be a strong investment if it brings in high-LTV customers |
A campaign with a low CAC but also low LTV can look identical, on ROI alone, to one with high CAC and high LTV. Pull both before deciding a channel isn’t working.
How to measure ROI by channel
The formula stays the same across channels; what counts as “attributable revenue” and “cost” changes.
Paid search and paid social: Cost is the cleanest to isolate here (ad spend plus management fees). Use platform-reported conversions as a directional number, but reconcile against actual CRM or storefront revenue rather than trusting each platform’s own self-reported conversion credit, since Google and Meta each apply different measurement windows and will independently claim credit for the same sale.
SEO and content: The slowest to show ROI (results play out over months, not days) and the hardest to tie to a specific sale, since a single piece of content might influence a purchase weeks after the visit. Track it over a 6 to 12 month window, not a campaign-length one, and weight organic-assisted conversions rather than only last-click organic sales.
Email: Among the easiest channels to calculate ROI for, since cost is low and fixed (platform fee, plus content production time) and the path from send to purchase is tracked directly in the same system.
Cross-channel campaigns: Most real budget decisions aren’t single-channel. This is where ROI measurement usually breaks down: a customer who saw a paid social ad, later converted from an organic search visit, gets fully credited to “SEO” under last-click tracking, and paid social looks like it did nothing.
Where marketing ROI measurement breaks down in practice
Two problems account for most bad ROI numbers, more often than the formula itself:
- Data silos. Ad spend lives in each platform’s own dashboard, revenue lives in a CRM or Shopify, and marketing teams end up hand-stitching a spreadsheet every time someone asks for an ROI number. Every stitch is a chance to double-count or miss a channel.
- Conversion-crediting complexity. Different ways of crediting a touchpoint for a sale (last-click, first-click, multi-touch) can produce meaningfully different ROI figures from the exact same underlying data. Report which method was used alongside any ROI number, not just the number itself, or two people looking at “ROI” for the same campaign will be looking at different calculations.
Getting one ROI number instead of five spreadsheets
Windsor.ai connects ad platforms, CRMs, e-commerce platforms, and analytics tools into one place, so revenue and cost data for an ROI calculation don’t have to be manually reconciled across 350+ separate sources. Once connected, that data flows into the BI tool, spreadsheet, or AI assistant your team already reports from, with one consistent conversion-crediting approach applied across every channel, so the ROI figure means the same thing wherever it’s calculated.
Conclusion
The marketing ROI formula itself takes one line. What takes real work is getting clean, consistent revenue and cost data into that formula, by channel, without a spreadsheet stitched together by hand every reporting cycle.
🚀 See your real marketing ROI across every channel in one place. Free forever plan, no credit card: start with Windsor.ai.
Windsor vs Coupler.io

