“ServiceM8 already shows my income.”
It does, accurately. It has no idea which advert produced the client, because that happened before the client existed.
For ServiceM8
Export invoices from ServiceM8, upload the leads behind them, and find out which marketing paid for itself.
No API key Nothing to install in ServiceM8Nothing to install No card requiredNo card
CloseRev reads a ServiceM8 export of invoices — the client's phone or email, the amount and the date — and matches it against the calls, forms and ads that produced the job. ServiceM8 is built for very small operations, which means the owner is usually the one buying the marketing and the one doing the work, and nobody has ever had a spare afternoon to join the two files. Invoices with no traceable lead are reported as Direct / Unknown.
Last checked against ServiceM8's own documentation on September 24, 2026.
The gap
The job history is complete and accurate, and it has no column for where the customer came from.
What was sold, to whom, and for how much.
The click, the keyword, the call, and what each one cost.
The file
Three things carry the match: who, how much, and when. Anything else is optional and only changes how the report can be sliced.
On the client record. In a one-van business the mobile number is almost always the working key.
What was billed for completed work. Quotes are not revenue in any trade.
When the job was billed. Use it consistently on every row.
Where you use categories or badges. A callout and an installation are different businesses sharing a van.
Step by step
Written for somebody with ServiceM8 open in the next tab. Report names vary by edition, so each step says what to look for.
One row per invoice with a client contact detail, the total and a date.
A single-van business has lumpy months, and one big installation in a short file decides the ranking on its own.
A tracked number on the website and the van, the website form, search ads and any directory you pay for.
Record it as a source when you take the call. It is usually the biggest line and the one nobody ever measures.
The join runs on the phone and the email, normalised, with first and repeat jobs reported apart.
What comes back
Revenue by channel, the count of sales behind each figure, and an honest bucket for the ones nobody could trace. Sample figures, from the worked example on the Plumbers page — not from a ServiceM8 account.
| Channel | Share | Sales | Revenue |
|---|---|---|---|
| Google Ads | 96 | $163,200 | |
| Meta Ads | 21 | $25,600 | |
| Email marketing | 14 | $19,200 | |
| Direct / Unknown | 88 | $112,000 |
Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.
The argument
A business with one or two vans is not spending a fraction of its turnover on advertising the way a fifty-van operation does; it is spending a number the owner feels every month.
That makes the stakes of a wrong answer higher rather than lower, and it is the reason 'we are too small for attribution' gets the logic backwards.
Two exports and an afternoon produce the number, and at this scale the number usually points at one channel that should stop and one that should get more.
Nothing about the method needs a marketing department. It needs a file of invoices and a file of leads with a phone number on each, and it is the same method a company with fifty vans would use on the same two files.
Ask any established one-van operator where the work comes from and the answer is recommendations. Ask for the proportion and nobody has it.
Because no invoice arrives for a referral, it sits outside every advertising report, which makes the paid channels look like a larger share of the business than they are.
Recording it as a source when the call is taken — one question, one field — puts it into the same comparison on the same money.
The result usually changes what the owner does next: a business that is eighty per cent referral has a retention problem to solve, not an advertising one.
A householder who liked the work calls the same tradesperson again, sometimes for years, and every one of those jobs is revenue that no advert produced.
Credited to the original channel it makes that channel look extraordinary; credited to nothing it disappears into Direct / Unknown and makes every channel look weak.
The report separates first jobs from later ones and leaves the judgement to you, with both numbers visible.
For a small operator this split is usually the most useful thing in the file, because it puts a value on doing the work well rather than on buying more leads.
A wrap on the van and a board outside the job are real advertising, and both produce calls that arrive identically to every other call.
One tracked number on the van, different from the one on the website, separates them for a few pounds a month, and that is the whole apparatus required.
Without it the report is honest but blunt: it will show a large Direct / Unknown bucket and say so rather than distributing it across whatever else was running.
With it, a small operator can finally compare a wrap against a directory listing against a search advert on money rather than on impression.
The same logic applies to a board left outside a finished job. It is the cheapest advertising in the trade and the only one that reaches the neighbours of somebody who already chose you, which is a better audience than any targeting option you can buy.
Fair questions
It does, accurately. It has no idea which advert produced the client, because that happened before the client existed.
Small is the case for it. One misjudged channel is a much larger share of a small budget.
Then the report will show that plainly, and the size of it is worth knowing before you spend anything.
No. It reads an exported file, so your jobs, photographs and client records stay where they are.
Invoices with a client contact detail, the total and a date.
A quote is an intention. Ranking marketing on intentions rewards whichever channel produces the most hopeful ones.
Six months at minimum. One large installation can otherwise decide the whole ranking.
Yes, where you record it at the call. It is usually the largest source and the one no advertising report contains.
They are reported separately from first jobs, so the decision stays yours.
Direct / Unknown unless the van carries its own tracked number, which is cheap and worth doing.
Yes, where the export carries a category, and it removes most of the noise from a lumpy file.
Yes. Two files and an afternoon is the entire exercise.
Both are normalised and matched, and the report shows which key joined.
A contact detail, an amount and a date, plus a job category if you include one. No addresses required, no job photographs, no card data. Encrypted in transit and at rest and deleted with the import.
Revenue per acquired client by source, first and repeat work apart, and everything unmatched kept visible.
By trade
What the report looks like once the export is in, written for each one.
Other systems
Running more than one system, or comparing? The method is the same and the columns are not.
ServiceM8 and the other product names and logos on this page belong to their owners and are shown to identify the software a file comes from. CloseRev is not affiliated with or endorsed by them, and connects to none of them: it reads a file you export.
Start today
Nothing to install in ServiceM8, no API key, and no need to have been tracking anything until now. Last year works as well as this month.