How to calculate marketing ROI: the formula, a worked example, and where each number comes from
The calculation is the easy half. This is the guide to pulling the four inputs out of four different systems and making them agree.
Published by AI Knows Us · Updated 12 October 2026
To calculate marketing ROI, take the gross profit produced by the activity, subtract everything the activity cost, and divide the result by that cost. Written out: ROI equals gross profit minus marketing cost, all divided by marketing cost, expressed as a percentage. The arithmetic takes a minute. The work is in sourcing the numbers, because revenue sits in one system, cost in another and margin with finance. This page does the calculation first, then shows where each input comes from and how to make the systems agree. All figures below are illustrative and in whatever currency you report in.
The formula, and the decision that changes the answer
ROI = (gross profit from the activity - total marketing cost) / total marketing cost
Gross profit = attributed revenue x gross margin
Total marketing cost = media + fees + production + tools + attributable staff cost
Two decisions have to be made before you calculate, and written down so the same answer comes out next quarter.
- Revenue or gross profit. Running the formula on revenue makes every channel look several times better than it is. Finance will only accept gross profit. Use gross profit and state the margin you applied.
- What counts as cost. Media alone, media plus agency fees and production, or fully loaded with salaries and tools. Each is defensible. Mixing them between channels or between quarters is not.
A worked example, end to end
A quarter of paid search activity:
| Line | Figure | Where it came from |
|---|---|---|
| Attributed revenue | 1,600,000 | Orders in the CRM tagged to the paid search source |
| Gross margin | 55 per cent | Finance, product level margin for the mix sold |
| Gross profit | 880,000 | 1,600,000 x 0.55 |
| Media cost | 400,000 | Ad platform invoice, not the platform dashboard |
| Agency fee | 60,000 | Agency invoices for the quarter |
| Creative production | 20,000 | Production purchase orders |
| Total marketing cost | 480,000 | Sum of the three lines above |
On media only: (880,000 minus 400,000) divided by 400,000, which is 120 per cent. On total cost: (880,000 minus 480,000) divided by 480,000, which is 83 per cent. Same campaign, same quarter, two numbers thirty seven points apart. This is why the cost definition goes in writing before the first calculation and not during the argument about the result.
Where each input actually comes from
| Input | System of record | The trap |
|---|---|---|
| Attributed revenue | CRM or order system, with the source field populated | Taking revenue from the ad platform, which counts a conversion per platform and double counts across channels |
| Gross margin | Finance, by product or product group | Using a company average margin when the campaign sold a low margin product |
| Media cost | The platform invoice, in your accounting system | Dashboard spend excludes taxes and credits, and the dates rarely match the accounting period |
| Fees, production, tools | Purchase orders and supplier invoices | Fees sitting in a different cost centre and never reaching the channel they paid for |
| Staff cost | Payroll, allocated by time | Allocating by headcount instead of by the share of time actually spent on the channel |
The pattern is simple: revenue comes from the system where money is recognised, cost from the system where money is paid, and the ad platform is for optimisation rather than either side of the formula.
Making the four systems agree
Five rules settle almost every reconciliation dispute.
- One source per number. Name the system of record for each input in writing. When two systems disagree, the named one wins and the other gets investigated.
- One attribution window, set in advance. Thirty days for a short cycle, ninety or more for a considered purchase. Keep it the same across channels or the comparison is meaningless.
- One attribution model. Last non direct click for reporting is simple and consistent. Whatever you pick, apply it to every channel and state it on the report.
- Match the period. Cost by invoice date, revenue by order date, both to the same calendar month. Commit to the convention and footnote it.
- Reconcile to the ledger monthly. Total marketing cost in your report should equal the marketing lines in the accounts. If it does not, find the difference before anybody reads the ROI number.
Fifteen minutes of reconciliation each month is what makes the ROI figure survive a question from the finance director.
Three more calculations, each with a different input problem
Email to the existing base
Cost is the share of the platform fee for the sends, plus the time of the person who built them. Revenue comes from orders carrying the campaign tag. Example: cost 25,000, attributed revenue 600,000, margin 55 per cent, so gross profit 330,000 and ROI is (330,000 minus 25,000) divided by 25,000, which is 1,220 per cent. Email ROI is always large because the audience was acquired and paid for elsewhere. Report it alongside the cost of acquiring that list, or the number flatters the channel.
A trade show
Cost is stand, build, travel, hospitality and staff days, which is easy. Return arrives over months, which is the problem. Treat the show as a cohort: tag every contact collected, then report gross profit from that cohort at three, six and twelve months against the fixed cost. A show reported at month one always looks like a loss.
Organic content
Cost is writer, editor and designer time plus any tools, allocated by hours. Return is gross profit from non brand organic sessions that converted, which means separating brand queries from non brand in Search Console before you attribute anything. Content ROI improves for years after the spend, so report it cumulatively rather than in the month the page was published.
The spreadsheet layout
Channel | Period | Media | Fees | Production | Tools | Staff | Total cost
| Attributed revenue | Margin % | Gross profit
| ROI % | CAC | Payback months | Source of revenue | Source of cost
One row per channel per month. The last two columns are the ones that make the sheet trustworthy, because they record which system each number came from. A sheet without them turns into a disagreement by the third month.
A monthly routine that takes an hour
- Pull cost from the accounting system, by channel, by invoice date.
- Pull attributed revenue from the CRM using the agreed window and model.
- Apply the margin finance gave you, by product group rather than company wide.
- Calculate ROI, CAC and payback period on the same rows.
- Reconcile total cost against the ledger and note any difference.
- Write two sentences on what changed and what you will do about it.
This page covers the calculation and the sourcing of its inputs. For the comparison between ROI, ROAS and blended measures, and the tests that turn a correlation into a proven return, see our page on marketing return on investment and the version finance accepts.
What gets asked about calculate marketing ROI
Should salaries be included in marketing cost?
Include them when you are judging whether the marketing function earns its keep, and exclude them when you are comparing two campaigns against each other. Label the version you are reporting on the sheet so the two never get compared.
What do I do when two channels claim the same sale?
Pick one attribution model and apply it to every channel, so the total across channels equals total attributed revenue. Keep a second view using a different model if you want to see the influence of upper funnel channels, and keep it clearly separate from the reported number.
How do I calculate ROI for brand advertising with no clicks?
Use a geographic or on and off test. Run the activity in some regions and hold others back, then compare gross profit per region over the same period. That comparison is the cleanest return figure available for broadcast and outdoor.
Is a 500 per cent ROI good?
It depends entirely on the base. On a channel that spends a little and sells to an existing list, it is normal. On a large acquisition channel it is excellent. Compare each channel against its own previous quarter and against your target payback period rather than against a benchmark from another company.
How does ROI relate to CAC and lifetime value?
ROI measures one period. CAC measures what a new customer costs, and lifetime value measures what that customer returns over time. Report all three, because a channel with modest single period ROI and long customer life can be the best channel you have. The calculations are in our pages on customer acquisition cost and lifetime value.
Where to go from here
- Marketing ROI, the version finance accepts
- A marketing budget format finance will approve
- CAC and the six metrics it gets confused with
- The marketing metrics worth reporting
A fifth input for the sheet
The four inputs come from four systems, and you spend the monthly hour making them agree. A fifth deserves a line: whether assistants name you when buyers ask. It has no cost figure yet, but it explains leads your tracking labels direct. Record it as a monthly count, and note which question each time, so a change can be traced. Finance will want that detail. AI Knows Us produces the count: question, assistant, named or not.