Build general contractor keyword research from your own job mix, service area, urgency, and permit profile, then map each qualified term to one page.
Most general contractor keyword research starts in the wrong place: a borrowed list of construction terms. The list feels productive, but it cannot know your job mix, your license scope, the cities you actually serve, or whether you have the crew and estimating capacity to take the work. The result is predictable. Two pages end up chasing the same term, city pages multiply until they look cloned, and half the list describes jobs you do not even sell.
Demand figures for this exact query are unavailable in the research, so this guide does not quote search volume, difficulty, or cost-per-click. It does something more useful. It shows how to build a defensible term map from your own jobs and service area, then assign each qualified term to one page so your pages never compete with each other. If you want the commercial proposition rather than the process, see the theStacc page for general contractors. Finding clients is a separate problem and is out of scope here; the general contractor lead generation guide covers that side.
Here is what you will learn:
- How to build a keyword list from the jobs you actually sell, not from a portable top-terms list
- How to attach only the service-area modifiers your firm genuinely serves
- How to separate emergency and planned-project terms and match each to a page type
- A qualification screen that drops terms you cannot truthfully or profitably serve
- A one-page-per-term map that prevents cannibalization and doorway-page risk
- How to judge terms by qualified enquiries and booked jobs instead of impressions
What you need before you open a keyword tool
You need four things before any tool: a written list of the jobs you actually sell, the service area you genuinely cover, one person who owns the worksheet, and access to whatever first-party query data you already have. Volume from a third-party tool is optional and, here, unavailable. The process works on your own evidence alone.
The U.S. Small Business Administration frames market research as a look at demand, location, saturation, and alternatives, and notes that direct research answers business-specific customer questions. That is the model here: your own jobs answer questions no shared list can. Read the SBA's market-research guidance as the reason to start internally. Before the seven steps, gather these inputs:
- Your closed and lost job history, broken down by service type
- The service area your crews and estimators genuinely cover today
- Any first-party query data you already have from search reporting or your Business Profile
- A named owner for the worksheet and a declared evidence window for later review
- General autocomplete or keyword tools, used only for expansion after your own list exists
Inventory the jobs you actually sell
A defensible keyword list starts with what your crews actually build, not with a tool. Write down every service type you sell, from kitchen and bath remodels to additions, structural repairs, emergency water work, and new builds. Note each job's urgency, whether a permit is involved, and the area you genuinely serve.
list real service types (kitchen/bath remodel, addition, basement/structural, repair/emergency, new build), each job's urgency profile and permit involvement, and the geography you truly serve. Start from job history, not a keyword list.
For a general contractor this inventory is not interchangeable with a plumber's or an electrician's. A kitchen or bath remodel is planned and compared on fit and scope. An addition or whole-home renovation carries a longer decision and usually a permit. Structural and basement work can shift from planned to urgent after a storm or a water event. A new custom home is permit-led and high ticket. Each of these produces different buyer questions and different proof, so each seeds a different cluster of terms. The SBA's direct-research principle is why the list comes from your job history first: only your records know which of these jobs you actually sell.
Add honest service-area modifiers
Area modifiers are the cities, neighborhoods, and service-area terms your firm can truly serve, not every town you would like to win. Google ties local results to relevance, distance, and prominence, so a city you do not genuinely cover is not a valid modifier. Build this list from confirmed coverage only.
attach only the cities, neighborhoods, and service-area terms the firm genuinely serves; forbid cloning a page per city and link to the local-SEO owner for execution. Area terms must match the real service area per the approved GBP source.
Google says local results are based primarily on relevance, distance, and prominence, which is why a modifier must reflect a real service area rather than a wish list of towns. Read its local-results guidance as a boundary on what area terms are defensible. A remodeling contractor who genuinely works three suburbs can attach those three; the same contractor cannot attach fifteen cities and stay truthful. Do not clone one page per city. The actual city-level execution belongs to the general contractor local SEO process, which applies area terms without reproducing this research step.
Layer intent and urgency, then match a page type
Intent and urgency decide which page a term belongs on. A burst-pipe-style emergency search and a six-figure addition search are different buyers on different timelines, and forcing them onto one page confuses both. Split emergency and repair terms from planned, permit-led, high-ticket terms, then assign each cluster to a service page, project-proof page, or profile treatment.
separate emergency/repair terms from planned/high-ticket permit-led terms, and assign each cluster to a service page, project-proof page, or GBP treatment rather than forcing one page to carry everything.
The page type follows the job. Urgent storm or water work needs a current service page that reflects real availability. A kitchen or bath remodel fits a service page backed by a project record with permissioned photos and scope. An addition, whole-home renovation, or new build needs deeper project proof because the buyer evaluates comparable work over weeks. Your Business Profile carries the proximity and category signals; the Local SEO module covers profile posts, review replies, Q&A, citations and NAP, and Map-Pack rank tracking through the official GBP API, which is where profile-level treatment lives. Forcing one page to hold an emergency term and a six-figure remodel term dilutes both, so assign each cluster its own page now and record the choice.
Pull candidate terms from your own data and tools
Candidates come from evidence you already have before any tool. Pull terms from closed and lost job history, from your own search and profile query data where it exists, and from general autocomplete and keyword tools. Write down the source system beside every term, and mark demand as unavailable when a tool gives no figure rather than writing zero.
gather candidates from the firm's job history, search-console/GBP-style first-party data where available, and general keyword/autocomplete tools; record the source system for every term and treat unavailable volume honestly, never as zero.
Google explains that it crawls, indexes, and serves results based on relevance to the query, which is the mechanical reason a term must map to a real page that answers it. Read the how-search-works overview as the reason source and mapping matter. Record where every candidate came from: a job note, a first-party query report, an autocomplete pass, or a general tool. Where a tool returns no volume, write unavailable, never zero, because zero is a claim you cannot support. To operationalize the draft work, the Content SEO module can research keywords and draft, score, and queue content, but it does not decide which terms fit your jobs and it does not promise outcomes for any term.
Qualify each term by GC fit
Qualification is a gate, not a ranking of best to worst. A term stays only when it matches a real job you sell, an area you truthfully serve, the crew and estimating capacity you have, and a competitive position worth pursuing. Anything that fails one test is dropped, because a term you cannot fulfill wastes the page it sits on.
keep a term only if it matches a real job type, a truthful service area, the firm's capacity to serve, and a competitive position worth pursuing; drop terms the firm cannot truthfully or profitably serve. Do not label any term "best."
Google's people-first guidance favors reliable, people-first content over pages built to manipulate terms, so a term that does not match a real job is a liability, not an asset. Read the helpful-content guidance as the reason the screen exists. License, permit, and bond scope vary by state and municipality, so confirm the term against your own current records and the local building department rather than assuming a universal rule. A term for a service you are not licensed to build, an area you cannot staff, or a ticket size you cannot profitably deliver fails the screen. Do not label any surviving term best; the screen records fit and evidence, not rank.
Map each qualified term to one canonical page
Every qualified term gets exactly one page, and that page's URL is recorded as the owner. When two pages chase the same query they split the signal and risk looking like cloned regional pages, which Google treats as doorway spam. If a second page seems to fit, merge it or give it a clearly different intent.
assign one page per term/intent so two pages never compete for the same query; link to the mistakes spoke for the cannibalization and doorway guards.
Google defines doorway abuse as substantially similar regional pages and treats scaled-content abuse as spam, which is the hard boundary on city-term page creation. Read the spam policies before you let two pages share a term. In practice this means one page owns "kitchen remodel" in your served area, a different page owns "bathroom remodel," and neither is cloned into a stack of near-identical city variants. Record the owning URL next to every qualified term in the worksheet so the map doubles as a cannibalization check. If a new candidate collides with an existing page, the decision is merge or re-scope the intent, not publish a second near-copy.
Review and refresh on a cadence
A keyword map ages because your job mix, seasonality, and coverage change. Exterior and deck demand concentrates in spring and summer, interior remodels can carry winter, and storm work spikes after events, so last season's terms drift. Re-run the fit screen on a set cadence and read results by qualified enquiries and booked jobs, not impressions.
revisit the map as job history, seasonality, and service area change; judge terms by qualified enquiries and booked jobs (not impressions) over a declared evidence window, with no traffic or ranking promise.
Seasonality is real for a general contractor and differs by job. Exterior and deck work tends to concentrate in spring and summer, interior kitchen and bath projects can carry winter demand, and storm or water work can spike after an event and then fall quiet. Re-run the qualification screen on a cadence you declare up front, and whenever your service area or job mix changes. Judge each term by qualified enquiries and booked jobs over that window, not by impressions. GA4 recommends separate lead events such as generate_lead, qualify_lead, and close_convert_lead and lets the business define each stage, which is the basis for reading whether a term produced qualified requests. See Google's lead-event guidance for the stage model.
Decision aids that keep the map honest
Four working documents keep the map from drifting back into a copied list. The matrix ties each term to a job, area, and page. The qualification screen decides what stays. The cannibalization guard stops two pages from sharing one term. The funnel dictionary keeps measurement honest so terms are judged by enquiries and booked jobs, not impressions.
Job-led keyword matrix
Use this as a worksheet template, not as a published list. Replace every example area token with your own confirmed service area, and add rows only for jobs you actually sell. No row carries a volume figure, because volume is unavailable for this query.
| Service type | Urgency profile | Area modifier | Ticket and permit character | Candidate term | Page type | Owner |
|---|---|---|---|---|---|---|
| Kitchen/bath remodel | Planned | Confirmed served city or neighborhood | Mid to high ticket; permit often required | kitchen remodel in [served area] | Service page plus project record | SEO or research owner |
| Addition or whole-home renovation | Planned, longer evaluation | Markets the estimating team covers | High ticket; permit required | home addition contractor in [served area] | Service page plus project record | SEO or research owner |
| Basement or structural repair | Mixed; some urgent after events | Area the crew can genuinely serve | Variable; permit or inspection may apply | basement foundation repair in [served area] | Current service page | SEO or research owner |
| Emergency water or storm work | Urgent | Only the area the crew can reach fast | Variable; emergency scope | emergency water damage contractor in [served area] | Current service page | SEO or research owner |
| New build or custom home | Planned, long cycle | Confirmed build markets | High ticket; permit-led | custom home builder in [served area] | Service page plus project record | SEO or research owner |
Turn your own job mix into a defensible keyword map. In a free 30-minute strategy call we will walk your real jobs and service area and sketch the one-page-per-term map together. No portable list, no volume guesses, no ranking promises.
Qualification screen
Run every candidate term through all four checks. A term must pass each check to survive; one honest "no" or "unknown" drops it. Record the evidence or source beside each answer so the screen is auditable on the next pass.
| Check | Answer type | Pass condition | Evidence or source |
|---|---|---|---|
| Real-job match | Yes or no | The term describes a service type you actually sell | Job history and current scope list |
| Service-area truth | Yes or no | The area modifier is one you genuinely serve | Confirmed coverage and Business Profile service area |
| Capacity to serve | Yes or no | Crew and estimating capacity can take the work | Operations and estimating records |
| Competitive position worth pursuing | Judgment | The position is realistic and worth the page | Manual review of the current results page |
Pressure-test your fit screen with an operator. Bring your candidate list to a free 30-minute strategy call and we will apply the four checks against your actual jobs, coverage, and capacity so weak terms get dropped before they become pages.
Cannibalization guard
One canonical page owns each term and intent, and the owning URL is recorded in the worksheet. The guard flags any collision where two pages would target the same term so you merge or re-scope before publishing.
| Term or intent | Owning URL | Flag |
|---|---|---|
| kitchen remodel in served area | /services/kitchen-remodel/ | Clear; single owner |
| kitchen renovation in served area | /services/kitchen-remodel/ | Collision; treat as same intent, do not publish a second page |
| bathroom remodel in served area | /services/bathroom-remodel/ | Clear; distinct job and page |
Funnel dictionary
Keep every funnel stage separate, with its own source system and owner. Term performance is read from qualified enquiry and booked job, never from impressions or clicks alone, because earlier stages cannot tell you whether a term fits your jobs or turns into work.
| Stage | Business rule | Source system | Owner | Timestamp |
|---|---|---|---|---|
| Impression | A result or profile was shown | Search and profile reporting | SEO or research owner | Event date |
| Click | The listing or page was opened | Search and analytics reporting | SEO or research owner | Event date |
| Call click | The phone action was tapped | Profile and call tracking | Operations | Event date and time |
| Form submission | A form was completed and sent | Analytics and form tool | Operations | Event date and time |
| Qualified enquiry | The request matched a real job and area | CRM and lead events | Sales or estimating | Qualification date |
| Booked job | The work was scheduled or won | CRM or job system | Sales or estimating | Booking date |
| Completed job | The work was delivered and closed | Job system | Operations | Completion date |
How to read term performance without chasing impressions
Read a term by the qualified requests and booked jobs it produces, never by impressions or clicks alone. Those earlier stages matter for diagnosis, but they cannot tell you whether a term fits your jobs or turns into work. Use one declared evidence window, one source system per stage, and the single approved formula below so every pass is comparable.
The qualified-term rate is a worksheet metric for your own process, not a benchmark and not a promise. It tells you how disciplined a research pass was, nothing about rankings, traffic, or leads.
| Formula | Numerator | Denominator | Evidence window | Source system | Owner | Exclusions |
|---|---|---|---|---|---|---|
| Qualified-term rate | Candidate terms that pass the full GC-fit screen (real-job, service-area-truth, capacity, competitive-position) | All candidate terms reviewed in the same pass | One declared research pass | Keyword worksheet plus job-history/CRM and recorded source system | SEO/research owner | Terms for services not offered, areas not served, or jobs the firm cannot fulfill |
Frequently Asked Questions
These answers stay inside the boundaries of this page: a job-led process, honest treatment of unavailable demand, and one page per term. They do not quote search volume, hand out a portable keyword list, or promise rankings, traffic, or leads. City-level execution sits in the local-SEO process, and the wider system is covered separately.
Start from your own job history, not a borrowed list. List the jobs you actually sell, each job's urgency and permit profile, and the geography you truly serve. Pull candidate terms from that job history, your own search and profile data where available, and general autocomplete tools. Record the source system for every term, then keep only terms that match a real job, a truthful area, your capacity, and a position worth pursuing.
Treat a published list as a prompt, not a plan. A list built for every contractor cannot know your job mix, license scope, service area, or estimating capacity, and copying it pushes many firms onto the same terms and near-identical pages. Pull a few ideas from it, then rebuild your own map from real jobs and truthful coverage so each term earns one distinct page.
Attach only the cities, neighborhoods, and service-area terms your firm genuinely serves. Google bases local results mainly on relevance, distance, and prominence, so area modifiers must reflect real coverage, not a list of every town you want to win. Do not clone one page per city. Build area terms from your confirmed service area and let the local-SEO process execute city-level ranking separately.
Emergency and repair terms signal someone who needs help now and often search by urgency plus availability, while planned-project terms cover remodels, additions, and new builds that buyers research for weeks. They behave differently, convert on different pages, and should not share one page. Map urgent terms to a current service page and planned terms to service or project-proof pages with scope and evidence.
There is no fixed number, and search volume is unavailable here, so do not set a quota. Target exactly the terms that pass your fit screen: a real job, a truthful service area, capacity to serve, and a competitive position worth pursuing, with each term mapped to one page. A small set of qualified terms you can actually serve beats a long list you cannot fulfill or measure.
No. Give each term and intent one canonical page and record the owning URL, so two pages never compete for the same query. Substantially similar regional or cloned pages can trip Google's doorway and scaled-content spam rules, and splitting one term across pages weakens the signal you are trying to build. If two pages seem to fit, merge them or separate their intent cleanly.
A term is worth targeting only when it passes the full GC-fit screen and you can read results past the click. Keep it if it matches a real job type, a truthful service area, your capacity to serve, and a competitive position worth pursuing, then judge it by qualified enquiries and booked jobs over a declared window, not impressions. GA4 lets you define separate lead stages so you can tell which terms produce qualified requests.
Revisit the map whenever your job history, seasonality, or service area changes, and on a set cadence even when nothing obvious shifts. Exterior and deck demand concentrates in spring and summer, interior remodels can carry winter, and storm-driven work spikes after events, so last season's terms drift. Re-run the fit screen, drop terms you can no longer serve, and judge changes by qualified enquiries and booked jobs, not impressions.
Put the job-led map to work
A job-led map is only useful if it changes which pages exist and how they are measured. Build the seven steps, keep the four decision aids current, and judge every term by qualified enquiries and booked jobs over a declared window. That gives you a defensible list built from your own work, with no borrowed volume and no ranking promise.
The process is deliberately narrow: inventory your jobs, attach only truthful area modifiers, split urgency and match a page type, pull candidates with a recorded source, qualify by GC fit, map one page per term, and refresh on a cadence. What it refuses to do matters just as much. It does not hand you a portable list, it does not invent volume, and it does not promise buyers, traffic, or a position. Top positions are a target, never a guarantee. If you want help applying the seven steps to your own job mix and service area, bring your worksheet to a free strategy call and we will pressure-test it against the jobs you actually sell.
Build the map from your own jobs, not a borrowed list. Book a free 30-minute strategy call and leave with a one-page-per-term map tied to your real service area, urgency profile, and capacity, with no fabricated volume and no ranking promise.
Sources & references
- [1] Google Search Central — How Search Works (crawl, index, and serve by relevance to the query)
- [2] Google Search Central — Creating helpful, reliable, people-first content
- [3] Google Search Central — Spam policies (doorway and scaled-content abuse)
- [4] Google Business Profile Help — Improve your local ranking (relevance, distance, prominence)
- [5] U.S. Small Business Administration — Market research and competitive analysis
- [6] Google Analytics Help — Recommended lead events (generate_lead, qualify_lead, close_convert_lead)
Rank in the Map Pack, collect reviews, and keep every location active — on autopilot.