Skip to content
Revenue Operations

Marketing ROI: How to Calculate It at Channel, Campaign and Program Level, and Why the Answer Changes

Marketing ROI is simple arithmetic with hard arguments inside it. Calculate it at channel, campaign and program level, see how attribution windows move the answer, and handle long sales cycles.

A finance coordinator standing at a high counter with a stack of folders, an adding-machine paper tape curling off the edge and a pencil behind one ear

Field note

Illustrative image, AI-generated. It is not a client, dashboard or result. How we use imagery.

By XenGrowth EditorialPublished Reviewed 12 min read

Share this

Key takeaways

  • Marketing ROI is (gross profit attributed to the activity minus its cost) divided by its cost. Use gross profit, not revenue, and say which cost base you used.
  • The same business can show 150% at channel level, 100% at campaign level and 30% at program level, because each level counts a different cost base and a different return. In our illustrative example none of those numbers is wrong; they answer different questions.
  • Attribution windows change the answer before anyone has made a mistake. Google Ads defaults to a 30-day conversion window for Search and Display and lets you set 1 to 90 days; Google Analytics defaults to 90 days for most key events and 30 for acquisition events.
  • For a long sales cycle, report by cohort: group leads by arrival month, follow each cohort to closed-won, and label expected profit from open pipeline as an estimate.
  • Attribution reports show credit, not cause. A holdout test, such as the control-group design Google describes for Conversion Lift, is the way to measure what marketing added.
  • Write the window, cost base, credit rule and cohort maturity next to every ROI figure. A bare percentage invites an argument nobody can settle.

01

What is marketing ROI, and which formula should you use?

Marketing ROI is the profit a marketing activity produced, minus what it cost, divided by what it cost. The formula is simple. The arguments are about what counts as produced, what counts as cost and over what window, and the same spend can look strong at channel level and weak at program level.

Use gross profit in the numerator, not revenue. A campaign that books $100,000 of sales at a 30% gross margin produced $30,000 of gross profit, and an ROI built on the $100,000 would read as a 400 percent return where the gross-profit version reads 50 percent, on a $20,000 cost. The revenue-based ratio has its own name, ROAS, and its own job. Our post ROAS vs ROI: Why a Good Ad Return Can Still Lose Money covers where each should drive a decision, so this guide does not repeat it.

Four measures turn up in most budget conversations. They answer different questions, and swapping one for another is how a good week gets reported as a bad quarter.

What is marketing ROI, and which formula should you use? comparison table
MeasureFormulaQuestion it answersWatch for
ROI(Gross profit attributed to the activity minus cost) divided by costDid it return more profit than it cost?Depends entirely on the credit rule and the window
ROASRevenue attributed divided by ad spendHow much revenue did each ad dollar bring in?Ignores margin and every cost that is not media
Payback periodCost of acquiring a customer divided by monthly gross profit per customerHow many months until the spend is recovered?Needs a retention assumption you may not have
Incremental ROI(Gross profit from sales the activity caused minus cost) divided by costDid it pay for itself once sales that would have happened anyway are removed?Needs a test, not a report

02

Why does marketing ROI change at channel, campaign and program level?

Each level counts a different cost, claims a different return and answers a different question. A channel ROI asks whether a budget line deserves its money. A campaign ROI asks whether a time-limited push paid off. A program ROI asks whether marketing as a whole is worth funding, which is the question the finance director is usually asking even when the dashboard answers a smaller one.

The common error is to add channel ROIs together to make a program ROI. Channels share credit for the same customer, and every platform tends to claim what it can reach, so the sum overstates the total. Program ROI needs its own method: total marketing cost, including salaries, agency fees and tools, set against new-customer gross profit taken from CRM and finance records, with a separate and clearly labeled view of how much of it marketing touched.

The IPA Databank deck by Les Binet and Peter Field, which analyzes 996 campaigns across 700 brands and 83 categories, makes a point that belongs at program level: short-term effects are vital for efficiency, long-term effects drive growth and profit, and short-term metrics alone can mislead. That is an advertising-effectiveness dataset built from larger brands, so we use it as an argument for measuring over a longer horizon, not as a benchmark for your own numbers.

Why does marketing ROI change at channel, campaign and program level? comparison table
LevelQuestionCost baseReturn baseTypical error
ChannelIs this channel worth its budget?Media plus the tools and labor that run itGross profit credited to the channel by the attribution ruleCrediting last-touch channels with demand others created
CampaignDid this push pay off?Media, creative, production and tools for a defined periodGross profit credited inside a stated windowClosing the books before the window ends
ProgramIs marketing as a whole worth funding?All marketing cost, including salaries and agency feesNew-customer gross profit from CRM and finance recordsSumming channel ROIs, which double-counts shared credit

03

How do attribution windows change a marketing ROI figure?

An attribution window is the period after an interaction during which a conversion is credited to it. Google Ads documents a default conversion window of 30 days for Search and Display campaigns and lets advertisers set 1 to 90 days for click-through conversions; conversions outside the window are not counted in reports. In Google Analytics, the lookback window for acquisition key events defaults to 30 days (7 is the alternative) and for all other key events to 90 days (30 or 60 are the alternatives). Google Analytics also offers three attribution models, data-driven, paid and organic last click, and Google paid channels last click, and all of them leave direct visits out of the credit unless the whole path was direct.

Two tools, two defaults, one ad budget. Before anyone has done anything wrong, two dashboards can report different ROI for the same spend. The example below is illustrative: the sales counts are invented to show the mechanics, not drawn from any account.

How do attribution windows change a marketing ROI figure? comparison table
Window (illustrative)Sales creditedGross profit at $1,200 per saleROI on $10,000 spend
7 days6$7,200-28%
30 days14$16,80068%
90 days19$22,800128%

04

Which attribution window is the right one?

No window is right in general. The 7-day figure above says the campaign lost money and the 90-day figure says it more than doubled it, and both are arithmetic on the same events. A longer window is not automatically more truthful, either. It also credits sales that would have closed anyway, and the longer it runs the more of those it sweeps in.

Pick the window from your own sales cycle. Take your last thirty won deals and look at the number of days from first recorded contact to close. If most closed within three weeks, a 30-day window is defensible. If the median is 70 days, a 30-day window will under-credit every campaign you run, and the reports will quietly steer budget toward whatever converts fastest, which is usually the channel that harvests existing demand.

Then do the part that matters most in practice. Write the window next to every figure, and keep it fixed when you compare one period with another. Changing the window between quarters produces improvements that never happened.

05

How do you calculate marketing ROI when the sale takes months?

Report by cohort. Group leads by the month they arrived, then follow each group to closed-won and record gross profit as it matures. For every cohort, show three things: gross profit closed so far, expected profit from the open pipeline using your own historical close rates, and cost. Label the second figure an estimate. The result is a provisional ROI that firms up month by month, and a mature ROI you can compare across cohorts.

A long cycle also means a share of any quarter's spend is working on buyers who will not be ready for a long while. Professor John Dawes of the Ehrenberg-Bass Institute, in work with LinkedIn's B2B Institute, puts the share of business buyers in the market at any moment at about 5%. If that holds in your category, early ROI readings will understate marketing that builds preference, and over-reward marketing that reaches the few who are ready now. Our guide to measuring SEO ROI when the sale closes months after the search applies the same cohort idea to organic traffic.

  • Fix the cohort rule first: lead creation month, or first-touch month. Do not switch halfway.
  • Record cost by the same month, so each cohort has its own cost line.
  • Use your own close rates and time-to-close for the open-pipeline estimate; do not borrow benchmarks.
  • Freeze the attribution window per cohort and write it on the report.
  • Show matured and open separately. Never blend them into one figure.

06

How do you separate what marketing caused from what would have happened anyway?

Attribution distributes credit among touchpoints. It does not tell you whether the sale would have happened without them. Only an experiment does that. Google describes its Conversion Lift product this way: split an audience into a group that sees the ads and a control group that does not, and the difference in conversions is the lift caused by the ads. Google notes that Conversion Lift is not available for all Google Ads accounts and that access goes through an account representative.

The principle works without any particular product. Hold out a random slice of the eligible audience, or a set of comparable regions, for a defined period, and compare outcomes. The gap is the incremental effect, and incremental ROI is built from it. The costs are real: a holdout forgoes the sales the ads would have produced if they work, and small volumes give noisy gaps. We would run one on the largest channel once, because the result recalibrates how far to trust attribution-based figures for that channel and, by comparison, for the others.

Even a correct average ROI does not say where the next dollar should go. Our post on why the best historical ROAS is not automatically the best place for the next dollar covers the difference between average and marginal return.

07

What does marketing ROI look like at all three levels? A worked, illustrative example

The figures below are invented for arithmetic. Imagine one quarter at one business. Paid search spends $20,000 on media and, under last-click credit and a 30-day window, is credited with $50,000 of gross profit. A spring promotion, which ran across search, email and a landing page, costs $27,000 once creative, production and a share of email tooling are added, and is credited with $54,000 under the same window. For the whole program, media is $60,000, salaries and contractors $90,000 and tools $10,000, so cost is $160,000; a review of new customers in the CRM and finance records puts new-customer gross profit at $208,000.

Same business, same quarter, three honest answers: 150%, 100% and 30%. The channel number is the one most often reported and the most flattering, because it leaves out the people who run the channel and the demand other work created. The program number is the one that tells you whether to keep funding marketing. The $208,000 is not a sum of the other rows; it comes from a separate review, which is the point.

What does marketing ROI look like at all three levels? A worked, illustrative example comparison table
Level (illustrative)CostGross profit creditedROI
Channel: paid search, last click, 30-day window$20,000$50,000150%
Campaign: spring promotion, 30-day window$27,000$54,000100%
Program: all marketing, one quarter$160,000$208,00030%

08

What should a marketing ROI report state, and which mistakes distort it?

A bare percentage is an invitation to argue. Every ROI figure that leaves the marketing team should carry a short footing: the level, the window, the cost base, the credit rule, whether the cohort is mature, and whether an experiment backs the number. If a figure cannot carry that footing, it is not ready to be presented as a decision input.

Our post on why an ROI calculator should expose the assumptions that make it look good is the companion for any calculator you publish or hand to a buyer. The same logic applies internally: the assumptions are the argument.

A one-page format works well for the finance conversation. Put the program-level figure first with its footing, then the campaign and channel figures beneath it, each with its own window and cost base, then a short list of what is estimated and what is observed. Close with the one decision the numbers support, such as holding budget, moving a share from one channel to another or running a holdout test. A report that ends without a decision is a status update, not an ROI analysis.

  • Using revenue where gross profit belongs, which inflates the return term and with it the ROI.
  • Leaving out salaries, agency fees and tools at program level, so the cost base looks smaller than it was.
  • Comparing a 7-day figure for one channel with a 90-day figure for another.
  • Adding channel ROIs to get a program ROI, which counts shared credit more than once.
  • Closing a campaign's books before its window has run out, then treating the early figure as final.
  • Treating attributed credit as proof of cause without a holdout test.

Was this useful? Send it to someone who owns this problem.

Primary sources and further reading

Use the source material to validate details against your own context and current platform configuration.

This field note follows the XenGrowth editorial policy: primary sources where available, visible limitations, material review dates, and no invented first-hand experience.

Stay with the problem

Explore CRM & RevOps