Ranked by invoice value
A channel that produces four replacements beats one producing forty service calls, and the report says so.
For Home Services
Match your invoiced jobs to the calls and ads that produced them, and find out which channel is actually paying for the trucks.
No card required Nothing to install Cancel anytime
$323,100 68% of $475,200 paid
The blind spot
The phone rings all day. Some of those calls are a $28,000 system replacement and some are a filter someone could have bought online, and your ad report treats them identically.
What you get
A channel that produces four replacements beats one producing forty service calls, and the report says so.
Compare August to August, not just to last month, so a summer spike is not mistaken for a winning campaign.
No numbers to provision, no app for the crew. Two exports from what you already run.
A worked example
Not impressions, not leads, not cost per click. Closed revenue, by the channel that produced it, for a period you choose — with the portion we could not trace shown rather than quietly shared out across your paid channels.
| Channel | Sales | Revenue | Share | % |
|---|---|---|---|---|
| Google Ads | 54 | $218,600 | 46% | |
| Meta Ads | 29 | $66,500 | 14% | |
| Email marketing | 17 | $38,000 | 8% | |
| Direct / Unknown | 71 | $152,100 | 32% |
Home services has the widest spread between a small job and a large one of almost any local industry. A drain clear and a sewer line replacement come from the same phone number and the same ad, and averaging them together tells you nothing you can act on.
Ranking channels by invoiced value rather than call count usually reorders them. It is common for a channel producing a third of the calls to produce most of the revenue, and for the channel everyone assumed was best to be producing volume at the bottom of the ticket range.
A furnace that fails in January produces a call within the hour, and click-based attribution handles that case fine. The problem is the other half of the business: the quote given in October that is approved in March, the maintenance customer who comes back for a replacement two years later.
Because CloseRev matches on the customer rather than a browser session, both cases work the same way. The March approval is credited to the ad that produced the October call, which is usually the difference between a channel looking break-even and looking like your best one.
Why it matters
"We generated 400 leads" invites an argument. "This channel closed $186,400 last quarter, here is the reconciliation" ends one. The teams that can show closed revenue by channel are the teams that get the next increase approved, because they are asking with evidence rather than with conviction.
Killing spend is politically harder than adding it, because someone always owns the channel being cut. A number that reconciles to the sales export takes the argument out of the room — you are not overruling a colleague's judgement, you are reading the same ledger they are.
Platform-reported conversions do not reconcile to revenue, and eventually someone in finance notices. Reporting built from your own closed-sales export starts from the number finance already trusts, which is why it holds up when it is checked.
Because this reconciles exports rather than tracking visitors, it works on months that have already closed. You are not instrumenting now to learn something in ninety days — you can answer for last quarter today, which is usually when the question is being asked.
Honest answers
Any layout works. You need a customer phone or email, the invoiced amount and a date — most systems' invoice or job-completion report already produces exactly that.
Then it should show as Direct / Unknown rather than being credited to whichever ad ran that month, which is what most tools do. Repeat work is a real and valuable channel; it just is not paid media, and mixing them makes the paid numbers useless.
Good — its export is one of the two files. A call tracker tells you the call came from Google Ads; CloseRev tells you that call became a $28,400 replacement.
Pricing
The number here is the number on the invoice — no per-call, per-minute or per-form fees. Most HVAC, plumbing, roofing and remodeling companies land on Growth — thirteen months of history to compare a month to the same month last year, and a PDF you can put in front of whoever holds the budget.
A business scaling ad spend
$199/mo
billed monthly
Questions
Anything else? Talk to us — a person answers, usually the same day.
Completed, invoiced jobs: a customer phone number or email, the amount, and the date. ServiceTitan, Housecall Pro, Jobber and similar all produce this as a standard report.
Yes — include a job-type column and the report breaks down by it, so you can see that Meta produces maintenance and Google produces replacements.
Yes, with a location column. This is often where the surprise is: a channel that works in one service area does nothing in another.
Compare any two ranges, including the same month last year. Comparing August only to July in this business tells you about the weather, not about your marketing.
No. No numbers, no minutes, no per-form fees. That is the main reason the bill is predictable compared with a call-tracking platform.
As far as your exports go. Nothing had to be installed at the time, so last year's season can be analysed today.
Email catches many of these, and both files are matched on phone and email. A near-match becomes a review item rather than counting automatically.
Yes, either invited into your workspace or from their own Agency account.
Nearby
Match delivered vehicles and front-end gross to the calls, forms and ads that produced them.
See how it worksMatch your clients' closed-sales exports to their ad and call data, and hand them a per-channel revenue report at renewal time.
See how it worksMatch closed transactions and commission to the enquiries and ads that produced them, however many months earlier that was.
See how it worksStart today
Upload two exports and see your real revenue by channel in minutes. Three days free, no card.