Most sites I audit do not have a keyword problem. They have an assignment problem. The queries were researched, the content was written, and somewhere along the way four pages ended up targeting "GST registration process" from slightly different angles. Google has to choose between them on every search, the internal links point in four directions, and no single page accumulates enough signal to win.
Keyword mapping is the fix, and the prevention. It is the second half of the keyword research guide: research finds the demand, mapping decides which URL answers it. Done once and maintained, it becomes the source of truth for every content decision on the site.
The principle: one page per intent cluster
A keyword map is not one page per keyword. That produces hundreds of near-identical pages. It is one page per intent cluster: a group of queries that mean the same thing, want the same kind of answer, and are served by the same SERP. "How to register for GST", "GST registration process", "GST registration steps online" and "new GST registration" are four queries and one cluster. One page should own all four.
The test for whether two queries belong on the same page is simple: search both and compare the results. If the top results largely overlap, they are one cluster. If the page types differ, as in "GST registration" versus "GST registration fees", they are different intents, and probably different pages, even though they share most of their words. The search intent sub-guide covers how to read that comparison.
Primary and secondary terms
Within a cluster, one query is the primary term: the phrasing with the clearest intent and usually the most demand. It goes in the title, the H1 and the opening paragraph, naturally. The rest are secondary terms: variations, long-tail phrasings and sub-questions. They shape the H2s, the FAQ and the body. A page that owns a cluster well ranks for dozens of secondaries it never explicitly targeted, because it answers the whole need rather than the exact string.
Building the map
I keep the map as a spreadsheet, one row per cluster. The columns are chosen so that every content decision can be made from the row without opening another document.
Cluster the research
Group the raw keyword list by meaning and SERP overlap, not by shared words. Tools can do a first pass; I verify the clusters that matter by hand against the SERP.
Name the intent and page type for each cluster
Informational guide, comparison, product, category, pricing, location page, tool. This decides what gets built, so it is settled before any URL is assigned.
Assign an existing URL or mark a gap
Crawl the site, pull every indexable URL, and match each cluster to the page that should own it. Clusters with no good match are gaps. Pages with no cluster are candidates for consolidation or removal.
Record the current state
From Search Console, note which URL currently gets impressions for the primary term. If it is not the assigned URL, you have found cannibalisation or a misassignment.
Decide the action
Build, improve, consolidate, redirect or leave. Every row gets one. Rows without an action are not decisions.
Add the linking plan
Which hub or parent links to this page, and which sibling pages it should link to. This is what later makes the internal linking coherent.
The mapping table
Here is the shape of the table, with illustrative rows for a fictional payments SaaS. Volumes are omitted deliberately; the map is about assignment, and the numbers come from your own research.
| Cluster (primary term) | Secondary terms | Intent | Page type | Assigned URL | Currently ranking URL | Action |
|---|---|---|---|---|---|---|
| payment gateway for small business | payment gateway india small business, online payment for small business | Commercial | Solution page | /solutions/small-business/ | /blog/payment-gateway-guide/ | Improve solution page; link from guide; retarget guide to informational cluster |
| what is a payment gateway | payment gateway meaning, how payment gateway works | Informational | Explainer | /blog/what-is-a-payment-gateway/ | Same | Leave; refresh annually |
| payment gateway charges | payment gateway fees india, transaction charges upi, mdr charges | Commercial, price | Pricing explainer | Gap | /pricing/ (weak) | Build explainer; link to pricing page |
| upi autopay integration | upi autopay api, recurring upi payments | Transactional, developer | Product page plus docs | /products/upi-autopay/ | /docs/autopay/ and /blog/upi-autopay-launch/ | Consolidate blog into product page; keep docs as technical reference |
| razorpay alternative | razorpay competitors, payment gateway like razorpay | Commercial | Comparison | Gap | None | Build fair comparison page |
The two columns that do the real work are "Assigned URL" and "Currently ranking URL". Everywhere they disagree is a named problem, and "Action" is where the fix is decided.
Detecting cannibalisation
Cannibalisation is two or more of your own URLs competing for the same cluster. It is harmful when Google alternates between pages, when neither reaches the position one would, or when the wrong page type wins.
Symptoms
In Search Console's Performance report, filter by query and open the Pages tab: if more than one URL has meaningful impressions for the same query, you have it. Positions that swing by several places week to week are another sign, because Google is swapping which URL it serves. A page ranking for a query it was never meant for, while the intended page sits lower, is a third.
Causes
The most common cause is organisational: two teams, or the same team two years apart, writing on the same topic without a map. The second is template-driven: a category page and a filtered variant with near-identical content, which the canonical tags sub-guide handles. The third is intent drift: a blog post that started informational accumulated commercial copy and now overlaps the product page.
Consolidation decisions
When two pages overlap, there are four honest options, and the choice depends on whether the overlap is real and which page has the stronger signals.
| Situation | Decision | How |
|---|---|---|
| Same intent, both pages weak | Merge into one | Combine the best content on the URL with more links and history; 301 the other |
| Same intent, one page clearly stronger | Redirect the weaker | Fold any unique content into the stronger page first, then 301 |
| Different intents that drifted together | Differentiate | Rewrite each to its own intent; remove the overlapping sections; link them to each other with explicit anchors |
| Legitimate variants (category and sub-filter) | Canonicalise or noindex | Point the variant's canonical at the parent, or noindex it if it has no search value |
Merging is the option people resist, because removing a page feels like losing something. In my experience it usually produces the clearest gain: the surviving page inherits the links and history of both and finally has enough signal to compete. The note on publishing more is partly about this.
Mapping to templates on larger sites
On a site with a few hundred pages, the map is a list of URLs. On a catalogue, a marketplace or a programmatic build with tens of thousands of pages, you map clusters to templates and rules rather than to individual URLs.
The map then has rows like "city plus service" owning the cluster pattern "{service} in {city}", with a rule for which cities qualify, which filter combinations are allowed to be indexable, and which variants canonicalise to which parents. A sub-category page template owns "{product type} under {price}" clusters only where the SERP shows category pages and the catalogue has enough products to justify one. The programmatic SEO guide and the site architecture sub-guide cover how those rules translate into URLs.
The failure mode at scale is the inverse of the small-site one: instead of two pages for one cluster, you get one template generating pages for clusters that do not exist. "Plumber in a village with no plumbers" is a page with no query behind it. The map is where that rule is written down, which is why I treat programmatic SEO as an exercise in mapping first and templating second.
Keeping the map alive
A map built once and never opened again is worth about as much as the audit it came from. Mine is checked whenever a page is briefed, and quarterly against Search Console to catch new cannibalisation and intent shifts. Every new page proposal starts with "which row does this belong to?" If that row already has a URL, the proposal becomes an update, not a new page.
A keyword map is a set of promises: this URL answers this need, and no other URL on the site will try to.
Frequently asked questions
How many keywords should one page target?
One primary term and as many secondary terms as genuinely share its intent, which can be anywhere from a handful to several dozen. The question to ask is not how many keywords but whether every query assigned to the page would be satisfied by the same answer.
Is keyword cannibalisation always bad?
No. Holding two results for a branded query, or having a guide and a product page both appear for a mixed-intent query, can be fine. It is a problem when Google alternates between your pages, when neither reaches its potential position, or when the wrong page type wins the query.
Should I delete or redirect cannibalising pages?
Redirect, almost always, after moving any unique content to the surviving page. A 301 passes the links and history of the removed page to the one that remains. Plain deletion throws that away.
How do I map keywords for a site with thousands of pages?
Map clusters to templates and rules rather than to individual URLs. Define which query patterns each template owns, which variants are indexable, and where canonicals point. Then spot-check representative pages against Search Console.
What tools do I need for keyword mapping?
A spreadsheet, a site crawler to list your URLs, Search Console for the query-to-page data, and a keyword tool for the research itself. The map is a thinking document; the tools feed it but do not replace the decisions.
Where this connects
This sub-guide extends the keyword research guide, and the map is the input to every brief in my SEO content framework. The linking plan column feeds the internal linking at scale experiment, where assignment decisions were turned into link rules across a large site. The SaaS organic growth case study shows what untangling overlapping pages looks like in practice. If you would like the map built and maintained for your site, that is part of my content SEO service.