How to improve marketing ROI, starting with how you measure it

Updated: October 2026. Merged my posts on calculating marketing ROI into this one, added the gross-profit and pipeline versions of the formula, and removed benchmark figures that had no primary source.
Most marketing ROI problems are measurement problems first. Before you move a dollar of budget, calculate ROI on gross profit with all costs included, make sure the tracking underneath is clean, and test whether the channels you are crediting actually caused the sales.
This post follows that order: the formula, the data, attribution and incrementality, experimentation, the brand and performance balance, and finally where to reallocate.
Calculate ROI on gross profit, with every cost in
The classic formula is:
Marketing ROI = (Revenue − Marketing cost) / Marketing cost × 100
For example, if a B2B software company spends $20,000 on a Google Ads campaign and traces $100,000 in new revenue to it through analytics and the CRM, ROI is ($100,000 − $20,000) / $20,000 × 100 = 400%.
It is the language finance understands, and it is a starting point, not an answer. It says nothing about organic lift, about the touchpoints before the ad, or about what the customer is worth over time. Two corrections matter more than the rest.
Use gross profit, not revenue
Revenue-based ROI ignores the cost of what you sold. For example, a direct-to-consumer brand spends $15,000 on Meta Ads and sells 250 coffee makers at $200, for $50,000 in revenue:
- Revenue-based ROI: ($50,000 − $15,000) / $15,000 × 100 = 233%.
- Each unit costs $80 to make, pack and ship, so cost of goods sold (COGS) is $20,000 and gross profit is $30,000.
- Gross-profit ROI: ($30,000 − $15,000) / $15,000 × 100 = 100%.
Still positive, but less than half the number in the first report. A campaign scaled on the first number can end up losing money.
COGS is usually easier to get than teams assume:
- Shopify has a "Cost per item" field on each product, which feeds its profit reports.
- BigCommerce has a cost price per product, exportable from its analytics.
- Custom stacks and ERPs: ask finance for an export that maps SKU to COGS.
Join it with campaign data by transaction ID or SKU, in a spreadsheet at first and later in Looker Studio, Tableau or the warehouse.
Count all the costs
Calculating with ad spend alone inflates the return. Total marketing cost includes media, creative production, agency fees, software subscriptions and a share of the team's salaries. The same applies to customer acquisition cost (CAC): with media only, CAC looks better than it is.
Know which ratio answers which question
- ROAS is tactical: revenue per dollar of ad spend on one platform or campaign. It is for optimizing campaigns week to week. The details are in how to calculate ROAS.
- ROI is strategic: profit after all costs. It is for deciding whether marketing, or an initiative, pays for itself.
- LTV:CAC tells you whether you can afford what you pay to acquire a customer, given what that customer is worth over time.

| Metric | What it measures | What you can act on |
|---|---|---|
| LTV | Revenue from a customer over the relationship | Retention, average order value, purchase frequency, product adoption |
| CAC | Full cost to acquire one customer | Channel efficiency, conversion rates, sales cycle length, overhead |
| LTV:CAC | Whether acquisition pays back | All of the above |
| ROAS | Revenue per dollar of ad spend | Creative, targeting, landing page conversion, offer |
Fix the data before you trust the ratio
An ROI figure is only as good as the tracking under it. I have seen teams trust the default reports in Google Analytics 4 while the data underneath was broken, and move budget on the result. An audit follows data from collection to the dashboard, and it works best against a written measurement plan.
The issues that come up most often:
Tracking and tagging
- Missing tags. The analytics tag or the Meta pixel not firing on every landing page or every checkout step. Conversions disappear.
- Duplicate tags. The same tag firing twice inflates conversions and makes a channel look better than it is.
- Inconsistent event names. A lead tracked as
generate_leadon one form andLeadSubmissionon another. Set a naming convention and enforce it. - Data layer gaps. Transaction ID, SKU and value not pushed to the data layer, so revenue cannot be joined to cost or COGS.
Configuration and governance
- Wrong key events. A thank-you page view is not a completed sale. Check what each key event in GA4 and each conversion in the ad platforms actually counts, and its value.
- UTM discipline. Missing or inconsistent UTMs send paid traffic into "Direct" and make channel ROI impossible.
- Internal and bot traffic. Unfiltered, it dilutes conversion rates.
- Client-side losses. Ad blockers and browser restrictions drop events. Server-side tracking recovers part of them.
A one-off audit decays as soon as the next release ships. Monitoring the implementation continuously, rather than once a quarter, is what keeps the ROI number defensible; observability in marketing campaigns covers how.
Attribution shows correlation; incrementality proves cause

Last-click attribution gives all the credit to the final touch. That makes branded search and retargeting look like stars and hides the social ad or the article that created the demand. Budget follows the report, so the channels that create demand get cut and the ones that harvest it get more.
Take a buyer of a project management tool who:
- reads a comparison article from organic search,
- sees a LinkedIn retargeting ad and downloads an ebook,
- gets a follow-up email with a case study,
- a month later searches for the brand, clicks a branded ad and signs up.
| Model | Who gets credit here | Useful for | Pitfall |
|---|---|---|---|
| First-touch | Organic article | Seeing what fills the top of the funnel | Ignores what closes |
| Last-touch | Branded search ad | Short cycles, direct response | Ignores everything before the click |
| Linear | 25% each | A first full-funnel view | Treats every touch as equal |
| Data-driven | Fractional, from observed paths | Accounts with enough conversion volume | Hard to explain; needs volume |
Data-driven attribution is the default in GA4. It is a reasonable starting point if you have the conversion volume, but it is still a model of correlation. For the trade-offs between rule-based and algorithmic models, see what multi-touch attribution is.
Incrementality answers "would this sale have happened anyway?"
A customer already planning to buy who searches your brand and clicks a paid ad gets the ad full credit under any click-based model. The sale was not incremental. Incrementality tests measure the difference between exposed and unexposed groups.
A geo lift test, simplified:
- Pair regions with similar historical sales.
- Assign one set as test and the other as control.
- Change spend on one channel in the test regions only: switch it on, raise it, or switch it off.
- Compare results after a fixed period. The difference is the incremental effect.
Audience holdouts work the same way inside a platform: withhold a random share of the audience from a campaign and compare. Geo tests are also how you measure channels digital tracking cannot see, such as podcasts or TV. A "How did you hear about us?" field on the checkout or demo form adds qualitative evidence for them.
MMM covers what user-level data cannot
Marketing mix modeling works on aggregate data over time. It captures offline channels and long-term effects that user-level attribution misses, and it does not depend on cookies or consent. It needs history and some statistical skill, and it answers strategic questions (how much per channel next year) rather than tactical ones (which ad set this week).
Teams with mature measurement use the three together: attribution for daily optimization, incrementality tests to validate the big bets, MMM for the annual split, each calibrating the others.
Run experiments as a system, not as hunches
Improving ROI is an ongoing process. The teams that keep improving have a backlog of hypotheses and a way to choose and run them.
Write each hypothesis as a testable statement: "If we change X, then Y will happen, because Z." For example: "If we change the ad headline from a discount to a specific benefit, click-through rate will increase, because the benefit speaks to the reason people buy." The "because" is what turns a hunch into something you learn from, win or lose.
Prioritize with ICE. Score each hypothesis from 1 to 10 on:
- Impact: how much would it move a key metric if it works?
- Confidence: how much evidence supports it: data, research, or a gut feeling?
- Ease: how much time, money and engineering does it take?
Run the highest combined scores first.
Design clean tests:
- Change one variable. If you change the headline and the image, you will not know which one worked.
- Calculate the sample size before you start, and do not stop early because one variant pulls ahead. Early leads at a nominal confidence threshold are often noise.
- Define the winning metric in advance: CTR, conversion rate, ROAS, or profit.
- Run for at least one full business cycle to smooth out day-of-week effects.
A test is only as good as its tracking; if results look strange, debug the analytics before reading anything into them.
Use platform automation, but measure it independently

Most of the machine learning a marketing team uses already sits inside the ad platforms:
- Automated bidding. Google Ads and Meta Ads bid toward a target CPA or ROAS in real time.
- AI campaign types. Performance Max allocates budget across Google's inventory toward what is converting.
- Dynamic creative. You supply headlines, images and descriptions; the platform assembles combinations per audience.
- Generative AI for copy. Faster variations to feed the test backlog.
Two cautions. These systems optimize toward the conversion signal you send them, so broken or inflated conversion tracking trains them on the wrong goal. And a platform grading its own automated campaign is not independent evidence; validate the big ones with an incrementality test.
Predictive models for budget allocation, forecasting next quarter's return by channel under different scenarios, are where MMM and modern planning tools overlap.
Balance brand and performance, and measure both
Putting every dollar into bottom-of-funnel activity harvests demand that already exists without creating more. Returns shrink and you pay more and more to reach the same buyers. Brand investment is slower and harder to see in a spreadsheet, but it makes performance channels convert better and cost less.
The split between the two is a long-running debate in the industry. Google has published an analysis with Ipsos MMA of European e-commerce brands that argues for rebalancing toward brand.
Brand impact is measurable through leading indicators:
- Branded search volume over time.
- Direct and organic traffic as a share of the total.
- Share of voice against direct competitors, from social listening and media monitoring.
To connect them to revenue, use the same tools as above. For example, run a brand video campaign in one city and compare branded search, direct traffic and sales against a matched control city. Or let MMM estimate the lagged effect of brand spend.
Judge each channel on its own timeline, then reallocate
Judging every channel on a 30-day window penalizes the slow ones. SEO and content take months to mature; paid search pays back fast. In B2B, with sales cycles of six months or more, a campaign can look like a failure a month after it ends while the pipeline it created has not closed yet.
For long cycles, measure pipeline ROI alongside closed revenue. For example, a $20,000 campaign that influences $180,000 in new opportunities has a pipeline ROI of 800%; whether it delivers depends on your win rate. Tag leads by campaign in the CRM and follow the cohort through the full cycle.
Then ask the same questions of every channel:
- What is its real return? From your incrementality-tested, profit-based numbers, not the platform's last-click report.
- How long is the payback period? Months until a customer from this channel pays back their CAC.
- What is the LTV of customers it brings? A channel with lower first-purchase ROAS can bring customers who stay for years.
If, for example, paid social shows high CAC and low LTV while organic search and webinars bring leads with a strong LTV:CAC, cut the first and move the money to the second. Repeat every quarter.
What to check this week
- Recalculate last quarter's ROI on gross profit, with all marketing costs included, for your two largest channels.
- Pick one channel that last-click flatters, usually branded search or retargeting, and plan a holdout or geo test for it.
- Audit the purchase or lead event your bidding strategies optimize toward: it fires once, with the right value.