Key Metrics Every General Contractor Should Monitor to Stop Wasting Ad Spend
Which of last month’s closed jobs came from paid search, and which came from a referral that happened to click an ad on the way to calling anyway? Most contractors approving marketing invoices cannot answer that question with any confidence, and the ones who think they can are usually going on gut feel dressed up as a report.
That gap is expensive in a specific way. It is not that the money disappears. It is that nobody can say what it bought.
How Much Marketing Spend Is Producing Traceable Revenue?
A general contractor signing off on a marketing budget is really approving a chain of five records:
- campaign cost
- lead source
- lead qualification
- closed job
- attributed revenue
If any link in that chain is missing, the number at the end, whatever it claims to be, cannot be trusted.
Lead volume by itself proves nothing.
Forty leads from a campaign that closes two jobs at a loss is a worse outcome than twelve leads from a campaign that closes six at full margin, and volume reporting alone will show the first campaign as the stronger performer.
Two records prevent that mistake. One is marketing spend, tracked completely, not just the media buy but the management fee, the landing page cost, and anything else that had to be paid to generate the lead. The other is digital marketing attribution: the connective tissue that ties a specific dollar to a specific lead to a specific job.
Reviewing return on investment monthly, rather than waiting for an annual rollup, lets a contractor reallocate budget before a full year of spend has gone to a channel that was never going to pay for itself.
A quarterly glance at lead counts is not a substitute for that discipline. It just delays the discovery of a problem that was visible from week three.
Why Can a Low Cost Per Lead Still Waste Ad Spend?
A cheap lead and a profitable job are not the same claim, and treating them as interchangeable is where most contractor marketing budgets leak. Cost per lead measures how much was spent to generate an inquiry. Cost per acquisition measures how much was spent to generate a signed contract. Everything between those two numbers, qualification and close rate, decides whether the campaign that produced the cheapest leads was actually the cheapest way to win work.
| Metric | What It Actually Measures | What It Misses on Its Own |
|---|---|---|
| Cost per lead | Spend divided by raw inquiries generated | Whether the inquiry was ever a real buyer |
| Cost per acquisition | Spend divided by signed, closed jobs | Needs close rate to explain the number |
| Close rate | Closed jobs divided by qualified leads | The dollar value of what actually closed |
| Average job value by source | Total revenue by channel divided by jobs won | Whether that revenue justified the spend |
A campaign producing leads at a fraction of another channel’s cost can still be the more expensive channel once close rate and average job value are applied. Cheap, unqualified traffic inflates the lead count and deflates the apparent cost per lead, right up until those leads fail to close and the real cost per acquisition surfaces. By then the invoice has already been paid.
What Must Be Captured Before Digital Marketing Attribution Can Be Trusted?
Attribution is not a report generated after the fact. It is a set of habits enforced before the campaign runs, and skipping any one of them breaks the chain that connects spend to revenue. Five things need to be in place before a monthly review means anything.

- UTM parameters on every campaign link, so a click can be traced to the exact ad, ad group, and platform that produced it.
- Tracking pixels installed for the platforms actually running paid campaigns, so post-click behavior is visible past the initial landing page.
- Trackable phone numbers or equivalent call tracking, since a large share of contractor inquiries still arrive by phone and a generic office line erases the source entirely.
- Lead-source fields required in CRM software, not optional, so a sales rep cannot save a lead without recording where it came from.
- A reporting dashboard that reconciles those sources against spend on a schedule, rather than leaving reconciliation to whoever remembers to run it.
Which Campaign Details Belong in Every Lead Record?
Every lead entering the CRM needs the campaign name, the platform, the UTM string or call-tracking number that produced it, and the date. Without those four fields attached at intake, the record can be repaired later, but usually is not, and a lead with no source becomes a lead the reporting dashboard silently drops from every channel calculation.
How Does a Closed Job Return to Its Original Source?
The lead record has to stay attached to the opportunity as it moves through estimating, contract signing, and invoicing, so the revenue figure that eventually lands in the accounting system can be traced back to the same campaign that generated the original inquiry. If the CRM and the accounting software do not share that link, someone has to reconcile it manually, and that reconciliation is where most attribution actually breaks down.
How Is Contractor Marketing ROI Calculated From Closed Jobs?
With the attribution chain intact, the calculation itself is simple. Marketing return on investment is figured as (revenue – marketing spend) / marketing spend, using only the revenue that the attribution record can actually trace back to that spend, not total company revenue for the period.
Consider a hypothetical paid search campaign for a general contractor, tracked over a single month. Total spend, including media cost and management fee, comes to $6,000. The attribution chain, built on UTM-tagged links and call tracking, traces four closed jobs to that campaign, with signed contract values totaling $54,000.
Here is how that record turns into a decision:
- Apply the formula: ($54,000 – $6,000) / $6,000, which returns 8, or an 800 percent return on that campaign’s spend for the month.
- Check that marketing spend was scoped correctly: the media buy, the agency or platform management fee, landing page or creative production costs tied to that specific campaign, and any call-tracking or software fees allocated to it, excluding general overhead that would exist with or without the campaign.
- Check that revenue belongs in the numerator only where the attribution record connects it to that spend. A job that closed the same month but came from a referral, and merely clicked a paid ad at some point, does not belong in that campaign’s revenue figure.
- Cross-check the result against cost per lead, cost per acquisition, close rate, conversion rate, and average job value by source before treating the ROI number as final.
That 800 percent figure looks decisive, but it is only trustworthy because of the work done earlier. Counting revenue that was not actually earned by the campaign inflates the ROI number and hides the fact that the paid channel did less work than the report claims.
ROI answers whether the channel made money. The other five metrics explain why, and without them a contractor sees the score without seeing which part of the game produced it. A campaign with strong ROI but a collapsing close rate is a campaign heading toward a worse number next month, and the aggregate ROI figure will not warn anyone in advance.
Which Metrics Show Whether a Channel Deserves More Budget?
A channel earns a budget decision only after its full source-to-close record exists: spend, lead source, qualification, closed job, and attributed revenue, all reconciled. Skipping straight to a reallocation decision based on lead count or cost per lead alone is the same mistake in a different month.
- Local SEO and Google Business Profile activity typically carries low direct spend, but its cost per acquisition depends entirely on close rate, and the revenue it produces is only traceable where call tracking or UTM tags have actually been applied. The right move there is to hold the channel steady until attribution is complete, then evaluate.
- Google Local Service Ads run on a pay-per-lead cost structure, with cost per acquisition varying by how well leads are qualified, and revenue traceable through platform lead data combined with CRM close records; a channel like this earns a scale-up only once CPA and close rate both hold steady across multiple months.
- Google Search Ads track cleanly through UTM parameters and pixel data tied to CRM-linked closed jobs, which makes it possible to reallocate away from specific underperforming ad groups rather than cutting the whole channel.
- Any other tracked campaign falls somewhere in between: traceable only if the same tagging discipline was applied from the start, and worth investigating before a decision gets made, since incomplete records are not a performance verdict.
Reallocating budget toward a channel with strong ROI and a stable close rate is a reasonable next step. Holding spend on a channel with incomplete attribution is not caution for its own sake, it is refusing to make a budget decision on a record that cannot support one.
Cutting a channel because its raw lead count looks weak, without checking whether its close rate or average job value is actually higher, repeats the exact error the whole measurement chain exists to prevent.
What Should Be Checked Today Before Changing Campaign Spend?
Before any budget gets moved, the underlying records need to be confirmed, in order of how much damage a gap in each one can cause.
What Do the 70-20-10 and 3-3-3 Rules Mean for a Marketing Budget?
These come up often enough in budget planning conversations to name them, but no substantiated universal definition or threshold for either rule is established here, and neither should override a specific campaign’s own recorded spend, revenue, and ROI.
Is a 2% ROI Good?
That depends entirely on the industry, the job type, and the margin structure behind the number, none of which is established here as a fixed threshold. A contractor’s own recorded ROI, calculated from its own attribution chain, carries more weight than any external benchmark applied without context.
Run through this list against the CRM and the accounting system before touching a single campaign’s budget:
- [ ] Attributed closed-job revenue is confirmed traceable to a source, not assumed.
- [ ] Total marketing spend for the period is confirmed complete, including fees and production costs, not just media buy.
- [ ] Every lead record carries a source field, with no blank entries treated as acceptable.
- [ ] Cost per acquisition and close rate are calculated by source, not blended across channels.
- [ ] The ROI formula, (revenue – marketing spend) / marketing spend, has been run per channel.
- [ ] The hold, scale, or cut decision is documented against those figures, not against instinct.
