seotools.pro Get started free

Content Cannibalization Register Template

Two of your pages show up for the same query. Rankings swap week to week, and neither page wins.

This register logs each overlap from Search Console, one query per row, with clicks, impressions and position for every competing URL.

You score the intent overlap, pick one decision from clear rules, assign an owner, then check the redirect or canonical after it ships.

Inside: a fill-in register, an overlap finder, an intent scorer, decision rules, a post-change QA checklist, a CSV header and a fictional example.

Format
Editable Word .docx
Length
7 variants · ~7 pages
Price
100% free
Setup
Copy or download

Get the editable Word doc in one click.

Free · No signup · Instant download

Works withSemrushSe Ranking
UContent & On-Page

Content Cannibalization Register Template

Content cannibalization register

One row per query where two or more of your URLs show up in Search Console. Log the overlap, decide once, then prove the fix worked.

Register header

  • Site / property: [domain or Search Console property]
  • Date range used: [e.g. last 3 months], country [all / market], device [all / mobile]
  • Register owner: [name] - review cadence [monthly / quarterly]
QueryCompeting URLs (clicks / impr. / pos.)Intent overlapDecisionOwner / dueRedirect QA
[query 1][URL A: clicks / impr. / pos.]
[URL B: clicks / impr. / pos.]
[same / partial / different][keep both / differentiate / merge + 301 / canonical / noindex][name] / [date][n/a / pending / passed / failed]
[query 2][URL A: clicks / impr. / pos.]
[URL B: clicks / impr. / pos.]
[same / partial / different][keep both / differentiate / merge + 301 / canonical / noindex][name] / [date][n/a / pending / passed / failed]
[query 3][URL A: clicks / impr. / pos.]
[URL C: clicks / impr. / pos.]
[same / partial / different][keep both / differentiate / merge + 301 / canonical / noindex][name] / [date][n/a / pending / passed / failed]

Per-row detail (fill for every query)

  • Query intent (one line): [what the searcher wants to do or know]
  • Page type of each URL: [guide / product / category / comparison / tag]
  • Which URL wins, and why: [the page that matches intent best, with the most links and conversions]
  • Backlinks and conversions on the losing URL: [count / note]
  • Change made: [rewrite, merge, redirect, canonical, noindex, internal link edits] on [date]
  • Google-selected canonical after the change: [URL from URL Inspection] checked [date]

Next action

  • SEO lead: [name] - action: confirm the intent call and decision for each row by [date]
  • Editor: [name] - action: [merge copy / rewrite the losing page for its own query] by [date]
  • Developer: [name] - action: [add the 301, canonical or noindex] and send the URL list for QA
  • QA owner: [name] - action: run the post-change checks and mark the Redirect QA column

Completion check

  • Every row names one query, not a topic.
  • Each competing URL has clicks, impressions and position from the same date range.
  • Every row has one decision and one owner with a date.
  • Merged URLs return a single permanent redirect to the kept page.
  • Internal links point to the kept URL, not to the redirected or duplicate one.
  • A follow-up date is set to recheck the query in Search Console.
Download free template

Why it works

Each query where your pages compete gets one logged decision, an owner and a checked redirect or canonical, so every overlap ends with one clear fix and a checked result.

  • Every overlap comes from Search Console data, so you fix real competition instead of guessed keyword clashes.
  • Clear decision rules match Google's redirect and canonical guidance, so you never use noindex to pick a winner.
  • Post-change QA checks status codes, hops, internal links and the Google-selected canonical before the row closes.

7 ready-to-use variants

Copy all

Cannibalization Register (fill-in)

When to use: One row per shared query with competing URLs, intent overlap, decision, owner and redirect QA status.

Content cannibalization register

One row per query where two or more of your URLs show up in Search Console. Log the overlap, decide once, then prove the fix worked.

Register header

  • Site / property: [domain or Search Console property]
  • Date range used: [e.g. last 3 months], country [all / market], device [all / mobile]
  • Register owner: [name] - review cadence [monthly / quarterly]
QueryCompeting URLs (clicks / impr. / pos.)Intent overlapDecisionOwner / dueRedirect QA
[query 1][URL A: clicks / impr. / pos.]
[URL B: clicks / impr. / pos.]
[same / partial / different][keep both / differentiate / merge + 301 / canonical / noindex][name] / [date][n/a / pending / passed / failed]
[query 2][URL A: clicks / impr. / pos.]
[URL B: clicks / impr. / pos.]
[same / partial / different][keep both / differentiate / merge + 301 / canonical / noindex][name] / [date][n/a / pending / passed / failed]
[query 3][URL A: clicks / impr. / pos.]
[URL C: clicks / impr. / pos.]
[same / partial / different][keep both / differentiate / merge + 301 / canonical / noindex][name] / [date][n/a / pending / passed / failed]

Per-row detail (fill for every query)

  • Query intent (one line): [what the searcher wants to do or know]
  • Page type of each URL: [guide / product / category / comparison / tag]
  • Which URL wins, and why: [the page that matches intent best, with the most links and conversions]
  • Backlinks and conversions on the losing URL: [count / note]
  • Change made: [rewrite, merge, redirect, canonical, noindex, internal link edits] on [date]
  • Google-selected canonical after the change: [URL from URL Inspection] checked [date]

Next action

  • SEO lead: [name] - action: confirm the intent call and decision for each row by [date]
  • Editor: [name] - action: [merge copy / rewrite the losing page for its own query] by [date]
  • Developer: [name] - action: [add the 301, canonical or noindex] and send the URL list for QA
  • QA owner: [name] - action: run the post-change checks and mark the Redirect QA column

Completion check

  • Every row names one query, not a topic.
  • Each competing URL has clicks, impressions and position from the same date range.
  • Every row has one decision and one owner with a date.
  • Merged URLs return a single permanent redirect to the kept page.
  • Internal links point to the kept URL, not to the redirected or duplicate one.
  • A follow-up date is set to recheck the query in Search Console.

Search Console Overlap Finder

When to use: Pull every URL that gets impressions for one query and decide if the overlap is worth a row.

Find query overlaps in Search Console

Start with real data. The Performance report lets you filter to one query, then switch the table to the Pages tab to see every URL that got impressions for it.

Steps

  1. Open Performance, Search results. Set a date range long enough to smooth out noise, such as the last 3 months.
  2. Add a Query filter for one target term. For an exact match, choose Custom (regex) and wrap the term in ^ and $.
  3. Click the Pages tab. Note each URL with its clicks, impressions and average position.
  4. Repeat for your money queries first, then for the queries where clicks dropped.
  5. Add a row to the register when two or more URLs share the same query.

Worth a row, or noise?

What you seeLog it?
Two URLs trade places for the same query from week to weekYes
Two URLs both rank on page 1 or 2 with similar positionsYes
One URL ranks well, the other gets a handful of impressions far downWatch only
A product page and a guide share a broad head term with clearly different intentsYes, mark intent as different
Brand queries where the home page and an about page both showUsually no

Know the data

  • Google says table data grouped by Pages is aggregated by page, while chart data is aggregated by property. Totals can differ.
  • Compare URLs within the same date range, country and device.

Re-check the shared queries with the Rank Tracker.

It lists every position your site holds in Google"s top 10, so you can see when two of your URLs rank. To group a long query list into topics first, run it through the Keyword Cluster Tool.

Intent Overlap Scorer

When to use: Compare two competing pages question by question and mark the overlap as same, partial or different.

Score the intent overlap

Two pages sharing a query is not always a problem. It is a problem when they answer the same need. Answer these questions for each pair.

QuestionURL AURL B
What does the searcher want: learn, compare, buy or find a place?[answer][answer]
What page type is it: guide, product, category, comparison, tool?[answer][answer]
Which top-ranking result types does Google show for the query?[answer][answer]
What is the main heading and first paragraph about?[answer][answer]
What is the call to action?[answer][answer]

Read the result

  • Same: both pages answer the same need with the same page type. Go to merge + 301 or canonical.
  • Partial: same topic, different angle or stage. Differentiate: retarget one page to its own query.
  • Different: different needs that share a broad term. Keep both and fix internal links and titles.

Check what the losing page covers that the winner lacks with the Content Optimizer before you merge anything.

Decision Rules: Keep, Differentiate, Merge, Canonical, Noindex

When to use: Pick one fix per query, with notes from Google's redirect and canonical docs.

Decision rules

Pick one decision per query. Use the first rule that fits, top to bottom.

SituationDecisionWhat to do
Intents differ and both pages earn clicksKeep bothTune titles and H1s to each intent. Link between them with clear anchor text.
Same topic, different angle or funnel stageDifferentiateRetarget the weaker page to its own query. Remove the overlapping section or cut it down.
Same intent, one page clearly stronger, the other is not neededMerge + 301Move unique content into the winner. Add a permanent server-side redirect from the old URL.
Both URLs must stay live for users (print, filter or campaign versions)CanonicalAdd rel="canonical" with an absolute URL to the preferred page on the duplicate.
The page should not appear in Search at all (thin tag or internal search page)NoindexAdd noindex. Do not use it to pick a canonical between two pages you want indexed.

What Google's docs say

  • A 301 or 308 is a signal that the redirect target should be canonical. A 302 or 307 is not.
  • Use a permanent redirect when you are sure it won't be reverted. Server-side redirects are the most reliable.
  • Redirects and rel="canonical" are both strong signals. Listing a URL in a sitemap is a weak signal.
  • Google does not recommend noindex to choose a canonical within one site. Noindex blocks the page from Search.
  • Don't use robots.txt for canonicalization.
  • Don't name different canonicals for the same page with different methods.
  • A canonical preference is a hint, not a rule. Google may pick another URL.

Mapping many merged URLs at once? Use the 301 Redirect Map and Chain Cleanup Template. For parameter and print duplicates, use the Canonical Decision Matrix.

Post-Change QA Checklist

When to use: Check redirects, canonicals, internal links and the Google-selected canonical after the change ships.

Post-change QA

Run these checks the day the change ships, then again at your follow-up date. Mark the Redirect QA column only when every check passes.

Merge + 301

  • The old URL returns 301 or 308, not 302, 307 or a meta refresh.
  • One hop only. No chain through an old slug or http version.
  • The target returns 200 and holds the merged content.
  • The target is the most relevant page for the old URL, not the home page.
  • The redirect is server-side. Google advises JavaScript redirects only when nothing else works.

Canonical or noindex

  • The rel="canonical" uses an absolute URL and points to a page that returns 200.
  • The preferred page carries a self-referencing canonical.
  • Noindex pages are not blocked in robots.txt, so Google can see the tag.
  • Only canonical URLs are in the XML sitemap.

Signals around the page

  • Internal links, menus and breadcrumbs point to the kept URL.
  • The losing page's useful anchors now link to the winner.
  • In URL Inspection, the Google-selected canonical matches your choice. It is set at indexing time, so the live test cannot predict it.
  • Search Console shows one URL taking the impressions for the query at your follow-up check.

Check status codes and hops with the Redirect Checker. Then crawl the section with the Website Audit to find internal links that still point to redirected URLs.

Spreadsheet Header (CSV)

When to use: A paste-ready header row and allowed values to run the register in Google Sheets or Excel.

Paste-ready spreadsheet header

Paste this row into cell A1 of Google Sheets or Excel, then split text to columns by comma. One row per query and competing URL.

query,url,clicks,impressions,avg_position,intent,intent_overlap,decision,kept_url,change_type,owner,due_date,status_code,redirect_hops,final_url,google_selected_canonical,internal_links_updated,followup_date,status

Allowed values

  • intent_overlap: same, partial, different
  • decision: keep-both, differentiate, merge-301, canonical, noindex
  • internal_links_updated: yes, no, n/a
  • status: logged, decided, in-progress, shipped, qa-passed, qa-failed, monitor

Sheet tips

  • Group rows by query so each overlap reads as one block.
  • Highlight merge-301 rows where status_code is not 301 or 308.
  • Highlight rows where redirect_hops is above 1.
  • Flag rows where google_selected_canonical differs from kept_url.

Worked Example (fictional plant shop)

When to use: A filled-in register for an invented store, with one merge, one keep, one canonical and one noindex.

Worked example: Marrowfen plant shop

Example only. Marrowfen is an invented online plant shop. Its URLs, people, dates and numbers below are made up to show a filled-in register.

  • Property: marrowfen.example
  • Date range: last 3 months, all countries, all devices
  • Register owner: Priya, SEO lead
QueryCompeting URLs (clicks / impr. / pos.)Intent overlapDecisionOwner / dueRedirect QA
how to repot a monstera/blog/repot-monstera/: 140 / 6,200 / 9.1
/blog/monstera-care-guide/: 95 / 5,800 / 11.4
SameMerge + 301 into the care guidePriya / 14 OctPassed 20 Oct
monstera soil mix/shop/aroid-soil-mix/: 60 / 3,100 / 8.7
/blog/best-soil-for-monstera/: 75 / 3,900 / 7.9
DifferentKeep both, add linksTom / 21 Octn/a
monstera care/blog/monstera-care-guide/: 310 / 18,400 / 6.2
/blog/monstera-care-guide/?print=1: 4 / 900 / 14.0
SameCanonical to the clean URLLeo, dev / 12 Octn/a
monstera/tag/monstera/: 2 / 1,400 / 31.5
/shop/monstera-deliciosa/: 120 / 22,000 / 12.3
DifferentNoindex the tag archiveLeo, dev / 12 Octn/a

What the team did

  • Moved the step-by-step repotting section into the care guide, then 301 redirected /blog/repot-monstera/.
  • QA found a two-hop chain through an old http URL. The developer pointed it straight to the care guide.
  • The soil guide now links to the shop page with the anchor "aroid soil mix". The shop page links back for care tips.
  • The print version got a canonical to the clean URL, with an absolute address.
  • The thin tag page got noindex because it had no unique content. It was not used to pick between two pages.

Follow-up check (fictional)

  • URL Inspection showed the care guide as the Google-selected canonical for the print URL.
  • At the follow-up date, the repotting query showed impressions on the care guide only.
  • The soil query still shows both URLs. That is fine: one sells, one teaches.

How to use this template

  1. Pick a date range and pull your top queries from the Search Console Performance report.
  2. Filter to one query, open the Pages tab and log every URL that gets impressions.
  3. Score the intent overlap for each pair of competing pages.
  4. Apply the decision rules top to bottom and record one decision per query.
  5. Assign an owner and due date, then ship the merge, rewrite, redirect, canonical or noindex.
  6. Run the post-change QA checks and mark the Redirect QA column.
  7. Recheck the query in Search Console at the follow-up date and close or reopen the row.

Pro tips

  • Log queries, not topics. A topic hides which pages actually compete.
  • Merge content before you redirect. A redirect alone throws away what the losing page had.
  • Update internal links to the kept URL the same day the redirect ships.
  • Don't use noindex to choose between two pages you want indexed. Use a redirect or canonical.
  • Two pages for one broad term can be fine when one sells and one teaches.

Frequently asked questions

What is content cannibalization?

Two or more pages on your site compete for the same query and the same search intent, so neither ranks as well as one focused page could.

What goes into a cannibalization register?

The query, every competing URL with its clicks, impressions and position, the intent overlap, one decision, an owner with a due date and the post-change QA result.

Should I use a 301 or a canonical tag?

Use a 301 when the losing page is no longer needed. Use rel=canonical when both URLs must stay live for users. Google treats redirects as the stronger signal.

Can I fix cannibalization with noindex?

Google does not recommend noindex to pick a canonical within one site, because it blocks the page from Search. Keep noindex for pages that should not appear at all.

How is this different from a content audit?

A content audit reviews every page. This register only tracks queries where your own URLs compete, and the fix for each one.