Leak 1: Broad match with no negative keyword list
This is the biggest single drain on a contractor account, and it hides in plain sight. Broad match tells Google to show your ad for anything it decides is related to your keyword. For a roofer bidding on "roof repair," that quietly means "how to repair a roof myself," "roof repair cost," "roofing jobs hiring," and "roofing shingles at Home Depot." Every one of those is a click you paid for. None of them is a booked job.
The fix is not to abandon broad match. It is to fence it in with a negative keyword list, which tells Google the searches you will not pay for. A real contractor negative list runs long: free, cheap, DIY, how to, jobs, hiring, salary, courses, warranty claim, insurance only, wholesale, supplier, parts, and the names of the big-box stores and manufacturers you are not. Without that fence, broad match spends your daily budget on tire-kickers by noon and the account looks "active" while the phone stays quiet.
Owners rarely see this because the dashboard reports clicks and impressions, not intent. The account is working exactly as configured. It was just configured to buy attention, not customers. The tell is a search terms report full of the word "how" and zero calls to show for the spend.
| Search that triggered the ad | What the contractor wanted | Money outcome |
|---|---|---|
| "emergency roof leak repair near me" | Exactly this | Paid click, likely call |
| "how to fix a roof leak yourself" | Never | Paid click, no job |
| "roofing jobs hiring my area" | Never | Paid click, no job |
| "cheap roof repair estimate" | Debatable | Paid click, price shopper |
Plug this one first. A tight negative list is the fastest money you will ever recover in a contractor account, because every dollar you stop wasting on "free" and "jobs" is a dollar back on the searches that actually dial your number.
Leak 2: Bidding on the wrong intent
Not every search for your trade is a customer. A homeowner typing "AC not cooling" at 2pm in July is a booked job waiting to happen. A homeowner typing "how much does a new AC unit cost" is reading, comparing, and three weeks from deciding. Same trade, wildly different intent, and most contractor accounts bid on both at the same price because the keyword tool grouped them together.
The leak is treating research intent like emergency intent. Emergency and repair searches convert to calls fast because the problem is happening now. Cost, guide, and "vs" searches convert slowly if at all, and they cost real money because every shop in town is also chasing them. When you pool them into one campaign at one bid, the cheap-to-convert emergency clicks subsidize a pile of research clicks that never call.
The fix is to separate intent into its own campaigns and bid each for what it is worth. Weight budget toward the searches with a problem in them: leak, no heat, not cooling, broken, clogged, emergency, repair, replace, same day. Trim or cut the pure-research terms unless you have a real nurture path for them, which most contractors do not. A good rule for a service trade: if the search does not imply something is broken or urgent, it is worth a fraction of what the emergency term is.
This is where knowing dispatch reality matters more than knowing the platform. An agency that has never run a service account will happily spend your budget on "best HVAC brands 2026" because it has volume. It does not know that call never came to your desk as a job. Bid the intent, not the impression count.
Leak 3: Sending every click to the homepage
You paid for the click. Then you dropped that person on your homepage, which is built to explain your whole company to everybody, and asked them to figure out what to do next. Half of them leave. That is not a traffic problem, that is a landing problem, and it is one of the most expensive leaks because it wastes clicks you already bought.
A homepage answers "who are you." A landing page for ads answers one question: "can you fix my thing, in my area, right now, and how do I reach you." The homepage has a nav bar, a mission section, a blog link, and ten ways to wander off. The landing page has the specific service, the specific city, the phone number above the fold, a short trust row (licensed, insured, since 2008), and a form. Nothing to click that is not a way to contact you.
- Match the ad to the page. If the ad says "emergency drain cleaning in Tampa," the page says that, not "Welcome to our plumbing family."
- Phone number visible without scrolling, click-to-call on mobile, because most contractor ad clicks are on a phone.
- One job for the page: get the call or the form. Kill the nav, kill the distractions.
- Fast load, under 2 seconds. A slow page bleeds the exact mobile clicks you paid a premium for.
Contractors resist this because they only have one website and it feels like enough. It is not. The homepage is for people who already know you. The ad landing page is for a stranger with a wet ceiling who will call the first shop that looks like it can help in the next hour. Give the click somewhere to land that closes, or keep paying for clicks that bounce.
Leak 4: Paying for calls nobody answers
This is the cruelest leak, because you did everything right up to the last step and then dropped the ball on the desk. The ad worked. The landing page worked. The homeowner called. And it rang out to voicemail, or a CSR who took a message and never called back, or a line that was busy because you were up on a roof. You paid full price for that click and handed the job to the competitor who picked up on the second ring.
Home-service clicks are among the most expensive in local search precisely because the intent is urgent, and urgent buyers do not leave voicemails. They call the next number on the list. Missing calls does not just lose that job, it wrecks the math on every dollar in the account, because your true cost-per-booked-job includes all the calls you paid for and blew. An account can look like it is "not converting" when the real problem is a phone nobody answered between 4 and 6pm.
The fixes are not glamorous and they are not marketing:
- Turn on call tracking so you can actually see how many ad calls came in and how many got answered. You cannot fix what you are not counting.
- Schedule ads to run when someone can pick up, or set up call forwarding and an answering service for the off-hours you are bidding into.
- Use call-only and call-extension campaigns for emergency terms so the click is the call, no landing page in between.
- Look at the missed-call log weekly like it is a stack of uncashed checks, because it is.
An agency that hands you a dashboard and never asks "who answers the phone at 5pm" is optimizing the wrong half of the funnel. The ads buy the call. The call books the job. If the call dies at your desk, the ad spend died with it.
Leak 5: One campaign for the whole service area
Contractors love wide service areas, and they build the ad account to match: one campaign, one radius, every town lumped together at one bid. It feels efficient. It is a leak, because your towns are not the same. Some drive short, high-margin jobs. Some are an hour each way for a ticket that barely covers the truck. Some are saturated with competitors bidding the price to the moon, and some are wide open. One campaign at one bid treats them all identically and quietly overspends on the worst ones.
The leak has two shapes. First, you pay premium clicks for jobs on the far edge of your area that you would rather not drive to anyway. Second, you get outbid in the towns that actually pay, because your budget is spread thin across a map instead of concentrated where the money is. Meanwhile the report just says "clicks are up," so nothing looks wrong.
The fix is to segment by geography and bid each area for its real value to your shop:
- Tier your towns. Close and high-margin gets the strongest bid. Far and thin-margin gets a lower bid or gets cut.
- Watch competition by area, not overall. A term that is a fair price in one town is a bloodbath in the next; bid accordingly.
- Match ad copy to the town. "Serving Naples since 2008" pulls harder than a generic ad in a market where locals prefer local.
This is dispatch math, not ad math, and it is exactly what a generic agency skips because it has never had to price a job by drive time. The point of paid is not to be seen everywhere. It is to be seen, at a smart price, in the places that book profitable work.
Leak 6: Ignoring Local Services Ads and the Google Guaranteed badge
Above the regular Search Ads, above the map, there is a row of Local Services Ads with a green Google Guaranteed check mark. For a lot of home-service trades that row is the best real estate on the page, and it works differently from the Search Ads underneath it. Ignoring it, or worse, never getting screened for the badge, is a leak of the opportunity kind: you are leaving the top slot to whoever bothered to set it up.
The key difference is how you pay. Search Ads charge per click, whether or not the person calls. Local Services Ads charge per lead, meaning you pay when someone actually contacts you through the ad, not for a curious click that bounces. For urgent trades where clicks are pricey and intent is high, paying per lead instead of per click can put your cost-per-booked-job on much friendlier footing. The green Google Guaranteed badge also does trust work that a text ad cannot, which matters when a homeowner is choosing who to let into the house.
The catch, and the reason contractors skip it, is the setup: Local Services Ads require a screening process. Google verifies your license, your insurance, and background checks before it hands you the badge. That paperwork is a wall, and it is exactly why the shops that clear it get a cleaner, less crowded row to compete in.
LSA is not a replacement for Search Ads, it is a companion. The mature setup runs the badge on the top row for the pay-per-lead trust play, with Search Ads underneath catching the searches LSA does not cover. Running Search Ads while ignoring LSA is like renting a billboard on the frontage road while the highway sign sits empty. This one is worth the screening hassle for most trades that qualify.
Leak 7: Measuring cost-per-click instead of cost-per-booked-job
Every leak above rolls up into this one, and it is the mistake that keeps contractors either scared of ads or bleeding on them. The platform hands you clicks, impressions, and cost-per-click, all easy to measure and all beside the point. The only number that pays your crew is cost-per-booked-job: total spend divided by the jobs you actually put on the calendar and closed. That number lives in your business, not in the Google dashboard, which is exactly why most accounts never track it.
Here is why the wrong metric wrecks decisions. A campaign with a low cost-per-click can have a terrible cost-per-booked-job if those cheap clicks are price shoppers who never call. A campaign with a scary-high cost-per-click can be your best performer if those expensive clicks are emergency jobs that close at a fat ticket. Judge by clicks and you will cut the winner and feed the loser. Judge by booked jobs and the account tells the truth.
| What you measure | What it tells you | What it hides |
|---|---|---|
| Cost-per-click | How cheap the traffic is | Whether any of it booked |
| Click-through rate | How catchy the ad is | Whether the clicker was a customer |
| Cost-per-booked-job | Whether the account makes money | Nothing that matters |
Getting to this number takes two things most accounts lack: call tracking so you can tie a call to a campaign, and a simple habit of marking which leads turned into real, closed jobs. It is not fancy. It is a phone log and a booking count matched back to the spend. Once you can see cost-per-booked-job by campaign, by intent, and by town, every other decision in this guide gets obvious, because you finally know which clicks pay you back and which ones just looked busy on a chart.