Internal Linking Opportunity Map Template
Most internal linking advice ends at "link to your important pages". Then nobody knows which sentence to edit, who does it or whether the link works.
This template fixes that. One row per link: source page, target buyer page, anchor, exact placement, owner and a QA status.
The rules follow Google's link best practices: crawlable links (plain a href tags) and descriptive anchor text.
The original steps are still here, updated: architecture, buyer pages, source pages, orphans and topic clusters. Plus a filled-in example.
- Format
- Editable Word .docx
- Length
- 9 variants · ~9 pages
- Price
- 100% free
- Setup
- Copy or download
Get the editable Word doc in one click.
Free · No signup · Instant download
Internal Linking Opportunity Map Template
Internal linking opportunity map
Site: [domain] · Map owner: [name] · Crawl or export date: [date] · Review date: [date + 4 weeks]
Plan every link here before anyone edits a page. One row is one link. The target is always a page you want people to buy, book or sign up from.
| Source page | Target (buyer) page | Contextual anchor | Placement | Owner | QA / status |
|---|---|---|---|---|---|
| [/blog/source-article] | [/product-or-service-page] | [descriptive anchor, 2-6 words] | [H2 section + paragraph, or sentence to edit] | [name, due date] | [Planned / Added / QA passed / Fix needed] |
| [source URL] | [target URL] | [anchor] | [placement] | [owner] | [status] |
| [source URL] | [target URL] | [anchor] | [placement] | [owner] | [status] |
How to fill each column
- Source page: an indexable page on the same topic that already gets visits or impressions.
- Target (buyer) page: the final URL, not a redirect. Use the canonical version.
- Contextual anchor: words that make sense on their own and describe the target. No "click here".
- Placement: the exact heading and sentence, so the editor doesn't guess. Body copy, not footer or sidebar.
- Owner: one person who edits the page, with a due date.
- QA / status: move to "QA passed" only after the checks below.
QA for each row
- Link is a plain
<a href="...">to a real URL and shows in the page HTML. - Target returns 200, is the canonical URL and is not noindex.
- Anchor matches the table and reads naturally in the sentence.
- No other link to the same target sits right next to it.
Completion check: every row is "QA passed" or has a dated reason why not, each target page gained at least one new contextual link, and the review date is in the owner's calendar.
Why it works
Every planned internal link gets a buyer-page target, an exact placement, an owner and a QA check, so links get added and actually work.
- The fill-in map records the exact sentence for each link, so editors can act without a second meeting.
- The QA checklist follows Google's crawlable link guidance and catches links that are not plain a href elements.
- The fictional Tallyfin example shows a failed row, its fix and a completion check, not just perfect rows.
9 ready-to-use variants
Copy allInternal Linking Opportunity Map (fill-in)
When to use: One row per planned link: the page that gives it, the buyer page that gets it, the anchor, where it goes, who adds it and how it was checked.
Internal linking opportunity map
Site: [domain] · Map owner: [name] · Crawl or export date: [date] · Review date: [date + 4 weeks]
Plan every link here before anyone edits a page. One row is one link. The target is always a page you want people to buy, book or sign up from.
| Source page | Target (buyer) page | Contextual anchor | Placement | Owner | QA / status |
|---|---|---|---|---|---|
| [/blog/source-article] | [/product-or-service-page] | [descriptive anchor, 2-6 words] | [H2 section + paragraph, or sentence to edit] | [name, due date] | [Planned / Added / QA passed / Fix needed] |
| [source URL] | [target URL] | [anchor] | [placement] | [owner] | [status] |
| [source URL] | [target URL] | [anchor] | [placement] | [owner] | [status] |
How to fill each column
- Source page: an indexable page on the same topic that already gets visits or impressions.
- Target (buyer) page: the final URL, not a redirect. Use the canonical version.
- Contextual anchor: words that make sense on their own and describe the target. No "click here".
- Placement: the exact heading and sentence, so the editor doesn't guess. Body copy, not footer or sidebar.
- Owner: one person who edits the page, with a due date.
- QA / status: move to "QA passed" only after the checks below.
QA for each row
- Link is a plain
<a href="...">to a real URL and shows in the page HTML. - Target returns 200, is the canonical URL and is not noindex.
- Anchor matches the table and reads naturally in the sentence.
- No other link to the same target sits right next to it.
Completion check: every row is "QA passed" or has a dated reason why not, each target page gained at least one new contextual link, and the review date is in the owner's calendar.
Choose Target Buyer Pages
When to use: Decide which commercial pages get internal link support first, so the map points at revenue, not at random posts.
Pick the pages that should receive links
Not every page needs help. Start with pages where a visitor can buy, book, request a quote or start a trial.
- List buyer pages: [product / service / pricing / demo pages].
- Add business value: high, medium or low, agreed with sales or the site owner.
- Check current support: how many internal pages link to each one today, and from where.
- Check search potential: in Search Console, note queries where the page already shows but sits below the top results.
| Buyer page | Value | Internal links in now | Main query | Priority |
|---|---|---|---|---|
| [URL] | [High / Med / Low] | [count + source] | [query] | [1-3] |
High value plus few internal links means priority 1. Those targets go into the opportunity map first.
Keep the list to 5-15 pages per round. Revisit it each quarter, because offers and priorities change.
Find Source Pages
When to use: Find existing pages that can send a relevant contextual link to each target buyer page.
Source relevant pages to link from
Start from one target page and work backwards. You want pages that already talk about the same problem the target solves.
- Search your own site: use [site:yourdomain.com topic] plus synonyms to find pages that mention the topic.
- Use Search Console: the Links report shows internal top linked pages. It is a sample capped at 1,000 rows, so treat it as a lead list, not a full count.
- Use query data: pages that get impressions for queries close to the target's topic are strong sources.
- Group by topic: paste your keyword list into the Keyword Cluster Tool to see which pages belong together and should link to each other.
Keep a source only if a reader of that page would want the target next. Drop loose matches.
Copy each kept pair into the opportunity map. Re-run this search whenever you publish a substantial new page.
Anchor & Placement Rules
When to use: Write anchors and choose placements that follow Google's link guidance and read naturally.
Write the anchor
Google's link best practices ask for anchor text that is descriptive, reasonably concise and relevant to both pages.
- Read it alone: if the anchor makes no sense out of context, rewrite it.
- Skip generic text: replace "click here" and "read more" with what the reader gets.
- Vary wording: use natural variations around [target topic] instead of one exact-match phrase sitewide.
- Don't stuff keywords: Google lists keyword stuffing as a spam policy violation.
- Image links: Google uses the image alt text as the anchor, so write a descriptive alt.
Weak: "For more tips, click here." Better: "See our guide to choosing running shoes for flat feet."
Choose the placement
- Put the link in body copy where the reader needs the next step, not only in nav or footer.
- Let surrounding words add context. Avoid several links stacked next to each other.
- Edit one existing sentence or add one short sentence. Don't bolt on a block of links.
- There's no ideal link count per page. Add links where they help, and stop before it feels like a list of links.
Record the exact heading and sentence in the Placement column, for example [H2 "Pricing options", 2nd paragraph].
Link QA Checklist
When to use: Confirm each new link is crawlable, points at the right URL and survives the next release.
Check every new link before you close the row
Google reliably follows <a> elements with an href attribute that holds a real URL. Other patterns may be missed.
- Markup: the link is
<a href="/target">. Not a<span>, a router-only attribute orjavascript:. - Raw HTML: open the source page in Get Source Code of Webpage and search for the target URL. It shows the HTML before JavaScript runs.
- Rendered HTML: if JavaScript inserts the link or anchor, confirm it in the Search Console URL Inspection tool.
- Destination: the target returns 200, is canonical and indexable. Not a redirect, 404 or noindex page.
- Anchor: matches the map and reads well in context.
- On-page check: use the seotools.pro SEO Extension for a quick on-page review while you browse the edited page.
QA signed off by: [name] · Date: [date] · Rows failed and reason: [notes]
Site Architecture & Hierarchy
When to use: Keep important pages easy to reach so the opportunity map builds on a clean structure.
Map a shallow, logical hierarchy
Contextual links work best on top of a clear structure. Check the structure first so you don't patch a buried page with one blog link.
- Top-level sections: group pages under clear [hub / category] pages that link down and back up.
- Click depth: note how many clicks each buyer page sits from the homepage. Flag any buried far deeper than the rest.
- Hub pages: give each group a category or pillar page with a direct path from the homepage.
- Navigation and breadcrumbs: confirm they match the real hierarchy, not a legacy menu.
Write down the intended parent and child for each priority page before you change links.
A free website audit crawls real pages from your menu and sitemap and flags click depth, broken links and orphan pages.
Fix Orphan Pages & Broken Links
When to use: Find pages with no internal links in and repair internal links that hit errors or redirects.
Repair orphans and broken links
Google's guidance is simple: every page you care about should have a link from at least one other page on your site. An orphan has none, so crawlers and readers struggle to find it.
- Find orphans: compare your sitemap URL list with pages that receive internal links. Any [orphan URL] with zero links in goes on the list.
- Add contextual links: add each important orphan as a target row in the opportunity map.
- Find broken links: crawl for internal links that point to 404s or redirects.
- Fix or remove: point links at the final live URL, or remove links to retired pages.
Linking straight to the final URL saves users a hop and keeps your reports clean.
Re-crawl after big releases and on a fixed schedule. New orphans and broken links appear as the site changes.
Topic Cluster Interlinking
When to use: Wire a pillar page and its supporting articles into a fixed hub-and-spoke pattern that feeds buyer pages.
Interlink topic clusters
The opportunity map finds links case by case. A topic cluster is a fixed pattern you set once and apply to every new page in the group.
- Define the pillar: the broad [pillar topic] page that covers the subject and acts as the hub.
- Pillar to every spoke: the pillar links to each supporting article.
- Every spoke to the pillar: each supporting article links back up.
- Spokes to the buyer page: where the reader is ready, link to the matching product or service page.
- Spoke to spoke: cross-link closely related articles only where it helps the reader.
Log each spoke-to-buyer link as a row in the opportunity map, so it gets an owner and QA like any other link.
When you publish a new article in the cluster, wire it in the same day.
Worked Example (fictional bookkeeping software)
When to use: A filled-in opportunity map for an invented bookkeeping SaaS pushing links to its payroll and pricing pages.
Worked example: Tallyfin payroll push
Example only. The company, people, URLs and figures are invented to show what a usable, filled-in version looks like.
Site: tallyfin.example · Map owner: Dana (SEO) · Export date: 3 Nov · Review date: 1 Dec
Targets: /payroll-software (high value, 2 internal links in) and /pricing (high value, nav link only).
| Source page | Target (buyer) page | Contextual anchor | Placement | Owner | QA / status |
|---|---|---|---|---|---|
| /blog/how-to-run-payroll-small-business | /payroll-software | payroll software for small teams | H2 "Choose a payroll tool", 1st paragraph | Leo, 7 Nov | QA passed 8 Nov |
| /blog/contractor-vs-employee-taxes | /payroll-software | pay contractors and employees in one run | H2 "Paying a mixed team", last sentence | Leo, 7 Nov | Fix needed: link added in a JS widget, not in HTML |
| /guides/year-end-close-checklist | /pricing | compare Tallyfin plans | Step 6, after the software checklist | Mia, 10 Nov | QA passed 11 Nov |
| /blog/bookkeeping-for-freelancers | /payroll-software | payroll for one-person companies | H2 "When you hire your first employee" | Mia, 10 Nov | Planned |
Fix for row 2: the CMS widget printed a <span onclick>. Leo replaced it with a plain <a href="/payroll-software"> and the row passed QA on 12 Nov.
Completion check (1 Dec): 3 of 4 rows passed. Row 4 moved to the next round because the article is being rewritten.
Why this worked
- Each row named the exact sentence, so editors didn't have to guess where the link went.
- QA caught a link that looked fine in the browser but wasn't a crawlable
<a href>. - Every row pointed at a buyer page, so the work supported revenue pages, not just more blog links.
Next step
Run a free website audit to find orphan pages and deep buyer pages, then check each new link in the raw HTML with Get Source Code of Webpage.
How to use this template
- List 5-15 buyer pages and mark their business value and current internal links.
- For each buyer page, find 2-5 relevant source pages with site: search and Search Console.
- Add one row per link to the opportunity map with a descriptive anchor.
- Write the exact heading and sentence in the Placement column.
- Assign one owner and a due date per row.
- After editing, check the raw HTML for a plain a href link to the final URL and mark QA.
- Fix orphans and broken internal links you found along the way.
- Review the map after four weeks and start the next round.
Pro tips
- Point every row at a buyer page. Blog-to-blog links are fine, but they belong in the cluster plan.
- Read the anchor alone. If it doesn't say where it goes, rewrite it.
- Link to the final URL, never a redirect.
- A link that only appears after a click or in a JS widget may not be crawlable. Check the HTML.
- Don't mark a row done until QA passed. "Added" is not "working".
Frequently asked questions
What is an internal linking opportunity map?
It's a sheet that lists each internal link you plan to add: the source page, the target page, the anchor, where it goes, who adds it and how it was checked. It turns "add more internal links" into tasks someone can finish.
What makes an internal link crawlable for Google?
Google reliably follows a elements with an href attribute that holds a real URL. Links built from span elements, router-only attributes or javascript: URLs may be missed. Links added with JavaScript can work if the rendered HTML has a standard a href link.
How should I write anchor text for internal links?
Make it descriptive, reasonably concise and relevant to both pages. Avoid generic text like "click here". Don't stuff keywords: Google treats keyword stuffing as a spam policy violation. For image links, Google uses the alt text as the anchor.
How many internal links should a page have?
Google's guidance gives no ideal number. Link where it helps the reader understand the page or take the next step, and avoid pages that are mostly links. Every page you care about should have at least one link from another page on your site.
Can I use the Search Console Links report to find opportunities?
Yes, as a starting point. It shows internal top linked pages and which pages link to them. It's a sample, tables are capped at 1,000 rows and some URLs are left out, so pair it with a crawl.
Should internal links be nofollow?
Not for pages you want crawled. Google's link guidance uses nofollow, sponsored and ugc for links you don't vouch for, such as paid or user-generated links. A normal internal link to your own buyer page doesn't need any rel value.