Marketing Campaign ROI Tracker
Judge whole campaigns rather than channels: every cost including people time, the return against a baseline of what would have happened anyway, and an honest position for campaigns whose objective was never revenue. Runs entirely in your browser. Nothing is uploaded.
Version 1.0.0 · Updated Aug 20, 2026
Use Marketing Campaign ROI Tracker now
Runs in your browser · nothing is uploaded
This in-page version cannot save your work between visits — browser storage is switched off inside the sandbox. The full version saves your work locally after download.
Overview
Frequently asked questions
How does the Marketing Campaign ROI Tracker licence work?
It is a one-time purchase for a downloadable tool — no subscription. You buy it once and the file is yours to keep and use.
Can I try the Marketing Campaign ROI Tracker before buying?
Yes. Use the Try online button for a fully interactive demo with sample data already loaded — nothing to install and nothing is saved.
Can I import my data from a spreadsheet?
Yes. Use the Spreadsheet template button to save a CSV with the right headings, fill it in Excel or any spreadsheet, then Import spreadsheet to load it back. The file is read in your browser — nothing is uploaded.
Does my data stay private?
Yes. The tool is a single HTML file that runs entirely on your computer and makes no network requests, so nothing you enter is ever uploaded or shared.
Do I need Excel or any other software?
No. It replaces the spreadsheet template entirely: open the file in your browser (Chrome, Edge, Firefox or Safari) on Windows, Mac, Linux or a tablet, and start working.
How to use Marketing Campaign ROI Tracker
The complete in-tool guidance, reproduced here so you can read it before you download.
What this tool does
CM8-377 judges whole campaigns rather than channels. It counts every cost including the internal hours nobody records, measures the return against a baseline of what would have happened anyway, and refuses to give a return figure to campaigns whose objective was never revenue.
Everything runs inside this single file — no account, no upload, no network request of any kind.
The baseline is the whole argument
A campaign's return depends entirely on one question: what would have happened if you had done nothing? Almost all campaign reporting skips it and credits the campaign with all the revenue that occurred while it ran — which in a growing business is flattering, in a seasonal one is meaningless, and in a promotion is close to fraud.
Revenue added = revenue counted − revenue you would have had anyway Gross profit added = revenue added × gross margin Return = gross profit added ÷ everything it cost
Three usable baselines, in order of quality: the same period last year adjusted for growth; the equivalent period immediately before the campaign; and a control group or region where the campaign did not run, which is much the best and is rarely practical.
A campaign with no baseline is flagged as the return is not evidence and drawn in grey rather than being quietly ranked alongside the others. The sample includes one, so you can see how it reads.
The sample's summer promotion is the case worth studying: 214,000 of revenue against a 168,000 baseline. The campaign looks enormous and added 46,000, against a discount cost of 41,000.
What a campaign actually costs
Five components, and campaign reports usually contain the first one:
- Media and advertising — what everybody counts.
- Creative and production — design, film, photography, writing.
- External — agencies, venues, printing, prizes, stands.
- Discounts given — see below.
- Internal time — see below.
Internal time
Internal cost = hours × fully loaded cost of an hour
Count everybody's hours, not just marketing's: the sales people who staffed the stand, the product person who reviewed the copy, the designer, the person who built the landing page.
On content and event campaigns this is nearly always the largest single cost. The sample's content campaign spent seven thousand externally and four hundred and eighty hours internally — roughly twenty thousand more. It still cleared the target, and it is a completely different campaign from the one the media-only figure describes.
Any campaign where more than 60% of the cost is internal time is flagged. That is not a criticism — it is often the best kind of campaign — but it does mean the constraint is people rather than budget, and doubling it is not a matter of asking finance.
Discounts are the cost of a promotion
The margin given away in a promotion is a campaign cost, and it is usually several times the advertising. Leaving it out makes a discount campaign look like the cheapest thing marketing does.
Record the margin actually given up: units sold at a discount multiplied by the discount per unit, not the headline percentage applied to everything.
Revenue that arrives afterwards
Most campaigns keep producing after they end — an event's pipeline closes over months, a launch keeps selling. Record it separately, and use the setting to include or exclude it.
The sample's trade show shows why: two thirds of its revenue arrived after the show closed. Judged on the four days it looks like a failure and judged over the quarter it is among the best campaigns of the year. Both figures are available; be clear which one you are quoting.
Awareness campaigns
A campaign whose objective was awareness gets no return figure at all, and is left out of the return chart entirely. This is deliberate.
The alternatives are worse. Assigning it revenue it did not measurably produce is invention; assigning it a return of zero implies it failed at something it was never trying to do. What it gets instead is a cost per thousand people reached, which is the honest measure, and a clear position saying so.
The tool will not let you record revenue against an awareness campaign. If it produced measurable revenue, its objective was not awareness — change the objective rather than reporting both.
Gross profit, not revenue
Return is calculated on gross profit. A campaign returning twice its cost in revenue at a 40% margin lost money, and "2× ROI" is how that gets reported.
Write down what was learned
The tool will not let you close a campaign without it, and the learning table is the part of this register that pays off over years.
A campaign nobody wrote a conclusion about will be run the same way again. Two sentences is enough, and the most useful ones name what did not work: the sample's launch found the offer worked and the creative did not, which changes what the next launch spends its production budget on.
Read it as a portfolio
The type chart shows net contribution by kind of campaign, and awareness and content will usually be negative. That is not an argument for stopping them.
A business running only campaigns with immediate measurable returns is harvesting demand it did not create, and will eventually run out of people who have heard of it. The question this chart answers is proportion, not whether to run them.
What this cannot do
- It cannot establish a baseline for you, and a bad baseline produces a confident wrong answer.
- It cannot separate campaigns running at the same time. Two overlapping campaigns will both claim the same increment.
- It says nothing about the customers won. A campaign winning discount-driven customers who never return can beat one winning loyal ones.
- It does not know about pulled-forward demand: a promotion that sells in March what would have sold in April shows as an increment in March and a hole later.
- It cannot value awareness. Nothing can, reliably, which is why it does not try.
Printing and sharing
The Report tab prints the tiles, charts and both tables with a title block you fill in. The results table is the campaign review; the learning table is what to read before planning the next one.
Saving your work
Campaigns are held in this browser, on this computer, and stay there between visits. Use the backup button to write a JSON file you control — a campaign archive is worth keeping for years.
Accuracy & disclaimer
Every figure here is one you entered, and the baseline is a judgement rather than a measurement. The tool makes that judgement explicit and marks its absence; it cannot make it correct.
Where this fits
Part of Campaign Planning & ROI in Marketing & Growth.
Related tools
Build the whole marketing budget — people, media, content, events and tools — track it against actuals month by month, and see how much of it is already committed before the year has started. Runs entirely in your browser. Nothing is uploaded.
See the whole marketing year on one timeline, find the weeks where campaigns clash for the same audience, and check that what is planned can actually be built by the people available. Runs entirely in your browser. Nothing is uploaded.
Work out whether an event was worth it: every cost including the days your team spent away, real conversations rather than badge scans, and the pipeline that closes months later. Runs entirely in your browser. Nothing is uploaded.
Turn the return-on-ad-spend figure the platform reports into one your accounts would recognise: corrected for margin, refunds and incrementality, against the break-even ROAS your margin actually requires. Runs entirely in your browser. Nothing is uploaded.
Work out cost per lead and cost per acquisition, then break it apart: what you pay for a thousand impressions, what share click, and what share convert. Shows which of the three is actually driving the cost. Runs entirely in your browser. Nothing is uploaded.
Plan where the media budget goes, what each channel is expected to return, and whether spend is pacing to plan. Shows what the whole plan delivers against the target before you commit. Runs entirely in your browser. Nothing is uploaded.