The City, the County and the Metro East are three auctions wearing one name
Split the account by jurisdiction before you split it by keyword, because the same click costs and converts differently in each one.
At minimum, separate campaigns for the City of St. Louis, St. Louis County, St. Charles County and the Illinois side. If your county volume is large, splitting inner county from outer county is usually worth it too, because a job in Clayton and a job in Chesterfield are not the same drive or the same sale.
Give each one its own budget. Shared budgets hide the answer you are paying to find out, which is where your money buys signed work.
Target on presence, not on interest. The default settings will happily show your ads to somebody in another state reading about the area, and roofing budgets do not survive that.
Exclude what you will not drive to. If nobody is crossing the river on a Tuesday, the Metro East should not be quietly collecting clicks inside a radius.
Slate and tile clicks cost like shingle clicks and pay nothing like them
The covering decides the crew, the ticket and whether the click was worth having at all.
The older brick stock here carries roofs that most contractors do not touch: slate, tile, standing seam. If you do not do that work, exclude the terms. Every one of those clicks is money spent to say no.
If you do that work, it deserves its own ad group and its own landing page. Few competitors bid it seriously, and the buyer is usually further along than a shingle shopper.
Keep repair intent and replacement intent apart. Someone searching for a leak wants a truck this week. Someone searching for replacement cost is comparing and may sign in a month. Same account, different ads, different pages, different expectations.
Low-slope and commercial searches belong in their own campaign entirely. Mixing them with residential shingle work makes both sets of numbers meaningless.
Write the exclusions before the ads, starting with masonry and hiring searches
In a brick market the wasted spend has a local accent, and it shows up on day one.
Tuckpointing, chimney rebuilds and general masonry pull roofing ads constantly here. If you do not self-perform that work, exclude it early. If you do, give it a separate campaign so it does not eat the roofing budget.
Then the usual drains: hiring and salary searches, supply houses, gutter cleaning, do it yourself and how to phrasing, roof cleaning, pole barns and metal building kits.
Public adjuster and claim filing searches deserve care. They are cheap to attract and expensive to serve, and the copy that wins them creates promises no roofer should be making about somebody else's policy.
Read the search terms weekly for the first month, then monthly. The list is never finished, and a fresh storm produces fresh nonsense every time.
A hail line crosses in an hour, and your daily caps were set three weeks ago
Storms move the auction faster than a monthly budget can respond, so the plan has to exist before the sky does anything.
Have a storm setup ready: raised caps, a written ad group, a landing page that says what you can actually do this week. Deciding all of that during the phone spike is how the week gets away from you.
Somebody has to be watching. If nobody can log in and change caps the same day, do not build a strategy that assumes they will. An honest fixed pace beats a storm plan nobody executes.
The quiet stretches matter just as much. Real winters here mean months where competitors go dark, and an inspection or maintenance offer buys attention cheaply while they are gone. Only run it if you have crews to fill.
Keep insurance language careful in the copy. Describe what you do, not what an insurer will decide, and send homeowners to their own carrier for coverage questions.
Performance Max hides the geography, and geography is the whole game here
Automated campaign types will spend across the river and inside neighborhoods you do not serve, and they will not show you much about it.
Broad match plus automated bidding needs a steady diet of good conversion data to behave. Most roofing accounts start without that, so they get volume instead of jobs.
Start narrow: exact and phrase match on the terms you know, tight geography, call tracking on every campaign, and a form that records the address. Expand once the account can tell a booked job from a wrong number.
If you do run automated campaigns, feed them signed contracts rather than form fills, and check the geographic report often. Spend that leaks past the county line does not announce itself.
Local Services Ads sit in their own space above search results, with their own verification and their own budget. Decide deliberately whether you are in that auction rather than discovering it later.
Report the cost of a signed contract on each side of the Mississippi
Cost per lead flatters the campaigns that generate the most noise and punishes the ones that generate work.
Connect the account to what happens after the call: inquiry, inspection booked, inspection completed, proposal sent, contract signed. Without that chain, every optimization is a guess dressed up in a dashboard.
Report the chain by geography. City, county, St. Charles County, Madison and St. Clair. Expect the numbers to differ, sometimes sharply, and expect that to change where the budget goes next quarter.
Watch the middle of the funnel, not just the ends. A campaign with cheap leads and few completed inspections is usually buying the wrong intent or the wrong municipality.
Be patient with small samples. A single week of a single county will not tell you anything reliable, and rebuilding an account on one bad Tuesday is a common and expensive habit.
Questions we actually get
- How much should a roofing company spend on paid search here?
- There is no honest single figure, and anybody who quotes one without seeing your service area is guessing. The structural answer is that every geography you split into needs enough spend to gather usable data. Running two areas properly beats running five badly. Start with the territory where your crews already are, prove the cost of a signed contract there, then extend.
- Should we run Local Services Ads as well as search ads?
- They are separate auctions with separate budgets and their own verification process, and they occupy a different position on the page. Many roofing companies run both. The decision should be made deliberately with its own budget line, not by letting one quietly absorb the other.
- Do we need to bid on our own company name?
- Often yes, though it depends on whether competitors or lead resellers are bidding on it. Brand clicks are usually inexpensive, and losing a homeowner who typed your name to an aggregator is the most annoying way to lose a job. Check the auction insights before deciding.
- How do we compete with out of town companies that show up after a storm?
- Not on bid price, since a company with no local overhead can outspend you for a few weeks. Compete on the things they cannot copy: naming the municipalities you work in, showing crews and yard, and answering the phone. Paid search delivers the click, but the landing page and the person answering decide the job.
- How quickly do paid ads produce booked work?
- Clicks arrive immediately. Booked jobs depend on your intake, your inspection capacity and the season. We would not promise a lead volume or a timeline. What we do commit to is reporting the chain from click to signed contract so you can see where money is working and where it is not.