Ticket size, not call count
Rank channels by invoiced value so large jobs stop being averaged into invisibility.
For Plumbers
Match invoiced jobs to the calls and ads behind them, and separate the drain clears from the repipes.
No card required · Nothing to install · Cancel anytime
The blind spot
Emergency plumbing produces a lot of calls and a very wide range of tickets. A blocked toilet and a sewer line replacement arrive through the same ad, and cost per lead cannot tell them apart.
Rank channels by invoiced value so large jobs stop being averaged into invisibility.
See which channels bring emergencies and which bring scheduled, higher-margin work.
No tracking numbers to provision, no app for the crew. Two exports.
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 | 96 | $163,200 | |
| Meta Ads | 21 | $25,600 | |
| Email marketing | 14 | $19,200 | |
| Direct / Unknown | 88 | $112,000 |
Emergency search is where most plumbing ad budget goes, and it produces the most calls. It also produces the smallest average ticket, because someone with water on the floor wants the cheapest fix that works today.
The jobs that pay — repipes, sewer lines, water heater replacements, commercial contracts — often come from different searches and convert more slowly. Measured on call volume they look like poor performers, which is how budget ends up concentrated on the lowest-margin work available.
Lead resellers and directories all report the leads they sent. Matching those lists against your own invoiced jobs produces a single number per source that sums to the work you actually did — rather than several vendor reports that each claim the same customer.
Because only exact phone or email matches count automatically, a source claiming a customer it never sent has nothing to stand on.
"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.
They will appear as unmatched leads, which costs nothing against your limit — only invoiced jobs count. Seeing which channel produces shoppers rather than customers is usually the point.
They show as Direct / Unknown, which is honest. Repeat work is valuable and worth measuring; crediting it to this month's ads is not.
That works. Any layout, any column order — a phone or email, an amount and a date is all the match needs.
Flat monthly pricing with no per-call, per-minute or per-form fees. The number here is the number on the invoice. Most plumbers land on Growth.
A single business getting started
$49/mo
billed monthly
A business scaling ad spend
$199/mo
billed monthly
One business closing at volume
$499/mo
billed monthly
Reporting on many clients at once
$799/mo
billed monthly
Completed, invoiced jobs: customer phone or email, the amount, and the date.
Upload two exports and see your real revenue by channel in minutes. Three days free, no card.
Start free