Short answer: Build a local keyword map with one spreadsheet that assigns every keyword cluster to exactly one page, using a service-by-city matrix and the one-intent rule: if two pages serve the same intent, merge, canonicalize, or differentiate them. Add an AI-search column for conversational queries, and revisit the map whenever you publish.
Here is how keyword cannibalization starts in a trades business: the site launches with a drain cleaning page and a blog post about drain cleaning. Then the SEO hire adds "drain cleaning in Springfield" and "Springfield drain cleaning service" as new pages. Then the blog gets "clogged drain repair" and "drain unclogging tips." Five pages, one intent, and Google has no idea which one to rank, so it ranks none of them well.
The prevention is a keyword map: one spreadsheet that assigns every keyword cluster to exactly one page, before anyone writes or optimizes anything. This post is the workshop version for home-service companies. You will build the service-by-city matrix, learn the one-intent rule with trade examples, get the free detection methods for cannibalization that is already there, and add the AI-search column that maps how people actually ask assistants for contractors.
A keyword map is a spreadsheet with one row per keyword cluster. Each row names the primary keyword, three to five secondary keywords, the search intent behind them, the one page assigned to own that intent, and the page's status: exists, needs work, or does not exist yet. That is the whole tool. Its job is to make targeting deliberate instead of accidental.
What it is not: a wish list of keywords you would like to rank for, and definitely not a page-per-variation generator. The worst keyword maps in trades SEO are the ones that turn "AC repair Dallas," "air conditioner repair Dallas," and "Dallas AC repair company" into three separate pages. That is not a map. That is an instruction manual for cannibalization. As Backlinko puts it in their cannibalization guide, without actively mapping keywords to URLs, you are likely to see cannibalization at some point. The map is what turns "likely" into "never."
The entire rule of keyword mapping in one line. Keywords that share a search intent belong on the same page. Keywords with different intents earn their own pages.
For a home-service company, the natural shape of the map is a service-by-city matrix. Rows are your money services, columns are the towns you genuinely serve, and each cell is one keyword cluster with an assigned page. Start from revenue, not volume: map the services that pay the bills first.
A finished matrix for a typical plumber has maybe forty cells, and only half of them justify a page. That restraint is the point. Compare it to your service pages as they exist today and the gaps will name themselves.
Intent is the decider, not wording. Two phrases with different words but the same intent belong on one page. Two phrases with similar words but different intents belong on two. The test: search both and look at the top ten results. If the same pages keep showing up, it is one intent.
The expensive mistake is the reverse: splitting one intent into many pages because the keywords look different in a tool. Keyword tools count words. Your map counts intents.
If the site already exists, the map also works as a diagnostic. Three free methods, in order of reliability:
The symptom to watch for: two of your pages trading positions for the same query over weeks, with neither ever settling in the top three. That swap is Google telling you it cannot pick a winner, because you built two contestants.
Detection without a fix menu is just anxiety. When two pages compete for one intent, pick one:
Then update the map. The fix that does not get recorded gets repeated next quarter.
Here is the part no keyword-mapping guide covers, and in 2026 it matters. When someone asks an AI assistant for a contractor, the query is conversational: "who's the best emergency plumber open now near me," not "emergency plumber Springfield." Those conversational queries need a home in your map too.
Add a second column to every matrix cell: the conversational version of the query, and which FAQ or answer block on which page captures it. The service page keeps its keyword cluster for Google; its FAQ block answers the conversational query for AI systems. The same page serves both, as long as you planned for both. Map keywords into your reviews and profile posts the same way, service names written naturally in review replies and posts get indexed by AI systems as corroborating signals.
The professional version of this, testing which of your pages AI assistants actually cite for homeowner questions, is what our AEO and LLM optimization service does monthly. The DIY version is the map column above, plus the deeper protocol in our guide to appearing in Google AI Overviews.
A keyword map is a workflow, not a document. The maintenance is small:
If you are building the site from scratch, pair this map with our DIY local SEO checklist, which turns the matrix into an actual build order.
A keyword map is a spreadsheet that assigns one primary keyword, or one cluster of same-intent keywords, to one page on your site. Every row names the keyword, the target page, and the intent behind it. Its job is to make targeting deliberate: before you write or optimize anything, the map tells you which page owns which search.
One primary keyword and three to five close secondary keywords that share the same search intent. For example, a drain cleaning page might target 'drain cleaning [city]' as primary, with 'clogged drain service,' 'drain unclogging,' and 'drain cleaner near me' as secondaries. Different intent means a different page, not a longer keyword list.
Not always. If the two pages serve different intents, like a service page and a blog post on the same topic, Google can rank both. It becomes cannibalization when two similar pages chase the same intent and one stronger page would win more traffic. Check Search Console: one query sending impressions to two similar URLs is the signal.
Use Google Search Console: open the Performance report, filter by a query, then open the Pages tab to see every URL getting impressions for it. Two similar pages sharing one query is your signal. You can also run site:yourdomain.com plus the keyword in Google and look for near-identical pages in the results. Both methods cost nothing.
No, and this is where most trades keyword maps go wrong. A city gets its own page only when you have genuine local proof there: jobs completed, reviews from residents, local specifics. A city with no proof gets folded into the service page or the service-area hub. Ten thin city pages cannibalize each other; three strong ones do not.
Our free audit scores every page against your money keywords, finds the cannibalization pairs, and hands you the merge list in priority order, plus whether AI assistants name you or your competitor.
Delivered within 48 hours. Yours to keep.