Some of your junk leads come from settings an ad platform picked for you. When we set up Google’s Local Services Ads (LSA) for a DFW roofing client in August 2026, the signup had already ticked work the company doesn’t do: skylight installation, skylight repair, commercial projects, and home building and remodeling. It also drew a service area of about seven million people, reaching 40 miles out. Google no longer credits leads for job types or areas you don’t serve, so those defaults buy leads you can’t work or get credited. That was one account on one date, so check your own.
Owners who post about junk leads name job seekers, people asking for a free roof, vendors selling something and wrong numbers. A marketer on r/localseo who took over one roofer’s account adds out-of-area homeowners, renters, handyman requests and free-estimate seekers with no plan to buy. Each kind points to something you can check before you drop a lead source: who your ads reach, whether your forms screen out fakes, which calls never came from an ad, and how fast your office calls back.
I found no industry-wide figure for the share of roofing leads that are junk, and we haven’t measured it for any client. The nearest thing is a Florida roofer who has used LSA since it launched. Once Google moved to AI lead scoring, they wrote on r/Roofing in October 2026, more than two thirds of their paid leads were junk, and the average lead price rose to nearly $250.
Google filters bad clicks and leaves fake form fills to you
Google doesn’t charge for invalid clicks, including bots and manual clicks meant to run up your costs. In Google’s words, though, its filters “don’t prevent invalid leads on their own,” so bots and people can still submit fake forms, and “high lead quality is a shared responsibility.”
Google tells advertisers to put reCAPTCHA (the “I’m not a robot” check) on the form and have people confirm through a link sent to their email. It also says to have your site check that the email domain is valid and the phone number fits the regional format. A website form that sends whatever anyone types straight to your phone runs none of those checks.
A new Google Ads campaign starts on settings that reach past your customers
Someone running ads for a roofing company on only a few ZIP codes, with income targeting, wrote on r/PPC in 2024: “Leads are looking for jobs and free roofs, though these are not at all part of what we offer.” They switched off search partners and display, and the thread doesn’t say whether that helped. Check these in your campaign settings:
- Search partners. Search campaigns include them by default, and you can’t see which partner sites ran your ad. Google warns their clicks “may not always reflect highly targeted traffic.” Turn them off under Networks.
- Broad match. Every new keyword starts on it, and Google says it can show ads on related searches that don’t carry your keyword’s direct meaning, which for a roofer can mean people hunting for roofing work.
- Location. Targeting starts on “Presence or Interest,” which adds people who’ve only shown interest in your area. I can’t prove that causes out-of-area leads, but if yours come from outside your area, switch to “Presence,” which reaches people in or regularly in it.
- Display Network. Checking this box under Networks puts a Search campaign on “more than 3 million websites, videos, and apps.” I couldn’t confirm whether it comes ticked, so look. A roofing and siding advertiser paying about $15 a click says spam form fills jump tenfold or more whenever display runs.
A negative keyword for “jobs” lets “job” through
Negative keywords don’t match close variants. In Google’s example, excluding “flowers” keeps your ad off “red flowers,” while it can still show on “red flower.” So a negative for “jobs” leaves “job” open, and job, jobs, hiring and free roof each need a line of their own, plus whatever else your junk keeps asking for.
The search terms report won’t show every search either, since Google lumps low-volume searches under “other queries” for privacy. A marketer for a roofing and siding company wrote on r/PPC that the budget was going to job seekers and vendors, adding, “I look at the search terms and everything looks good.” My guess is the job searches hid there, though I can’t check that account, so add the job words before they show up.
Google screens out more junk once it knows what a real lead is
Bidding toward a goal such as “qualified lead” or “book appointment” switches on Google’s invalid-traffic protections built for lead generation. Google wants that goal reached at least 15 times in the last 30 days, with your own records of which leads qualified uploaded regularly, ideally daily. A small roofer may not get 15 qualified leads a month, which puts this fix out of reach.
Google’s lead forms on Search campaigns can also carry a required multiple-choice question, and anyone who picks the answer you mark as qualifying counts as a qualified lead. Ask whether they own the home, and a renter who answers honestly won’t count as qualified.
Google Ads also records calls by default, on US and Canadian numbers through its forwarding number, and has AI drop robocalls and misdials from your conversions. Turn recording off and Google falls back to call length, so a long wrong number counts as a conversion.
All of this needs tracking that records leads in the first place. On September 19, 2026, a roofing client’s Google Analytics had recorded 715 visits since August 1 and not one form fill or call, because of a bug in our website template that we’ve since fixed. How to Track Which Marketing Brings In Your Roofing Jobs covers the setup.
LSA charges for price shoppers and callers who never pick up
Google checks each LSA lead when the customer makes contact and doesn’t charge for one it judges invalid or low quality. Its models recheck the leads you paid for and may credit some automatically, usually within 30 days, though the original charge still shows on your invoice. Until October 2026, its help page listed the ones it wouldn’t credit, and they read like an owner’s junk list:
- a customer researching prices
- a customer who “didn’t respond to your return call or message”
- a lead that came in outside your business hours
- a job you don’t do that falls under a general service type on your profile
For leads you don’t want, Google tells you to “revisit your service areas, job types, and categories.” Our client’s Business Profile also listed General Contractor and Painter, and LSA kept asking for a bid on both after we unticked every service under them. We haven’t confirmed whether leads flow to a category with nothing ticked, so check your profile’s categories before you set a budget.
You can also rate a poor lead in its feedback survey, and Google says it “may also occasionally credit” those. Every LSA call through Google’s forwarding number is recorded in the US and Canada, and you can play it from the lead inbox to tell a vendor pitch from a homeowner. I found no way to submit a recording as evidence.
For our DFW client in September 2026, Google set a $327 weekly floor, with a $1,421 monthly maximum, and projected three leads a week before any had been billed. That works out to about $109 a lead, so each junk call left on the bill would cost about that much. Google Local Services Ads for Roofers: Budget, Cost per Lead and Disputes covers the budget and LSA’s move into Google Ads, which began for US roofers in August 2026.
Meta’s phone check can stop the fake leads and the real ones
Meta’s “Higher intent” instant form adds a review step that Meta says “gives people a chance to confirm their information.” Meta also texts a passcode that it says filters out spam bots, and that check “may be enabled by default for eligible advertisers.” Someone who enters a landline can’t submit the form at all.
A roof repair advertiser on Meta wrote in 2025 that the early leads were wrong numbers, so they switched on text verification, and the leads stopped entirely. I couldn’t find a figure from Meta for how many real leads the check blocks, so try it on one campaign before the rest. If your Meta leads dry up overnight, check whether it got switched on.
Some of the junk you’re counting never came from an ad
Google itself may call your Business Profile number with automated, recorded calls that check prices and hours or book appointments for customers. In the US that runs in every state except Indiana, Louisiana, Minnesota, Montana and Nebraska. Scammers also call claiming to work “with Google” to sell marketing, and Google says it will “never ask you for payment information over the phone.”
An owner on r/RoofingSales sends missed calls to a Google Chat group for project managers to return, and says about a quarter become leads. “There is a lot of fluff in there (wrong numbers, insurance adjusters, vendors, marketing, etc.),” that owner wrote. Calls like Google’s and the scammers’ never came through an ad, so leave them out when you judge what an ad brought in.
Some junk comes from marketers, us included. Before September 18, 2026, test fills of forms on sites we’d built reached two businesses as real leads, and we now route every test to ourselves. If a strange lead lands the day your marketer changes your site, ask them about it first.
A lead returned three days later looks like junk
Coaches who train marketing agencies for contractors tie part of the bad-leads complaint to slow callbacks. One described a roofer who took three or four days to return leads and then called them bad. An owner on r/marketing described the other side: when they call back, the lead doesn’t answer, so they can’t tell a real inquiry from spam.
Calling back is also how you learn which junk you have, since the r/localseo marketer only found the renters once the owner started calling. On LSA, a homeowner who never answers your callback stays charged however fast you called. Missed Calls Cost Roofing Jobs: How Fast to Answer and How to Follow Up covers the callback side.
Sort one week of leads before you change a setting
Log every lead for a week with where it came in and what it turned out to be, because each kind points to a different fix:
- Job seekers and “free roof” requests: a negative keyword for each variant, and your search partner and display settings.
- Homeowners outside your area: the location setting in Google Ads and the service area in LSA.
- Jobs you don’t do: your LSA job types and your Business Profile’s categories.
- Fake names and dead numbers on forms: reCAPTCHA and email or phone checks on your site, and verification on Meta.
- Vendors and robocalls, Google’s included: your call recordings, before anyone counts those calls as leads.
- Homeowners who never answer: how long your office takes to call back.
Then divide what each lead source cost by the signed jobs it brought in, since that’s the number junk drags down.
If junk is pushing you off paid ads, check where your Google profile already shows up without paying per click. Run the free Google Maps heatmap, pick your profile and a search, and in a few minutes you’ll see your rank at 49 points around your office.