“We would have to export from several places.”
Two files. Jobs from Service Fusion, leads from wherever they arrive. That is the whole input.
For Service Fusion
Export invoiced jobs, upload your calls and leads beside them, and get revenue by channel — split by the trade that earned it.
No API key Nothing to install in Service FusionNothing to install No card requiredNo card
CloseRev reads a Service Fusion export of invoiced jobs — the customer's phone or email, the amount and the date — and matches it against the calls and leads recorded outside it. It answers which marketing produced the work you billed for a company running several trades at once, where one blended cost per lead hides that a channel works for one trade and not another. Jobs that match nothing are reported as Direct / Unknown.
Last checked against Service Fusion's own documentation on September 24, 2026.
The gap
You run several trades off one phone number and one budget. The report you need is which channel works for which trade, and no system you own can produce it.
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 customer the job belongs to. Both are worth including — commercial customers give an email and residential ones give a phone.
What was billed for the job, after any change on site. Estimates are a different number and answer a different question.
When the work was billed or finished. On commercial work the gap from the lead can be considerable.
Whichever field separates your lines of work. It is the split that makes a multi-trade report worth reading rather than an average of unlike things.
Step by step
Written for somebody with Service Fusion open in the next tab. Report names vary by edition, so each step says what to look for.
One row per job with a customer contact detail, the invoice total and a date. Look for the export that lists jobs with what they billed.
If your account separates trades, that column is the most valuable optional field in this whole file. Without it a multi-trade business gets one average that describes none of its trades.
Call tracking, web forms, marketplace leads. Contact detail plus the source, campaign or keyword.
Commercial and replacement work lags the enquiry by weeks or months, and that is where the large invoices are.
The match runs on the phone and the email, normalised, and reports what it could not place rather than spreading it.
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 HVAC Companies page — not from a Service Fusion account.
| Channel | Share | Sales | Revenue |
|---|---|---|---|
| Google Ads | 38 | $241,400 | |
| Meta Ads | 24 | $61,600 | |
| Email marketing | 19 | $46,200 | |
| Direct / Unknown | 63 | $164,300 |
Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.
The argument
One phone number, one website, one budget, and three or four genuinely different businesses underneath: service plumbing behaves nothing like commercial HVAC, which behaves nothing like a remodel.
Every metric that reaches the owner is blended across all of them. A cost per lead of sixty dollars might be twenty in one trade and two hundred in another, and the decision that follows — spend more, spend less — is wrong for at least one of them.
Splitting invoiced revenue by trade and by channel is the report this business actually needs. It exists nowhere today because the trade is in the job system and the channel is in the ad platform.
Residential work converts in days and bills once. Commercial work goes through a walkthrough, a proposal and a purchase order, bills in stages, and can take a quarter.
Reported together over one month, the residential side looks efficient and the commercial side looks like it produces nothing. Extend the window and the ranking inverts, because the commercial jobs are larger.
The way through is a wide window and a split by customer type where the file carries one. A single number over a single month will mislead a multi-trade business more reliably than it informs it.
Service Fusion holds estimates as well as jobs, and it is tempting to attribute on them because they are closer in time to the marketing and there are more of them.
An estimate is a hypothesis. Half of them or fewer become work, the half that converts is not a random sample, and channels differ in which half they produce — one fills the pipeline with price shoppers and another with people who have already decided.
So the match runs on invoices. Where you want the estimate-to-invoice rate per channel, that is a second and genuinely useful report, and it is the ratio that separates a lead-generating channel from a customer-generating one.
Work booked as one thing frequently invoices as another and larger thing: a repair becomes a replacement, an inspection finds three problems, a single unit becomes the whole system.
Attributing the booked value rather than the invoiced value systematically understates the channels that produce homes and buildings with real problems, and flatters the ones producing cheap curiosity.
Matching on the invoice total is the correction, and it is usually worth several percentage points of apparent channel performance.
Fair questions
Two files. Jobs from Service Fusion, leads from wherever they arrive. That is the whole input.
Then the trade column in the job export is doing the separating, which is exactly what it is for.
That is the case this is built for. Widen the job file's window and the revenue the ad platform never saw appears.
No. It reads a file you exported; nothing holds a credential and nothing writes back.
Invoiced jobs with a customer contact detail, the invoice total and a date.
Invoices. An estimate is a hypothesis, and the channels that produce estimates are not the channels that produce paid work.
Yes, where the export carries a customer type or trade. For a multi-trade business it is the most valuable column in the file.
On the phone and the email, normalised on both sides rather than compared as strings.
Yes, if you upload both. It is the ratio that separates a channel producing leads from one producing customers.
Further than the lead file, and generously if you do commercial work — a quarter is not unusual there.
It counts, because the match reads the invoice rather than the booking. That is often several points of channel performance.
Direct / Unknown, and they stay there rather than being distributed.
It helps a great deal in a phone-led trade, but any lead file with a contact detail and a source works.
A contact detail, an amount and a date, plus a trade if you include one. No job notes, no photos, no payment methods. Encrypted in transit and at rest and deleted with the import.
Revenue by channel and by trade, the share matched, and everything unmatched reported as unmatched.
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.
Service Fusion 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 Service Fusion, no API key, and no need to have been tracking anything until now. Last year works as well as this month.