On this page
- Return on ad spend is not return on investment
- Pick one number that the business actually cares about
- Count the whole cost, not the media bill
- Tag everything, the same way, every time
- Make the CRM remember where the lead came from
- Correlation is not causation, and your reports are full of confounds
- Why 'we turned it off and nothing changed' is not proof
- Choose an attribution model on purpose, then distrust it
- What good reporting looks like
- Common ways this goes wrong
- A short checklist before you trust a number
A lot of marketing reporting questions turn out to be accounting questions. The report says leads are up, the bank balance does not feel any different, and nobody can say which of the six things running last month deserves the credit. In our experience that gap usually comes down to five fixable things: costs that were never fully counted, revenue that was never turned into profit, traffic that arrived untagged, a CRM that did not keep the source, and a way of testing cause and effect that has not been checked.
Fix those five and the arithmetic becomes boring, which is exactly what you want. But the arithmetic has to use the right numbers. Revenue is not profit, and a channel that produces revenue can still lose you money once you account for what it cost to deliver the work.
Return on ad spend is not return on investment
A frequent mistake in small business marketing is treating return on ad spend as if it were the same thing as return on investment. Return on ad spend, usually written ROAS, is conversion value divided by ad spend: it tells you how many dollars of sales a dollar of spend produced. It says nothing about how much of that revenue you keep once you pay for the people, materials and time it takes to deliver the job.
A channel that returns four dollars of revenue for every dollar spent can still be a loss if your gross margin on that work is thin, or the leads it brings need heavy discounting to close. A channel that returns two dollars of revenue for every dollar spent can be an excellent investment if your margin on that work is high. You cannot tell which is which from revenue alone.
The lesson from that example is not that paid search was bad. It is that a revenue-based number and a margin-based number can tell very different stories about the same campaign, and the margin-based number is the more useful one for a budget decision. Neither figure on its own tells you whether the campaign caused the sales; that is a separate question, and the test design later in this article is how you get at it.
Pick one number that the business actually cares about
Choose a single headline metric that lives downstream of money, and make every other metric report to it. For most service businesses that is gross profit from new customers, not raw revenue and not lead count. Clicks, impressions and followers are diagnostics: they help you explain a change in the headline number, but they are not the number.
Then define it precisely enough that two people would count it the same way. "New customer" means what: first invoice paid, or contract signed? Does a returning customer from three years ago count as new? What gross margin assumption applies when a job mixes materials and labor? Write the definitions down. A good number of reporting arguments turn out to be definition arguments in disguise.
Count the whole cost, not the media bill
Marketing cost is not the ad spend. It is the ad spend plus agency or retainer fees, plus software, plus the hours your own team put in. Leaving out internal time is a common way a channel looks profitable when it is not: a channel that eats fifteen hours a week of somebody's attention has a real cost even though no invoice arrives for it.
- Media and platform spend, per channel.
- Agency, contractor or membership fees attributable to that channel's work.
- Tools that exist because of that channel (call tracking, landing page software, creative subscriptions).
- Internal hours at a loaded hourly rate, estimated honestly rather than optimistically.
- One-off production costs, spread across the period they serve rather than dumped into one month.
Delivery costs are a separate list, and they belong on the margin side of the calculation rather than in marketing cost. Count them once, in the gross margin you apply to the revenue the channel produced, and do not add them again to marketing spend; doing both understates the return twice over.
- Materials and parts consumed on the jobs sold through that channel.
- Subcontractor invoices attributable to that work.
- Direct labor on delivery, at a loaded rate.
- The margin rate used, taken from the actual job type or product mix that channel sells, not a company-wide average when the mix differs.
Tag everything, the same way, every time
Attribution collapses at the point of entry. If half your traffic arrives with no campaign information attached, no model downstream can rescue it. Agree one tagging convention and apply it to every paid link, email, QR code, partner placement and social post you control.
- 01Write the convention down as a one-page rule: lowercase, no spaces, fixed vocabulary for source and medium.
- 02Decide the small set of allowed values before anyone builds a campaign; 'facebook' or 'fb', never both.
- 03Tag every link you control, including email and offline codes, using the same builder or spreadsheet.
- 04Audit monthly for traffic landing without tags, and fix the source rather than the report.
- 05Never tag internal links on your own site; it overwrites the real source with your own navigation.
Make the CRM remember where the lead came from
This is the step that separates real measurement from a good-looking report. The campaign information that arrived with the visitor has to travel with the lead record into your CRM and survive all the way to the closed-won deal, ideally alongside the job's actual margin. If it does not, you can measure leads but never profit, and leads are the metric most likely to flatter a channel that produces cheap enquiries and no customers.
- Capture source, medium and campaign as hidden fields on every form, and store them on the contact and the deal.
- Do the same for phone: a tracking number per channel, logged against the contact.
- Never overwrite the first-touch source on later visits; keep both first and last touch as separate fields.
- Make source a required field on manually created deals, so referrals and walk-ins are counted rather than dumped into 'direct'.
- Record the job type or product line on the deal so you can apply the right margin assumption later, instead of one blended number.
- Reconcile against your accounting system at least quarterly, so 'revenue' means money received, not pipeline optimism.
Correlation is not causation, and your reports are full of confounds
Even with clean tagging and a CRM that keeps the source, a report showing that revenue rose alongside a channel's spend does not prove the channel caused the rise. Several things move revenue at the same time as any single channel, and a monthly report usually cannot separate them.
- Seasonality: demand for many services rises and falls by month regardless of what you spend on marketing.
- Brand demand: people who already know and trust you will find you through a channel you happen to be running, even if that channel did not create the demand.
- Other channels running at the same time: a lead who saw a paid ad, then searched your business name, then filled out a form, can get credited to whichever channel touched last.
- Promotions and pricing changes: a discount or a change in availability can move sales independent of any marketing message.
- Sales capacity: if your team can only handle so many jobs in a month, revenue can look flat no matter what marketing does, simply because you were already at capacity.
Why 'we turned it off and nothing changed' is not proof
A common and tempting test is to turn a channel off for a few weeks and watch revenue. If revenue does not visibly drop, it is tempting to conclude the channel was doing nothing. That reasoning fails for several reasons, and treating it as proof is one of the more expensive mistakes an owner can make.
- A short window is easily swamped by seasonality, a slow sales cycle, or a promotion running elsewhere; you cannot tell the channel's effect from the noise around it.
- Some channels build demand that shows up weeks or months later, so switching off and checking the same week measures nothing about that channel.
- If nothing else changed, a flat topline after turning off spend could mean the channel was cannibalizing another channel, not that it added nothing; total demand can stay the same while the mix that produced it shifts.
- One brief off-period is a single data point. A single data point cannot distinguish 'this channel does nothing' from 'this month was unusual for reasons that have nothing to do with the channel'.
A more defensible test is designed before you run it, not read after the fact. It has four features: a genuine holdout, so part of your market still gets the channel while another comparable part does not, rather than an all-or-nothing switch; a geographic or audience split, where similar regions or segments are compared side by side over the same period, rather than the same market compared to itself before and after; a sustained observation window long enough to cover your typical sales cycle and any seasonal pattern, not a couple of weeks; and an agreed measurement window and headline metric decided in advance, so nobody is tempted to pick whichever number looks best after the fact.
| Test design | What it can tell you | Where it still misleads |
|---|---|---|
| Off/on switch, single market, short window | Almost nothing reliable on its own | Confounded by seasonality, sales cycle length, and other channels changing at the same time |
| Geo holdout (similar regions, one keeps the channel, one does not) | A reasonable estimate of incremental effect | Regions are never perfectly matched; needs a large enough gap to be visible |
| Audience or segment holdout within one market | Good for channels that target a defined list, like email or retargeting | Cross-contamination if segments interact or share word of mouth |
| Sustained multi-month observation with a fixed metric agreed in advance | Reduces the chance of picking a favorable number after the fact | Still not a true experiment; treat the result as directional, not certain |
Choose an attribution model on purpose, then distrust it
Attribution models are lenses, not verdicts. Last-click is simple, reproducible and systematically undercredits everything that introduced you to the customer. First-touch does the reverse. Multi-touch models spread credit across the path and look sophisticated, but they can only see the touches you managed to record, and they cannot see whether the customer would have bought anyway.
| Model | Best used for | Where it misleads |
|---|---|---|
| Last touch | Fast, stable weekly reporting | Starves awareness activity of credit |
| First touch | Understanding what introduces you | Overvalues the top of the funnel |
| Multi-touch | Comparing channels within a path | Only sees recorded touches; ignores baseline demand |
| Holdout or geo test | Estimating whether spend caused sales | Needs discipline, matched comparison groups, and time to run properly |
What good reporting looks like
A useful monthly report fits on a page. It shows the headline profit number against the previous period, the full cost that produced it, the two or three things that changed, and an explicit note about anything that could not be measured or that is confounded by seasonality, a promotion, or another channel running at the same time. That last part matters more than it sounds: a report that quietly shows a clean number where the real picture is muddy teaches everyone to distrust the whole document. Say 'not measurable cleanly this month, and here is why' instead.
Then decide something. Measurement that does not change next month's plan is an expensive hobby. Each cycle should end with one thing you are going to do more of, one thing you are going to stop, and one thing you are going to test properly.
Common ways this goes wrong
- Reporting revenue return and calling it ROI without ever checking gross margin on the work sold.
- Counting the same customer in two channels and reporting the total as revenue.
- Comparing a month's spend against revenue that closed from spend three months earlier.
- Measuring lead volume when the business problem is lead quality or job margin.
- Turning a channel off for a few weeks, seeing flat revenue, and concluding it does nothing.
- Judging a long sales cycle on thirty days of data and cutting the channel that was working.
- Reporting platform-claimed conversions and bank revenue side by side without reconciling them.
A short checklist before you trust a number
- Is this a profit number or a revenue number, and does the report say which?
- Does the marketing cost include internal time and tools, not just media spend, and is delivery cost counted once inside the margin rather than twice?
- Could seasonality, a promotion, or another channel explain this change instead of the one being credited?
- If this is based on turning something off, was there a genuine holdout or comparison group, and a window long enough to matter?
- Was the metric and measurement window agreed before the test ran, not chosen afterward?
None of this requires new software. It requires agreeing on definitions in profit terms, capturing the source at the point of entry, keeping it through to the money, being honest about what can and cannot be separated from seasonality and other activity, and being willing to run one properly designed test. Do that and you can answer the question that matters most for a budget, which of this is worth continuing, with something better than a hunch.
Source: Google Ads Help: About return on investment (ROI)
Source: Google Ads Help: About Target ROAS bidding, on conversion value divided by ad spend
Source: Google Analytics Help: collect campaign data with custom URLs
Measurement is part of the monthly cycle: we agree what to change, do the work, and report what happened.
See how the membership works