LGG Media builds exclusive roofing leads on Google Ads for roofing companies spending $30,000 or more per month. No shared inquiries resold to four competitors. The bidding signal is the value of the job sold, so budget chases $20,000 replacements instead of cheap form fills.
"Cost per lead is irrelevant. What matters is cost per job sold," says Juan Colicchio, founder of LGG Media. LGG currently runs Google Ads for a roofing company and for roofing groups owned by private equity, typically at under $100,000 per month per geographic area depending on demand. Every one of those accounts is judged on one ratio: revenue from jobs sold against ad spend.
The lead-selling industry agrees on this in its own material. 99 Calls, a lead vendor, opens its 2026 roofing cost guide by telling contractors to stop judging price per lead and track cost per booked job instead, because two roofers can pay the same price per lead and get completely different costs per job. A cheap shared lead that four contractors are dialing can cost more per sold roof than an expensive exclusive one.
Every channel produces inquiries. The question that decides your cost per job sold is how much control the channel gives you over quality, and how fast it scales when a crew opens up or a storm rolls through.
Past customers and door-to-door crews produce warm, pre-sold homeowners at low cash cost. Neither scales on demand. When you add a crew or open a second branch, referral volume does not move with it, and canvassing scales only as fast as you can hire.
Hail and wind events create the highest-intent demand in the vertical, and the most volatile. Chasing it manually means reacting after the storm. Absorbing it automatically is a bidding problem, which is why this page treats storms as a budget-and-target design question, not a marketing sprint.
Vendors deliver fast volume, resold to competing contractors. You compete on speed to dial rather than on fit, and the vendor controls quality. The volume is rented, not owned, and the vendor's machine optimizes on a form fill it resells, not on your sold jobs.
Google Ads is the channel where budget, targeting, and lead quality respond within days, and where the value of a sold job can retrain the bidding directly. It is the channel this page describes.
The roofing groups LGG manages want a minimum return of 10 dollars for every 1 dollar of ad spend. On a $20,000 roof replacement, the maximum acceptable acquisition cost is $2,000. That single ratio decides every bid, every budget, and every campaign structure below.
The ratio only works if the ad platform can see the job value. Google Ads cannot see a signed contract on its own. The value gets back to bidding through offline conversion import: the click identifier is stored with the lead, and when the job sells, the sale and its dollar value are uploaded against that exact click. Google documents the mechanism in its offline conversion import guide. From there, Target ROAS bidding optimizes toward the searches most likely to produce job value at the ratio you set.
How much of that revenue is traceable back to a click is measurable, not aspirational: lead generation accounts in our 2026 attribution benchmark traced 95.9% of revenue to a click.
The mechanics behind the fix: offline conversion tracking → · Capturing the click identifier →
The build order never changes, in roofing or any other vertical we run. The tracking architecture comes first. Ads run second, to build conversion data. The bidding upgrades third, progressively, toward events that cannot be faked. The end state is a channel that can easily distinguish a high-ticket customer from a smaller one, because every bid is informed by cash collected or projected value.
Click identifiers captured on the first landing and persisted server-side, calls tracked and qualified, and the CRM wired to the ad account. No spend scales before this exists.
Campaigns run to accumulate real conversion history: which searches produce demos, which demos produce contracts, and what those contracts are worth.
Bidding moves off form fills and onto demos completed, then onto jobs sold. Each upgrade removes a class of junk the algorithm could previously buy.
Sold jobs flow back with their real dollar values, so the algorithm bids harder for the searcher who looks like a $32,000 replacement than for the one who looks like a $900 patch.
Form fills can be faked. Inbound calls can be misdials. When an account has no better data, Smart Bidding buys the conversions that are easiest to game, because those are the cheapest. Our roofing accounts bid on two events only: a demo completed, and a job sold with its real value attached.
A form submission proves someone typed. A completed demo or estimate appointment proves a homeowner sat with your salesperson. The demo is the earliest event in the pipeline that spam, bots, and quote collectors cannot produce, so it is the earliest event we let the algorithm learn from.
The primary conversion is the sold job, uploaded with its contract value. A $9,000 repair and a $32,000 replacement stop looking identical to the algorithm. Bidding holds the 10 to 1 ratio against real revenue, not against a count of inquiries.
Common advice says split residential and commercial into separate campaigns. Juan Colicchio runs them in one campaign with separate ad groups, bidding on conversion value, so Google can bid more aggressively when it perceives a larger job. Google's own documentation points the same way: it warns that per-ad-group targets restrict Smart Bidding, and states that performance generally improves with fewer, larger campaigns that get more conversions (About Target ROAS bidding).
Google's value-based bidding documentation requires conversion values greater than zero, and the values need to differ for the strategy to have anything to optimize. Flat values on every job turn Target ROAS into a conversion counter. Real contract values are what let one campaign serve two job sizes.
The account-wide negative list keeps self-service and research traffic from ever touching the budget: how-to queries, cost calculators, DIY shingle guides, insurance-claim paperwork searches. What remains is a homeowner with a damaged or aging roof looking for someone to fix it.
Repair and replacement live in separate ad groups inside the one campaign, because they carry different values, and the conversion value tells the algorithm which is which. The private-equity groups we manage run a budget per geographic area, typically under $100,000 per month each depending on demand, with the same methodology in every market. A new branch gets the same architecture, the same events, and its own budget. Nothing else changes.
A hail event can triple roofing search volume in a day. The operator playbook on LGG's roofing accounts: leave the budget more or less uncapped, with a Target CPA or Target ROAS in place. The campaign only spends within the target's constraint, and it expands automatically whenever the demand shows up. No one has to notice the storm and raise a budget at 7 a.m.
The documentation squares with the practice, with two mechanics worth knowing. Google states that campaigns can spend up to 2 times the average daily budget on a given day, while over a month you are not charged more than the daily budget across 30.4 days (About Target ROAS bidding). So "uncapped" in practice means a daily budget set high enough that the target, not the budget, is the binding constraint. And since August 17, 2026, Google delivers budget-limited target campaigns more consistently toward the target you set (Changes to target based bid strategies), which makes the headroom approach cleaner: a campaign that never hits its budget ceiling never enters the budget-limited state at all.
The same documentation carries the warning that makes this safe: a target set too high limits traffic on its own. The target is a real constraint, which is exactly why the budget does not have to be.
Juan Colicchio's threshold is specific: he does not recommend buying roofing leads if the contractor can dedicate at least $500 per day to Google Search. Below that line, a company does not have the volume to train value-based bidding, and a lead package is a rational way to keep the crews booked.
If you buy anyway, hold vendors to the same math you would hold your own campaigns to: a 10 to 1 return or better on the jobs those leads produce. Published per-lead prices ran from roughly $25 to $200 for shared roofing leads and $40 to $550 for exclusive ones in 2026, and none of those numbers means anything until it is divided by your close rate and compared to the job's value.
The provider landscape, with published pricing → · Exclusive vs shared roofing leads →
The expensive mistake in this vertical is not a bad keyword. It is launching a Performance Max campaign before the account has mature conversion data. On one account, a Performance Max campaign launched prematurely and drove cheap form fills instead of optimizing toward demos completed or cash collected.
The mechanism is predictable. Performance Max is a goal-based campaign type that optimizes toward the conversion goals you define across all of Google's inventory (About Performance Max campaigns). Feed it a goal a bot can complete, and it will find bots at scale, because those conversions are the cheapest available. When you do not have data, the easiest conversions are the ones that can be faked or gamed: inbound calls, form submissions. The goal is always to bid on something that cannot be faked. Performance Max earns a place in a roofing account only after the job-sold signal exists to point it at.
No. Every lead is generated exclusively for your company through your own ad account, with your brand on every ad and landing page. You own the account, the data, and the machine. A homeowner who called off your own ad has already chosen you, which is not true of an inquiry resold to four contractors.
Search campaigns capture homeowners typing repair and replacement queries in your service area. The difference between profit and waste is the conversion signal: accounts that bid on form fills buy cheap inquiries, and accounts that bid on demos completed and jobs sold with real values buy revenue. The click identifier plus offline conversion import is what connects a signed contract back to the ad click that produced it.
Vendor-published 2026 figures run roughly $25 to $200 per shared lead and $40 to $550 per exclusive lead, depending on market and job type. The number that decides profitability is cost per job sold: divide the lead price by your close rate and hold the result against the job's value. LGG's roofing accounts target a maximum acquisition cost of one tenth of the job value, so $2,000 on a $20,000 roof.
Our operator position is no: one campaign, separate ad groups, bidding on conversion value, so the algorithm can bid harder when it perceives a larger job. Splitting divides the conversion data that Smart Bidding learns from, and Google's documentation notes that performance generally improves with fewer, larger campaigns.
Nothing manual. The budget carries headroom and a Target CPA or Target ROAS does the governing, so the campaign expands into storm demand automatically and only within the target's constraint. Google caps any single day at 2 times the average daily budget and caps the month at 30.4 times the daily budget, so headroom is not a blank check.
$30,000 per month in ad spend, month to month, no long-term contract. Below roughly $500 per day on Google Search, we would tell you honestly that a lead package is the more rational buy until your volume can train value-based bidding.
Platform mechanics: Google Ads Help, About offline conversion imports, About Target ROAS bidding, About Target CPA bidding, About Smart Bidding using value-based bidding, Changes to target based bid strategies, and About Performance Max campaigns. Market lead pricing: 99 Calls, Roofing Lead Generation Costs in 2026, retrieved September 2026. Operator guidance on this page comes from LGG Media's active roofing accounts and is labeled as such.
Next Step
Send us the account. We will show you what your conversion events are teaching the algorithm and what job-value bidding would change. Minimum $30,000 per month in ad spend. Month to month, no lock-in.
Request a Discovery Call