How to Dispute Bad Local Services Ads Leads for Roofing (and Stop Paying for Junk)
On this page
If you run Google Local Services Ads for a roofing company, you already know the math is supposed to be simple: a homeowner taps your ad, Google charges you for the lead, you close a job, everyone wins. The reality is messier. Some weeks half the charges are for wrong numbers, spam, people calling about gutters you don't clean, tenants who can't authorize a roof, or a homeowner two states outside your service area who fat-fingered your listing. Each one of those is money out of an account you fund up front, and most roofers either don't dispute them at all or dispute them so sloppily that Google denies the credit.
This is a fixable problem, and it's worth real money. A small residential roofer spending $4,000 a month on Local Services Ads with a $35–$80 average charge per lead can easily have 15–30% of charges fall into a disputable category in a heavy storm month. Recovering even half of that is a few thousand dollars a quarter that goes straight back into your ad budget or your pocket—without you closing a single extra job. The roofers who win at this treat lead disputes as a standing operational habit, not a one-off complaint. They know exactly which leads qualify, they capture the evidence in the first 60 seconds of the call, and they file inside the window with a tight reason.
Below is the full operating procedure: how Local Services Ads charging works for roofers, what Google will and won't credit, the exact evidence to capture, the step-by-step dispute workflow (web and app), how to handle bulk disputes during a storm surge, what to do when a credit is denied, and—most importantly—how to stop the junk at the source so you're not playing defense every month. There's also an honest look at where a targeting and lead-tracking platform fits, because disputing is only the cleanup; the bigger lever is buying fewer bad leads to begin with.
First, get the terms straight: LSA, Google Guaranteed, and what "bad" actually means
Local Services Ads (LSA) are the box of provider listings that show up at the very top of Google search results for queries like "roofer near me" or "roof repair [city]." They sit above the regular pay-per-click ads and the map pack. For roofing, you typically carry the Google Guaranteed badge, which requires a background check and license/insurance verification, and which backs the homeowner with Google's money-back guarantee on the work quality (not on your sales process).
The critical difference from regular Google Ads: with LSA you pay per lead, not per click. A "lead" is a phone call long enough to count, a message, or a booking that comes through the ad. Google decides what counts as a billable lead based on the interaction, and that's exactly where disputes live. You are not disputing whether someone clicked—you're disputing whether the contact Google charged you for was a legitimate roofing inquiry from someone in your service area for a service you offer.
When roofers say "bad lead," they usually mean one of several very different things, and only some are creditable:
| What you call it | What it actually is | Creditable? |
|---|---|---|
| "They never picked a service I do" | Job type outside your selected services (e.g., gutter cleaning, solar) | Usually yes |
| "Wrong area" | Geography outside your set service area | Usually yes |
| "Spam / robocall" | Spam, telemarketer, or bot | Usually yes |
| "Wrong number / butt dial" | Caller didn't intend to reach you, no service discussed | Often yes |
| "Tenant, not the owner" | Caller can't authorize roof work | Sometimes |
| "They ghosted me" | Real, in-area inquiry that didn't answer follow-up | No |
| "Price shopper / didn't buy" | Real inquiry, just didn't close | No |
| "Competitor pretending to be a customer" | Hard to prove; treat as spam if provable | Sometimes |
That last column is the whole game. Google credits leads that were not valid inquiries for your business—wrong service, wrong area, spam, or no real conversation. Google does not credit leads just because the homeowner didn't hire you. A real person in your area who asked about a roof replacement and then went with your competitor is a billable lead, full stop. Trying to dispute those is how roofers train Google's review system to distrust their disputes. Be disciplined about the line.
The categories Google will actually credit (with roofing examples)
Google's lead-crediting policy is broad in spirit but specific in application. Here are the categories that hold up, with the way they show up in a roofing inbox.
1. Job type / service mismatch
You selected "Roof Repair" and "Roof Installation/Replacement" as your services, and the caller wants their gutters cleaned, a skylight installed by a glazier, solar panels, or a chimney rebuild. If the requested work is genuinely outside the services you offer through your LSA profile, it's creditable.
Roofing nuance: be careful here. "I need my gutters looked at because water's getting behind the fascia" can absolutely be a roof job. Don't dispute work you actually do or could quote. The clean disputes are the ones where you'd refer the caller out entirely—pure gutter cleaning, HVAC, siding-only if you don't do siding, masonry chimneys, etc.
2. Geography outside your service area
The caller's property is outside the service area you defined in LSA. A homeowner 90 miles away who found your listing, or someone in a neighboring state. The dispute is strongest when you capture the property ZIP or city on the call and it's clearly outside your set radius.
Roofing nuance: if you take jobs outside your set area sometimes (storm chasing two counties over), don't dispute geography—you'll contradict yourself. Keep your LSA service area honest and matched to where you actually want work.
3. Spam, robocalls, and bots
Telemarketers, SEO pitches, "we can get you more leads" calls, recorded messages, and obvious bots. Also messages that are clearly automated spam. These are clean disputes when you note the spam content.
4. No genuine interaction / wrong number
The call connected but there was no real conversation—immediate hang-up, dead air, a wrong number, a misdial, or someone who clearly meant to call a different business. Google can usually verify short or no-content calls from the recording and metadata.
5. Duplicate / same customer charged twice
The same homeowner contacts you twice (call then message, or two calls) within a short window and you're billed for both. Duplicates within the policy window are creditable. Capture name and phone number both times so you can point to the match.
6. Customer never intended to contact you
Mis-taps where the homeowner meant to call someone else and says so. "Oh, sorry, I was trying to reach a plumber" is creditable and easy to verify on the recording.
What you'll notice across all six: they're verifiable from the call recording, the message thread, or the lead metadata Google already has. That's the secret to a high credit-approval rate—only dispute things the reviewer can confirm without taking your word for it.
What Google will NOT credit (stop wasting dispute slots on these)
Every denied dispute is friction, and a pattern of bad disputes can make the review system stingier with you. Don't file on:
- A real, in-area homeowner who didn't book or didn't buy. Price shoppers, "just getting quotes," people who went with a cheaper bid—all billable.
- Ghosting. They inquired, you called back three times, they never answered. Still a real lead. (This is a sales/speed-to-lead problem, not a billing problem.)
- "Bad fit" judgments. Caller's roof is too small a job, they wanted a repair you don't like doing, they were rude. Billable.
- Insurance / claim shoppers you choose not to serve. If they have a storm-damaged roof in your area and asked about a roof, that's a valid roofing inquiry even if you don't want claim work. The mismatch has to be in the service you offer, not your preference for that customer.
- Leads you simply lost track of. If your office didn't answer and can't say what the call was about, you have no evidence and no grounds.
A blunt rule of thumb: if a competent reviewer listened to the recording, would they agree this wasn't a legitimate roofing inquiry from your area? If yes, dispute. If you're hoping they'll just believe you, skip it.
The evidence habit: win the dispute in the first 60 seconds of the call
The single biggest predictor of whether your disputes get approved is what your front-desk person does during the call, not what you do later in the dashboard. Reviewers approve clean, specific, verifiable disputes and deny vague ones. So build the evidence at the moment of contact.
Train whoever answers the phone (or runs the message inbox) to capture five things on every LSA contact, every time:
- Caller name and call-back number (even if it's on the recording—write it down).
- Property address or at least ZIP/city. This is the geography proof. "What's the address of the home?" should be the second question after the greeting.
- The actual service requested, in the caller's words. "Gutter cleaning," "solar," "roof leak," "full replacement."
- Owner vs. tenant / decision authority. "Are you the homeowner?" One question, huge dispute value for tenant calls.
- A one-line outcome tag: spam / wrong number / out of area / wrong service / real lead / booked.
If your phone system records calls, confirm recording is enabled and retained at least 60 days. The recording is your best evidence because it's neutral—Google's reviewer hears the spam pitch or the "I wanted a plumber" themselves. For message leads, screenshot or export the thread; don't rely on it staying visible.
A simple call card your team fills out (paper or a pinned form) for every LSA call pays for itself:
LSA CALL LOG
Date/Time: __________ Lead ID (from dashboard): __________
Name: __________ Phone: __________
Property ZIP/City: __________
Service requested (their words): __________
Homeowner? Y / N
Outcome: [ ] Booked [ ] Real lead [ ] Out of area
[ ] Wrong service [ ] Spam/robocall
[ ] Wrong number/no convo [ ] Duplicate
Notes for dispute: __________________________________
The "Lead ID" line matters. In the LSA dashboard each lead has an identifier and a timestamp; matching your call log to the right lead is what lets you dispute fast and accurately weeks later. Office managers who skip this end up disputing the wrong lead or missing the window.
The dispute workflow, step by step
Google lets you dispute charges directly from the Local Services Ads dashboard or the Local Services app. The mechanics are straightforward; the discipline is in doing it weekly and writing tight reasons.
Where and when to file
- Web: sign in to your Local Services Ads account, open Leads, find the lead, and use the option to report or dispute the lead (often shown as a menu on the individual lead, or a flag/report control). Select a reason and add a short explanation.
- App: the Local Services app shows your leads with a similar report/dispute option per lead.
- Timing: dispute promptly. Google's policy gives a limited window after the charge to report a bad lead—file within roughly 30 days and don't let leads age out. Make it a weekly task, not a quarterly cleanup, or you'll lose creditable charges to the clock.
The seven-step weekly routine
- Pull the week's leads from the dashboard, sorted by date.
- Match each charged lead to your call log by name/number/timestamp.
- Tag each one with one of the creditable categories—or "valid, no dispute."
- For each disputable lead, open it and choose the closest reason Google offers (job type, geography, spam, no interaction, duplicate, etc.).
- Write a one- to two-sentence reason that names the verifiable fact. Examples below.
- Submit, and log the dispute date and lead ID in your own tracker so you can confirm the credit later.
- Reconcile next week: check which disputes were approved (you'll see a credit) and which were denied, and note patterns.
How to write the dispute reason so it gets approved
Reviewers skim. Lead with the verifiable fact, keep it to one or two sentences, and avoid emotion. Compare:
Weak: "This lead was garbage, total waste of time, please refund."
Strong: "Caller requested gutter cleaning only; we do not offer gutter cleaning (services set to roof repair and replacement). See call recording at 0:12."
Weak: "Not in our area."
Strong: "Property is in [City, State], ZIP 00000, which is outside our service area (we serve [counties]). Caller stated the address at 0:20."
Weak: "Spam."
Strong: "Recorded robocall pitching marketing services, no roofing inquiry. Recording is dead air then an automated message."
Weak: "They didn't answer when I called back."
Don't file this one at all—it's a valid lead.
Notice each strong version points the reviewer at the exact evidence (a timestamp in the recording, the stated ZIP, the message content). That's what moves the approval rate from coin-flip to consistent.
Handling a storm surge: bulk disputes without torching your account
After a hail or wind event, LSA volume spikes—and so does junk: out-of-area chasers, spam from vendors smelling storm money, panicked tenants, and a flood of "is my roof okay" calls that may or may not be in your area. Two things go wrong for roofers here. First, the volume buries the office and disputes never get filed. Second, panic-disputing inflates your denial rate.
A controlled storm-surge process:
- Tighten capture, don't loosen it. During surge weeks the call log matters more, not less. If you bring on temp phone help, the call card is the first thing you train.
- Triage daily, not weekly. Volume means the 30-day window fills with more leads; reconcile every day or two so nothing ages out.
- Batch by category. Pull all the "out of area" leads together, all the "spam" together. You'll write tighter, more consistent reasons and move faster.
- Keep your area honest under pressure. If you decide to chase a storm two counties out, expand your LSA service area first, then you can't (and shouldn't) dispute those geos. Don't take the jobs and dispute the leads—that's contradictory and reviewers can see your area settings.
- Watch your dispute ratio. If you're disputing 60% of a surge week, something's off—either your area/service settings are too loose (fix the source) or you're over-disputing real leads (tighten your standard).
Storm weeks are exactly when the difference between a tracked operation and a chaotic one shows up in dollars. The roofers who lose the most to bad LSA charges are the ones whose phone system during a surge is "whoever's near the phone, no notes."
When a dispute is denied: escalation that actually works
Not every credit gets approved on the first pass, and Google's automated review can get it wrong—especially on calls where the bad part happened but wasn't obvious in the first few seconds. Your options, in order:
- Re-file with better evidence (if the window allows). If you disputed "spam" but the recording shows the spam pitch at 1:30, re-submit and point to the timestamp explicitly.
- Contact Local Services Ads support. From the dashboard or app you can reach LSA support. Bring the lead ID, charge date, and your one-line evidence for each contested lead. Batch several denied leads into one support contact rather than one-by-one; it's faster and you look organized, not nuisance-y.
- Be specific and unemotional. "Lead ID X, charged [date], denied. Recording at 0:45 shows caller asking for a plumber and stating wrong number. Requesting re-review." That gets a human to actually listen.
- Know when to stop. If a real, in-area roofing inquiry got denied a credit, you were probably wrong to dispute it. Let it go. Burning support cycles on weak disputes makes your strong ones harder to win.
Keep a simple denial log: lead ID, reason you gave, denial, whether you escalated, final outcome. Over a few months you'll learn which reasons your reviewers approve cleanly and which need extra evidence, and you can pre-load that evidence next time.
A worked example: one roofer's month
Concrete numbers make the discipline obvious. Say a residential roofer, Cedar Ridge Roofing, runs LSA in three counties and gets 80 charged leads in a month at an average charge of $55, for $4,400 spent. Their office uses the call card on every contact. At month-end the reconciliation looks like this:
| Category | Count | Charge | Disputable? | Filed |
|---|---|---|---|---|
| Booked appointments | 22 | $1,210 | No | — |
| Real leads, didn't close | 31 | $1,705 | No | — |
| Gutter-cleaning only | 6 | $330 | Yes | 6 |
| Out of service area | 8 | $440 | Yes | 8 |
| Spam / robocall | 5 | $275 | Yes | 5 |
| Wrong number / no convo | 4 | $220 | Yes | 4 |
| Duplicate of same caller | 2 | $110 | Yes | 2 |
| Tenant, no authority | 2 | $110 | Maybe | 2 |
They file 27 disputes totaling $1,485 in contested charges. Because every dispute points to a recording timestamp or stated ZIP, 23 are approved (the two tenant ones and two borderline geo ones get denied), recovering roughly $1,265. That's about 29% of the month's spend clawed back—and notice it required zero extra sales effort. Their effective cost per lead on the 53 valid leads drops from the headline $55 to about $59 once you remove the credited junk from the denominator and the recovered dollars from the spend... the point isn't the exact figure, it's that their real acquisition math is now visible and honest instead of inflated by junk they paid for and forgot.
The roofer down the road, spending the same $4,400 with no call card and no weekly disputes, recovers maybe $200 by complaining about a few obvious robocalls and eats the rest. Same ad spend, very different unit economics, entirely because of operational habit.
The bigger lever: stop buying junk in the first place
Disputing is cleanup. It's necessary, it's worth real money, and you should do it every week—but it's defense. The offense is reducing how much junk enters your funnel and making sure the good leads you pay for actually turn into jobs. A few sources of junk are inside your control before any dispute:
- Service area drawn too wide. If your LSA area includes counties you don't really want, you'll pay for and then dispute geography all month. Tighten it to where you actually want work.
- Services set too broadly. If your profile implies you do gutters, solar, or chimneys and you don't, you invite mismatched calls. Match your listed services to what you'll actually quote.
- Slow speed-to-lead. Many "ghosted" leads (which are not disputable) are really just leads you called back too late. Answering live, or calling back within five minutes, converts leads you're already paying for—often a bigger dollar swing than disputes.
- No first-touch tracking. If you can't tell which booked jobs came from LSA versus a mailer versus a referral, you can't judge whether LSA is even worth the spend, and you'll over- or under-fund it blindly.
That last point—knowing what each channel actually produces—is where most roofers are flying blind, and it's where a real targeting-and-tracking operation changes the picture.
Where RoofPredict fits: turn lead chaos into a tracked pipeline
RoofPredict is the operations platform a roofing contractor runs their outreach and revenue cycle on, and two parts of it bear directly on the LSA-junk problem: the lead pipeline with two-way CRM sync, and the results funnel that shows you cost per lead and cost per win by source.
1. Every LSA contact lands in one pipeline with an immutable first-touch source. When a Local Services Ads lead comes in, it enters a single lead pipeline—new → contacting → appointment → inspected → won/lost—and the first-touch source is locked so an LSA lead can never get quietly re-credited to "referral" later. That solves the exact recordkeeping problem that kills disputes: you have one place where the name, number, property location, requested service, and outcome live for every lead, tied to its source. When it's time to file your weekly disputes, your evidence is already organized by lead instead of scattered across sticky notes and a phone log. The same pipeline feeds two-way sync to 13 CRMs—HubSpot, ServiceTitan, JobNimbus, AccuLynx, Jobber, Housecall Pro, Salesforce, Pipedrive, Leap, Roofr, SalesRabbit, CompanyCam, plus Zapier/CSV—so if your office already lives in JobNimbus or AccuLynx, the LSA leads and their outcomes flow both directions instead of being a separate island you forget to reconcile.
2. The results funnel shows your real cost per lead and cost per win—actual vs. estimate vs. benchmark. This is the part disputing alone can't give you. RoofPredict's results view tracks the funnel from contact → leads → calls → appointments → wins, and reports cost per lead and cost per win against an estimate and an industry benchmark. Once your LSA leads are tagged by source in the pipeline, you can finally see what LSA actually costs you per booked job—not the headline per-lead charge, and not the inflated number you get when junk leads are still in the denominator. If LSA's true cost per win is healthy, you fund it harder and dispute the junk to keep it honest. If it's not, you've got the evidence to shift budget to channels that are. That's the decision disputing can't make for you, and it's the one that actually moves your acquisition cost.
Honest limits, because this matters: RoofPredict does not file your Google disputes for you, and it doesn't decide what Google credits—that's between you and Google's lead-review policy. What it does is make sure every lead you pay for is captured, sourced, and measured, so disputing is fast and your channel decisions are based on real cost-per-win instead of a gut feeling. The dispute workflow above is still yours to run weekly; RoofPredict makes the inputs clean and the outcomes visible.
A second front: where your good LSA dollars should be pointed
There's a strategic angle worth naming. LSA is reactive—you pay to catch homeowners at the exact moment they search, and you compete on speed and badge. It works, but it's a bidding war for whoever happens to be looking today, junk included. The other half of a healthy roofing acquisition engine is proactive: reaching the homes that are due for a roof before they search for anyone.
That's the other thing RoofPredict does. It scores every home in your service area by roof-age band—recent, mid-life, due, overdue—combined with per-roof storm exposure and an opportunity score, and produces a ranked, house-by-house target audience of the roofs most likely due, with a "why this home" evidence chain. You can import addresses by CSV, draw your territory on a hex map, and filter by storm hits. From that ranked list you can run tracked direct mail (personalized proofs, vendor release, per-piece delivery and return tracking, cost quoted up front), give each targeted home a personalized microsite and PDF report with a lead-capture form and a QR code for the mail piece or door hanger, and build door-knock routes with a mobile field app for your canvassers.
Honest framing on the scoring, because the memory line matters: this is a roof-age + storm-exposure heuristic, not magic prediction. Roof age comes back as a range, not an exact install date, and a storm forecast is odds, not proof that a given roof is damaged. What it buys you is a prioritized list so your outbound effort—and your dollars—go to the homes most likely to need you, instead of spreading evenly or chasing whoever searched today. Pair that proactive, owned channel with a tightly-disputed LSA program, and you stop being entirely at the mercy of the auction.
A note on storm and "claim" leads (stay on the right side of the line)
Many roofing LSA calls after a storm sound like claim work—"my roof got hit, will insurance cover it, can you handle the claim?" Two things to keep straight, one operational and one legal.
Operationally: a homeowner asking about storm damage to a roof in your area is a valid roofing lead, not a disputable one. Don't dispute storm/claim-curious callers as "wrong service." Documenting damage and writing a repair estimate is roofing work.
Legally, and this protects your license: as a roofer you may inspect the roof, document the damage with photos, and prepare an accurate repair estimate for your own scope of work, and state facts about that scope. You may not, for a fee, negotiate or "handle" the claim, interpret the homeowner's policy or what's covered, promise a specific payout or approval, promise the deductible is waived or absorbed, advertise a "free roof," or represent the homeowner against their insurer—that's unlicensed public adjusting and it's how roofers lose licenses and invite regulatory trouble. The safe frame on every storm call: you document thoroughly and write an accurate, Xactimate-aligned repair estimate; you hand it to the homeowner; the homeowner files and the insurer decides coverage. Train your LSA call-takers on that script so a storm-surge call doesn't turn into an overpromise on the phone. (RoofPredict's role on the storm side is the same boundary: it tells you which roofs likely qualify by age and storm exposure and supports the photo-and-scope documentation workflow—never claim handling.)
The seven mistakes that wreck a roofer's dispute approval rate
After watching enough roofing offices run LSA, the same self-inflicted errors show up over and over. Each one quietly costs you credits you were entitled to.
1. No call notes, so no evidence. This is the big one. If the only record of a lead is "some guy called Tuesday," you have nothing to dispute with. The reviewer needs a verifiable fact, and "trust me" isn't one. The fix is the call card on every contact, no exceptions.
2. Disputing real leads out of frustration. A homeowner was rude, the job was small, they went with a cheaper bid—none of that is creditable, and filing on it teaches the review system that your disputes are noise. Reserve disputes for genuinely invalid leads and your approval rate stays high, which makes your borderline disputes more likely to land too.
3. Letting leads age past the window. Roofers who "clean up" disputes once a quarter lose half of them to the clock. The charge happened weeks ago, the window closed, the recording may even be gone. Weekly cadence is non-negotiable.
4. Vague reasons. "Bad lead" and "not interested" tell the reviewer nothing. Name the category and anchor it to evidence: the requested service, the stated ZIP, the recording timestamp. Specificity is the difference between approved and denied.
5. Service area and job-type settings that fight your disputes. If your LSA area covers counties you don't serve and your services imply work you don't do, you generate the exact mismatches you then try to dispute—and your own settings contradict you. Fix the settings and the disputes mostly disappear.
6. Treating ghosted leads as Google's fault. A lead that inquired and never answered your callback is usually a speed-to-lead problem on your end. It's billable, and the real fix is answering faster, not disputing.
7. No reconciliation. Filing disputes and never checking which were approved means you never learn. Track approved vs. denied by reason and you'll quickly see which arguments your reviewers accept cleanly and which need extra evidence loaded up front.
How to read your LSA dashboard like a P&L
The LSA dashboard isn't just a lead inbox—it's the closest thing you have to a real-time profit-and-loss statement for that channel, if you read it right. A few numbers to watch monthly and what they tell you.
Charged leads vs. booked appointments. This is your booking rate from LSA. If 80 charged leads produce 22 booked appointments, that's a 27.5% booking rate. Low booking rate with low dispute volume usually means a sales/speed problem. Low booking rate with high junk usually means a targeting/settings problem. The two have completely different fixes, and the dashboard tells you which you have.
Dispute ratio. Disputes filed divided by charged leads. A healthy residential roofer in a normal month might dispute 10–20% of charges. Consistently above 30% outside of storm weeks means your service area or job types are too loose—fix the source. Consistently near zero might mean you're leaving credits on the table because nobody's reconciling.
Approval rate on disputes. Approved divided by filed. If you're below 60–70%, you're either over-disputing real leads or writing weak reasons. High approval rate is a sign of discipline and it protects your account's standing.
Effective cost per valid lead. Total spend minus credits, divided by valid (non-disputed) leads. This is closer to your real per-lead cost than the headline charge, and it's the number to compare against other channels.
Cost per booked appointment and cost per win. Spend after credits divided by appointments, then by closed jobs. This is the number that actually matters for budget decisions. A $55 lead that books at 27% and closes at 40% costs you roughly $510 per won job before you account for credits—and that's the figure to weigh against a mailer or a canvassing route, not the $55 sticker.
Most roofers never compute the bottom two because their leads aren't tracked to source past the dashboard. That's the gap a real pipeline closes.
Speed-to-lead: the fix for the leads you can't dispute
It's worth dwelling on speed-to-lead because it's the largest pile of money roofers leave on the table, and none of it is disputable. When you pay for an LSA lead and then take 30 minutes—or worse, until the next business day—to respond, a large share of those homeowners have already talked to two competitors who answered live. The lead was real and in-area, so you can't get a credit; you just paid for a contact you let go cold.
The numbers are stark across home-services generally: responding within the first five minutes versus thirty minutes can multiply your odds of actually connecting and qualifying the lead. For roofing specifically, where a storm-spooked homeowner is anxious and shopping fast, the first contractor to pick up the phone has an enormous edge.
A practical speed-to-lead setup for LSA:
- Answer LSA calls live during business hours. This is the whole point of the channel—you're paying to be there at the moment of intent. A missed live call that goes to voicemail is a lead you may still get charged for and probably won't recover as a job.
- Route after-hours calls to a real answering service that takes the five call-card fields rather than dumping callers into a voicemail box. A trained service that captures name, address, service, and homeowner status both serves the customer and builds your dispute evidence.
- Call message-leads back within five minutes, not five hours. Message leads feel less urgent and get neglected; treat them with the same speed as a call.
- Track time-to-first-contact per lead. If you can see that your slow callbacks correlate with your "ghosted" leads, you've found a leak that's bigger than your entire dispute recovery—and it's fixable with process, not pleading to Google.
The mental model: disputes recover money on bad leads; speed-to-lead recovers jobs from good leads you already bought. The second pile is usually larger.
Building the dispute habit into a small office
Most roofing companies running LSA are not large. The dispute program has to survive a one- or two-person office that's also dispatching crews, fielding warranty calls, and chasing collections. Here's how to make it durable rather than something that happens for three weeks and then lapses.
Assign one owner. Disputes need a single named person—usually the office manager—who owns the weekly reconciliation. Shared responsibility means no responsibility. It's a 30–45 minute weekly task once the call cards are in place.
Put it on the calendar. A recurring Friday-morning block labeled "LSA reconciliation" that pulls the week's leads, matches call cards, files disputes, and logs them. Tie it to something already routine, like the weekly payroll or AR review, so it rides along.
Make the call card frictionless. If capturing the five fields takes effort, it won't happen during a busy storm week. A pinned form in your CRM or a single printed card by the phone with checkboxes beats a free-text note every time. The easier the capture, the more disputes you can actually substantiate.
Keep a running dispute log with five columns: date, lead ID, category, reason filed, outcome. After two months this log becomes your playbook—you'll know your reviewers approve geography and spam cleanly, want a recording timestamp for wrong-number, and routinely deny tenant disputes. Load the evidence they want before they ask.
Review the source settings monthly. The dispute log will tell you where your junk comes from. If half your disputes are out-of-area, your service area is wrong. If half are gutter-only, your job types are misleading. Five minutes in the settings can eliminate a category of disputes permanently.
How disputing connects to your whole acquisition picture
Step back and the LSA dispute routine is one tile in a larger acquisition system, and it's the defensive tile. A roofing company that only plays defense—disputing junk, answering fast, reconciling weekly—still lives entirely inside Google's auction, paying whatever the channel costs that month, competing with every other badged roofer for whoever happens to search today.
The offensive tiles are the ones that give you a channel you own and can measure. When you can see, side by side, that LSA costs you (say) $510 per booked job after credits, a targeted direct-mail campaign to due roofs costs you a different number, and a canvassing route to overdue roofs costs a third—you can finally allocate dollars like a business instead of defaulting to LSA because it's the only thing you can see. That requires two things most roofers lack: first-touch source tracking on every lead so the numbers are real, and a proactive way to reach homes before they search. Both of those are exactly what the platform sections above describe, and they're why disputing, while genuinely worth doing every week, is the floor of your acquisition program and not the ceiling.
Putting it all together: the standing operating procedure
Here's the whole program as a checklist you can hand to your office manager.
Daily (or every other day during storms):
- Every LSA call/message gets a call card: name, phone, property ZIP, service requested, homeowner Y/N, outcome tag.
- Confirm call recording is on and retained 60+ days.
- Tag obvious spam/wrong-number leads the same day.
- Speed-to-lead under 5 minutes on real inquiries (most "ghosts" are slow callbacks).
Weekly:
- Pull all charged leads, match to call cards by lead ID/timestamp.
- Tag each: valid (no dispute) or one creditable category.
- File disputes with one-line, evidence-anchored reasons (point at recording timestamps / stated ZIP).
- Log every dispute: lead ID, reason, date filed.
- Reconcile last week's disputes: approved vs. denied, note patterns.
Monthly:
- Re-file or escalate strong denials with better evidence; batch them to support with lead IDs.
- Review dispute ratio: if you're disputing a large share, fix the source (service area too wide, services too broad).
- Review true cost per lead and cost per win for LSA vs. your other channels and rebalance budget.
- Audit LSA service-area and services settings; tighten anything that's generating disputes.
Quarterly:
- Compare LSA's real cost per win against proactive channels (targeted mail/canvassing to due roofs).
- Shift dollars toward whatever produces booked jobs cheapest, with first-touch tracking proving it.
The mindset shift
Most roofers treat LSA charges as a fixed cost of doing business and grumble about the junk. The ones with healthy unit economics treat every charged lead as a transaction they verify—booked, valid, or creditable—and they treat the dashboard like a bank statement they reconcile. They capture evidence at the moment of contact, dispute weekly with surgical reasons, and refuse to dispute real leads they simply lost. Then they zoom out and ask the bigger question the disputes can't answer: what does a booked roofing job actually cost me through LSA, and is that the cheapest place for my next ad dollar?
Disputing bad leads recovers real money—often a quarter or more of your spend in a junky month. Knowing your true cost per win, and pairing reactive LSA with a proactive, owned pipeline of homes that are actually due, is what turns lead generation from a leaky monthly expense into an acquisition engine you can steer. Run the weekly dispute routine without fail, keep your settings honest, and put a tracked pipeline and a results funnel underneath it so you're making budget decisions on facts, not vibes.
FAQ
How long do I have to dispute a Local Services Ads lead?
Google's policy gives a limited window after the charge—plan on roughly 30 days—to report a bad lead. Don't let leads age out. The reliable approach is a weekly reconciliation where you match charged leads to your call log and file disputes the same week, so nothing slips past the deadline. During storm surges, reconcile every day or two because the higher volume fills the window faster.
What kinds of roofing leads will Google actually credit?
Leads that weren't valid inquiries for your business: a service you don't offer (e.g., gutter cleaning only, solar, masonry chimney), a property outside your set service area, spam or robocalls, wrong numbers or calls with no real conversation, duplicates of the same caller within the window, and people who clearly meant to reach a different business. Google does not credit a real, in-area homeowner who asked about a roof and simply didn't hire you.
Can I get a refund just because the lead didn't turn into a job?
No. A genuine homeowner in your service area who inquired about roofing is a billable lead even if they went with a competitor or never booked. Price shoppers, 'just getting quotes,' and people who ghosted your callbacks are all valid charges. Disputing those lowers your approval rate and can make Google's review system stricter on your legitimate disputes.
Why do my LSA disputes keep getting denied?
Usually because the dispute reason was vague or the lead was actually valid. Reviewers approve disputes they can verify from the call recording, message thread, or lead metadata. Lead with the specific fact ('caller requested gutter cleaning only,' 'property ZIP is outside our area,' 'recorded robocall at 0:45') and point to the evidence. If you're disputing real in-area roofing inquiries, expect denials—those are billable.
What evidence should my office capture to win disputes?
On every LSA call, capture five things: caller name and number, property ZIP or city (geography proof), the service they actually requested in their words, whether they're the homeowner, and a one-line outcome tag. Keep call recording on and retained at least 60 days, and match each lead to its dashboard lead ID. The recording is your strongest evidence because the reviewer can confirm it without taking your word for it.
How do I handle the flood of bad leads after a storm?
Tighten capture rather than loosening it—the call card matters more during surges. Triage daily so nothing ages out of the dispute window, batch disputes by category for tighter reasons, and keep your service area honest: if you're chasing a storm two counties out, expand your LSA area first instead of taking those jobs and disputing the leads. Watch your dispute ratio; if it's very high, fix the source settings rather than over-disputing.
Should I dispute leads from tenants instead of homeowners?
Sometimes. A tenant who can't authorize roof work may be creditable as a contact who can't actually use your service, but it's a weaker dispute than wrong-service or wrong-area, and reviewers don't always approve it. Capture the 'Are you the homeowner?' answer on the call so you at least have the basis, but don't be surprised if some tenant disputes get denied.
Is a storm or insurance-claim caller a bad lead I should dispute?
No. A homeowner with storm damage to a roof in your area is a valid roofing inquiry, not a service mismatch. Document the damage, take photos, and write an accurate repair estimate for your own scope. Just stay on the right side of the law: don't negotiate or 'handle' the claim for a fee, interpret their policy, promise a payout or approval, promise the deductible is gone, or advertise a 'free roof.' You document and estimate; the homeowner files and the insurer decides coverage.
How do I lower my real cost per lead beyond disputing?
Disputing recovers junk charges, but the bigger levers are at the source: tighten your service area and listed services so you stop attracting mismatched calls, answer or call back within five minutes so you stop losing leads you already paid for, and track first-touch source on every lead so you can measure LSA's true cost per booked job. Once you know your real cost per win by channel, you can shift budget toward whatever produces jobs cheapest.
How does RoofPredict help with bad LSA leads?
It doesn't file Google disputes for you, but it makes them fast and your spend honest. Every LSA contact lands in one lead pipeline with a locked first-touch source—so your dispute evidence (name, number, property location, requested service, outcome) is organized by lead instead of scattered—and it syncs two ways to 13 CRMs like JobNimbus, AccuLynx, ServiceTitan, and HubSpot. Its results funnel then shows your true cost per lead and cost per win for LSA against an estimate and benchmark, so you can decide whether LSA dollars are well spent or better aimed at proactively targeting roofs that are due.
The Roofline by RoofPredict
Stay Ahead of Roofing Market Changes
Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.
Sources
- Local Services Ads Help: How leads and charges work — support.google.com
- Local Services Ads Help: Dispute a lead / request a credit — support.google.com
- Google Guaranteed badge and consumer guarantee — support.google.com
- Local Services Ads: Set your service area and job types — support.google.com
- FTC: Truth in Advertising for businesses — ftc.gov
- FTC Telemarketing Sales Rule (robocalls and telemarketing) — ftc.gov
- NRCA: The Roofing Industry Alliance and contractor resources — nrca.net
- IBHS: Roof age, hail, and wind performance research — ibhs.org
- NOAA Storm Prediction Center: severe weather and hail data — spc.noaa.gov
- NOAA Storm Events Database — ncdc.noaa.gov
- Texas Department of Insurance: public adjuster licensing — tdi.texas.gov
- NAIC: Public adjusters and consumer protection — naic.org
- U.S. Census Bureau: American Housing Survey (housing/roof age data) — census.gov
- RoofPredict — roofpredict.com
Related Articles
Google Ads Not Converting Roofing Leads? A Contractor's Fix-It Playbook
Your roofing Google Ads are getting clicks but no signed jobs. Here's how to find exactly where the money leaks out and close the gaps, from match types to call answer rates.
Retargeting Ads for Roofing Companies: A Practitioner's Operating Manual
Retargeting works for roofers as a closer, not a lead source. The audiences, budget math, compliant storm creative, and measurement that turn warm visitors into booked inspections.
Roofr Review for Roofing Contractors: Is It Worth It?
A practitioner's take on whether Roofr is worth it for your shop — what it does well, where it leaves gaps, and how to match the tool to your actual bottleneck.