Invoiced value, not calls
Rank on invoiced revenue, so a single high-value job is not averaged away by the noise around it.
Marketing attribution for window and door companies
Match installed replacement jobs to the appointments, canvassing and ads that produced them.
$605,000 55% of $1,100,000 paid
The blind spot
This trade runs on in-home appointments. Setting one is cheap and easy to measure; closing one is neither, and channels differ enormously on which they produce.
What you get
Rank on invoiced revenue, so a single high-value job is not averaged away by the noise around it.
Time between the advertisement and the invoiced revenue is irrelevant to the match, which is the reason this works where tag-based tracking does not.
Nothing at all. The method reads exports, so there is no tag to maintain and nothing that can silently stop working.
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 | 29 | $286,000 | 26% | |
| Meta Ads | 26 | $253,000 | 23% | |
| Email marketing | 7 | $66,000 | 6% | |
| Direct / Unknown | 52 | $495,000 | 45% |
An in-home appointment costs a salesperson half a day. A channel that sets appointments cheaply and closes them rarely is more expensive than one that sets fewer and closes more.
Ranking on installed jobs makes that comparison directly, and it usually reorders the channels relative to a cost-per-appointment view.
Home shows, canvassing and neighborhood campaigns produce a real share of the work and are usually treated as unmeasurable.
Added to the lead file, each row tagged with its source, each becomes a channel like any other, comparable on the same basis as paid media.
Replacement window demand arrives as one undifferentiated stream of inquiries. Somebody with a single failed unit and somebody replacing every window in the house submit the same form, click the same advertisement and cost the same to acquire. What they are worth differs by an order of magnitude.
Because the spread is so wide and the volume is relatively low, an average job value across a month describes almost nobody. A handful of whole-home jobs will carry the period, and whichever channel happened to produce them will look transformative on a cost-per-lead view that cannot see unit counts at all.
Ranking on invoiced revenue handles it automatically, and exporting an unit count alongside the amount lets the report show revenue per lead rather than cost per lead — which is the number that actually decides where the next month's budget goes.
A large share of replacement window work is financed, and the finance decision happens after the contract is signed and before the job is installed. Approval rates are not uniform across channels: a source that reaches households with weaker credit profiles will produce contracts that do not convert into installations, and it will look identical to a better source on every sales metric.
Exporting installed and invoiced work rather than signed contracts is the correction, and it is a one-column decision. It also makes the report reconcilable to the company's own accounts, which is what allows the number to be repeated to an owner without being re-argued.
Most companies in this trade discover two things. The first is that their cost per lead has been stable for years while their cost per installed job has not, because lead quality drifted without anything in the reporting moving. The second is that one or two campaigns are producing nearly all the whole-home work while the rest of the budget produces single-unit inquiries at a similar cost per lead.
Neither is visible from an advertising account, because the advertising account cannot see the unit count or the invoice. Both are obvious the moment the installed work is ranked by the channel that produced the household.
The practical response is usually not to cut the weaker campaigns but to bid them differently and to stop judging the whole account against one blended cost per lead that was never describing more than half of it.
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 judgment, 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
Then the call center's list is your lead file, and the report shows which upstream channel produced appointments that closed.
Upload the canvassing list and it attributes like any other channel rather than disappearing into Direct / Unknown.
Export installed jobs only and the report reflects what actually happened rather than what was signed.
Pricing
The price here is the price on the invoice, plus any sales tax that applies — no per-call, per-minute or per-form fees. Growth usually fits replacement window and door companies — 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
$49/mo
billed monthly
Questions
Anything else? Talk to us — a person answers, usually the same day.
Installed jobs: a homeowner contact email or phone, the job value, and the installation date.
Upload appointments as the lead file and installed jobs as the sales file.
Yes — add those lists to the lead file, each row tagged as home show or canvassing.
Yes, with a product column — and it is worth adding, because a blended average across them describes none of them.
No, and that is deliberate: the smallest file that works is also the least you ever hand over.
Yes, with a territory column.
Yes. Most replacement window and door companies begin with last year, because it is the cheapest way to find out whether the exercise tells them anything.
Installed job rows analyzed in a calendar month. Appointment rows do not count.
Installed. Finance approval and cancellation rates differ by channel, and contracts hide that.
Yes, and in this trade it is the more useful number given how wide the spread of job values is.
Yes, with a product column.
Yes. It lets the report show whether a channel brings whole-home jobs or single replacements.
Twelve months at minimum; longer if you sell heavily on seasonal promotions.
Yes, in the lead file with walk-ins tagged as their own source, so they rank against paid channels honestly rather than sitting in the unattributed bucket.
Export on installed and invoiced work and the cancellation never appears at all. If you have already counted it, the corrected figure in next month's export puts it right. Cancellation rates differ by source more than most dealers expect, which is the argument for exporting the signed file and the installed file rather than only one.
Check it before you either believe it or dismiss it. Open the channel, read the installed jobs credited to it, and confirm the export covered the whole period. Long-running channels often look weaker than their reputation because the reputation formed when they were cheaper. The rows will show you which explanation fits.
Monthly, with the real reading at the quarter. Because you should be counting installed work, each month's figures describe demand from weeks or months earlier. Running monthly keeps the file current and cheap to produce; making the decisions quarterly keeps you from chasing a lead-time artefact around your advertising budget.
Each job on that number is credited automatically to the earliest inquiry carrying it; a shared number is not sent to review. An email address on the row is what separates two households, because email is checked before phone, so exporting both contact fields from your CRM is the single change that matters most here.
A month contains few installed jobs in this trade, so one large contract landing on either side of a month end can invert a ranking. Look at rolling three-month figures, and at the same period last year. Change what you spend when the pattern repeats, not when a single month disappoints you.
Nearby
Match signed and completed remodels to the inquiries, showroom visits and ads that produced them.
See how it worksMatch completed jobs and their revenue to the calls and campaigns that produced them, from a $180 spring to a $4,200 installation.
See how it worksMatch signed and installed contracts to the leads and ads that produced them, across a sales cycle that often runs months.
See how it worksWhere your sales already are
Export completed jobs from AccuLynx, upload the leads that produced them, and rank marketing on signed work rather than on inspections booked.
What to exportExport signed contracts from MarketSharp, upload every lead source behind them, and rank channels on contract value.
What to exportExport sold jobs from improveit 360, upload the leads behind them, and read each source against the stage where it fails.
What to exportExport your lead ads, match them against closed sales, and find out which campaigns produced customers rather than contact details.
What to exportExport signed work from Roofr, upload the leads behind it, and rank channels on contracts rather than on how many roofs you measured.
What to exportExport collected work from JobNimbus, upload the leads behind it, and rank channels on the stage that actually pays.
What to exportFrom the blog
Multi-crew home and field services businesses run on phone calls and job management software, not on web forms. Which means the standard marketing dashboard is measuring the smallest part of the business and missing where the money actually is.
Read the articleGoogle's Local Services Ads charge for the phone call, not the click, and they hand you the caller's number with the invoice. It is the easiest channel in the budget to attribute to closed revenue. Almost nobody does, because the lead inbox is not where the reports live.
Read the articlePeople save a kitchen, a garden or a wedding look on Pinterest months before they hire anybody. Pinterest's reporting looks back 60 days at most, and a save carries no name, phone or email. Here is what Pinterest's metrics and attribution windows actually measure, how to capture leads that can be followed to a sale, and how to price Pinterest by the customers it produced.
Read the articleStart today
Upload two exports and see your real revenue by channel in minutes. 14 days free, no card.