Sample layout. Not a real client.
Trade, city: the problem in one line
- Starting point
- Rank grid before any change
- What changed
- The one or two changes that moved it
- Result
- Rank grid after, and the change in calls
A homeowner with a problem searches, sees three companies beside a map, and calls one of them. I measure whether you're one of the three in each city you serve, then change one thing at a time.
No long contracts. You talk to Simon.
Map pack: water heater repair El Cajon
A
B
C
Scientific SEO
Home services SEO gets a contractor in front of a nearby homeowner at the moment they search for a repair or an installation: in Google’s map results, in the regular listings below them, and more and more in AI answers. The trades differ in what people search and how fast they decide. The mechanics underneath are shared.
You travel to your customers, and Google’s local results were built around customers traveling to a business. That mismatch explains most of what goes wrong. One of the things Google ranks local results on is how close the business is to the person searching. A shop has one location and wants customers nearby. You have a yard or an office, often in an industrial pocket of Kearny Mesa, Miramar or El Cajon, and customers spread from Oceanside to Chula Vista. Left alone, you rank best around the yard, where few of your customers live.
It’s also why one ranking check tells you very little: it only describes the spot it was run from. Search “plumber” from your office and you may be first. Run the same search from a driveway in Rancho Bernardo and you may not appear at all. A rank grid runs the search from dozens of points across your service area and plots the result at each one. It’s the first thing I produce for any contractor, because it turns “we don’t get enough calls from North County” into a map with the gaps marked.
Whatever the trade, your Google Business Profile tells Google what you do and where, through its category, listed services, service area and photos. A profile that is incomplete or in the wrong category holds back everything else. Recent reviews that mention the job and the city can help Google match you to a search, and they are what the homeowner reads before calling.
Your website needs one clear page per service, plus pages for the cities you serve where you have something specific to say about them. And your business facts have to agree: your site, your profile and the directories that list you should all show one name, one phone number and one service area.
Which of these four is holding a company back varies from one to the next, and the grid usually points to it.
Urgency, job size and how long the customer thinks before calling all change from one trade to the next, and with them which searches matter and what the pages need to say.
| Trade | How the customer buys | What that means for search |
|---|---|---|
| HVAC | Urgently in a heat wave, slowly for a new system | Seasonal demand, with repair and installation searched separately |
| Plumbing | In an emergency, often at night | Being visible and open at the moment of the search |
| Solar | After weeks of research and several quotes | Answering questions well, long before a quote is requested |
| Roofing | A leak today, or a replacement planned for months | Photos, reviews and proof of past work |
| Electrical | Anything from a dead outlet to a panel upgrade | Separate pages for small urgent jobs and large planned ones |
Many contractors buy leads from somewhere: a marketplace that sells one homeowner to several companies, Local Services Ads (LSA), or pay-per-click ads. Those calls are rented. They stop when the payment stops, and someone else sets the price. Calls from the map pack and the regular listings are closer to owned, since nobody charges you per call.
Keep buying leads at the start. I look at what each source costs per booked job, keep what pays for itself, and cut back the rest as the grid fills in.
Someone asks ChatGPT or Gemini who to call about a slab leak in La Mesa and gets two or three names back. That’s now part of how homeowners choose a contractor. AEO (Answer Engine Optimization) means becoming the source that answer boxes and Google’s AI Overviews quote. GEO (Generative Engine Optimization) is being named by generative assistants. Both rest on the same profile, reviews, website and business facts, so you aren’t buying the same work twice. An AI recommendation is never something an agency can guarantee, and the names change from one assistant to the next and from one day to the next. I test the questions your customers would ask and record who gets named.
A city far from your yard is the hard case. Proximity is a real limit, and SEO can’t put you at the top of the map there just because you want the work. It also won’t make the phone ring next week, and it won’t make up for slow callbacks or a competitor with many years of reviews behind it.
The realistic gains are in the cities at the edge of where you already rank, and in the services where the companies above you’re weak. The grid shows both, and I begin with them.
Every engagement starts and ends with the same measurement.
Sample layout. Not a real client.
Yes. A contractor travels to the customer, usually hides its address on Google, and needs to rank across many cities instead of around one storefront. Google still measures distance from the business location, so a contractor tends to rank best around its own yard or office. The work is about extending how far from there you appear, and checking that with a rank grid, which runs the search from dozens of points across your service area, instead of a single search from the office.
Both pages apply. A company with two trades has two sets of searches, two seasonal patterns and usually one Google Business Profile that has to represent both. Only one category can be the primary one, so I measure which trade the profile ranks for today and decide with you which should lead. Each trade then gets its own service pages on the site.
Keep buying them until you know what a booked job from each source costs you, counting the leads that went nowhere. Some companies find the shared leads still pay for themselves and others find they don't. The time to cut a paid source in a given city is when map pack and organic calls there have grown enough to replace it.
You compare the rank grid before and after each change, and you watch the calls. I report in plain English what I changed and what moved, including when nothing did.
Once I know your trade and the cities you serve, I measure where you rank across them, and recommendations come after that.
Prefer to talk? Call (619) 675-7678, 9am to 6pm.