How to Measure Marketing ROI
Marketing ROI is the profit generated by marketing minus what the marketing cost, divided by that cost. To measure it, track every lead's source with UTM parameters and click IDs, record which leads became customers and for how much in your CRM, and compare gross profit from those customers with total spend per channel, including fees and staff time. Use attribution reports to share credit across touchpoints, and run holdout or pause tests to check which channels truly add sales.
- Use gross profit, not revenue, in the ROI formula, or every channel will look better than it is.
- ROAS (revenue divided by ad spend) is useful for campaigns but is not the same as ROI.
- ROI is only measurable if lead source and sale outcome are recorded in one place, usually the CRM.
- GA4 offers data-driven and last-click attribution; neither proves a channel caused a sale.
- Long sales cycles and repeat customers mean ROI should be measured over months, with lifetime value in mind.
The Steps
- Define the formula and inputsAgree on ROI as (gross profit from marketing-sourced customers minus marketing cost) divided by marketing cost. List which costs count: ad spend, tools, agency fees, content and staff time.
- Tag every campaign linkAdd UTM source, medium and campaign parameters to every ad, email, social and partner link, and keep auto-tagging on in Google Ads so click IDs are captured.
- Capture source on every leadPass UTM values, click IDs and landing page into hidden form fields so they are stored on the lead record in your CRM. Use call tracking for phone leads.
- Record outcomes and revenueHave sales mark leads as qualified, won or lost, with the deal value. Without this step, marketing can only measure leads, not money.
- Calculate ROI, CAC and paybackEach month, compute cost per lead, customer acquisition cost, gross profit and ROI by channel, plus how many months of profit it takes to repay acquisition cost.
- Choose an attribution viewCompare last-click and data-driven attribution in GA4 and your ad platforms, understand why they differ, and pick one consistent model for monthly reporting.
- Feed results back to ad platformsImport offline conversions or qualified leads into Google Ads and other platforms so bidding optimizes for customers and revenue rather than form fills.
- Test incrementalityPeriodically pause a channel in one area or hold out a group from a campaign, and compare sales against a control to see whether the channel truly adds revenue.
The Formula, Done Honestly
The basic formula is simple: ROI = (return minus cost) divided by cost. The judgment is in what counts as return and cost.
For return, use gross profit, not revenue. If a campaign brings in $30,000 of jobs with a 40% gross margin, the return is $12,000. Against $6,000 of total cost, ROI is (12,000 minus 6,000) divided by 6,000, or 100%. Using revenue would show 400%, which overstates the result and can justify spending that loses money.
For cost, include everything the channel needs: ad spend, software, agency or freelancer fees, content production and a fair share of staff time. Leaving out the hours someone spends managing social media is the most common way to overestimate ROI. If you want to model different scenarios, the marketing ROI calculator does the arithmetic.
Related metrics worth tracking
- ROAS: revenue divided by ad spend. Useful for comparing campaigns inside an ad platform, but it ignores margin and non-ad costs.
- CAC: customer acquisition cost, total marketing and sales cost divided by new customers.
- Payback period: months of gross profit from a customer needed to recover their CAC.
- Lifetime value: expected gross profit over the whole relationship, essential for businesses with repeat or subscription customers.
Connecting Leads to Revenue
Most businesses cannot measure ROI because the data lives in separate places: ad platforms know about clicks, analytics knows about form fills, and the owner knows about sales. The fix is to join them in the CRM.
- Tag every link with UTM parameters; Google's campaign URL builder makes this easy.
- Capture those values, plus the Google Ads click ID and landing page, in hidden form fields so they are saved on the lead.
- Use call tracking with dynamic numbers if phone calls are a major lead source, so calls carry a source too.
- Require sales to mark each lead's outcome and deal value.
Once this is in place you can report revenue and profit by channel instead of leads by channel. It also lets you send outcomes back to ad platforms. Google Ads supports offline conversion imports and enhanced conversions for leads, so campaigns can learn which clicks became customers. The tracking setup is covered in our GA4 conversion tracking guide.
Attribution: Who Gets Credit
A customer might find you through a Google search, see a Facebook ad a week later, open an email and finally call after searching your name. Which channel produced the sale? Attribution models answer this differently. In GA4 the default is data-driven attribution, which uses your account's conversion paths to share credit across touchpoints; last click is the main alternative. Google removed the older first-click, linear, time-decay and position-based models from GA4 and Google Ads in 2023.
Each ad platform also credits itself generously by its own rules, so adding up platform-reported conversions usually exceeds your real sales. Pick one source of truth, usually the CRM, report consistently, and treat platform numbers as directional. For a fuller explanation, read what marketing attribution is.
Testing What Actually Works
Attribution shows correlation, not cause. Branded search ads, for example, often get credit for customers who would have found you anyway. The way to check is an incrementality test: pause or reduce a channel in one region or for a period while keeping everything else steady, or hold out a random group from an email or retargeting campaign, then compare sales against the control. Tests need enough volume and time to be meaningful, so run them on your largest channels first.
Building a Reporting Routine
Review a one-page report monthly: spend, leads, qualified leads, customers, revenue, gross profit, CAC and ROI by channel, with the trend over the last six to twelve months. Judge channels over a period that matches your sales cycle; SEO and content often take months to pay back, while search ads show results within weeks. A South Florida home-services company with a two-week sales cycle can judge a campaign within a month or two, while a B2B firm with six-month deals needs to look at pipeline value as a leading indicator. Consistent measurement beats perfect measurement: the same imperfect method applied every month still shows which direction each channel is moving.
Sources and Further Reading
We link to the primary documentation so you can verify the details yourself.
- Get started with attribution, Google Analytics Help
- URL builders: Collect campaign data with custom URLs, Google Analytics Help
- About offline conversion imports, Google Ads Help
- About enhanced conversions, Google Ads Help
- Marketing and sales, U.S. Small Business Administration
Related Questions
What is a good marketing ROI?
It depends on your margins, the customer's lifetime value and the channel's maturity, so there is no universal benchmark. The minimum is a positive ROI on gross profit over a period matching your sales cycle. Many businesses also set a maximum CAC and payback period.
How do I measure ROI on SEO or content?
Track organic leads and customers through landing page and UTM data in your CRM, and compare their gross profit with the cost of content, tools and services over 6 to 12 months. SEO costs come first and returns compound, so short windows understate it.
What is the difference between ROI and ROAS?
ROAS divides revenue by ad spend only. ROI subtracts all marketing costs from gross profit and divides by total cost. A campaign can show a healthy ROAS and still lose money once margins, fees and staff time are counted.
Can I measure ROI without a CRM?
Roughly, using a spreadsheet that records each customer's source and value, but it gets unreliable as volume grows. A CRM that stores the lead source automatically and tracks outcomes makes channel-level ROI far more accurate and less work each month.
