{"slug":"sop-255-implement-an-internal-linking-strategy-on-a-website","title":"Implement An Internal Linking Strategy On A Website","tags":["source:clickminded","type:sop","server:clickminded-sop","implement","internal","linking","strategy"],"agent_summary":"SOP 255: Implement An Internal Linking Strategy On A Website This SOP outlines how to audit, plan, implement, and validate an internal linking strategy on WordPress using Screaming Frog, Google Search","trigger_phrases":["implement an internal linking strategy on a website","how to implement an internal linking strategy on a website"],"runnable":false,"markdown":"\r\nSOP 255: Implement An Internal Linking Strategy On A Website\r\n\r\nThis SOP outlines how to audit, plan, implement, and validate an internal linking strategy on WordPress using Screaming Frog, Google Search Console, and Google Sheets. It standardizes anchors, placement, and ongoing monitoring for small sites.\r\n\r\n__Last Updated / Reviewed:__ 09/22/2025\r\n\r\n__Execution Time:__ 3–6 hours for the initial sprint (≤500 URLs) + 15–30 minutes/month to monitor\r\n\r\n__🚀 Goal:__ Implement a practical internal linking strategy that improves crawlability, relevance, and rankings on a WordPress site.\r\n\r\n__🤞 Ideal Outcome:__ Ensure priority hubs and money pages receive consistent, contextual internal links; eliminate orphaned pages, redirects, and broken links; and track impact in Google Search Console.\r\n\r\n__🤔 Why this is important:__ Internal links help search engines understand site structure, distribute authority, and improve discovery while guiding users to related content.\r\n\r\n__🧐 Where this is done__ Screaming Frog (desktop), Google Search Console (web), Google Sheets (web), and WordPress (wp-admin). \r\n\r\n__🗓️ When this is done:__ When running an initial sprint, iterate monthly and whenever new content is published.\r\n\r\n__👨 Who does this:__ SEO specialist or content manager with WordPress Editor access.\r\n\r\n__⚠️Prerequisites or requirements: __\r\n\r\n• WordPress Editor access to target pages/posts\r\n\r\n• Google Search Console access to the property\r\n\r\n• Screaming Frog installed (free or paid)\r\n\r\n[__Click here to get the most up-to-date version of this SOP__](https://members.clickminded.com/sop/255)\r\n\r\n## Crawl and export baseline in Screaming Frog\r\n\r\n__Note: __We perform this baseline crawl and export in Screaming Frog to capture a clear snapshot of the website’s current internal linking and technical health before making any changes. This provides visibility into the existing site structure, page status codes, redirects, and high-level issues, ensuring no important page is overlooked or orphaned. By documenting these details upfront, we create a reliable benchmark that allows us to track improvements, measure the impact of internal linking strategies, and quickly identify any unintended issues after implementation.\r\n\r\n### 01▸ If you are new, create an account with [Screaming Frog](https://www.screamingfrog.co.uk/), download and install the[ SEO Spider Tool. ](https://www.screamingfrog.co.uk/seo-spider/)\r\n\r\n### 02▸ Next, key in your webpage link under \"Enter URL to spider\" and click \"Start\".\r\n\r\n### 03▸ Confirm the status bar shows \"Completed\" at 100%. Large sites may take minutes or hours.\r\n\r\n### 04▸ Click the \"Internal\" tab and click \"Export\" to save CSV.\r\n\r\n### 05▸ Click the \"Response Codes\" tab > tap on the double arrows > click \"Export\" to save CSV.\r\n\r\n### 06▸ Go to \"Reports\" > \"Redirects\" > \"Redirect Chains\" and click \"Save\".\r\n\r\n### 07▸ Go to \"Reports\" > \"Issues Overview\" and click \"Save\".\r\n\r\n### \r\n\r\n### 08▸ Go to \"Bulk Export\" > \"Links\" > \"All Outlinks\" and click \"Save\".\r\n\r\n### \r\n\r\n### 09▸ Finally, go to \"Reports\" > \"Orphan Pages\" and click \"Save\".\r\n\r\n\r\n## Identify target pages in Google Search Console\r\n\r\n__Note:__ You identify target pages in Google Search Console to ensure your internal linking strategy supports the URLs that matter most for visibility and performance. GSC highlights which pages are already earning impressions and clicks, as well as those ranking on the cusp of stronger positions. By prioritising these pages, you can strengthen their authority with contextual internal links, improve their chances of climbing in search results, and focus efforts on the URLs that will deliver the greatest impact on traffic and conversions.\r\n\r\n### 01▸ Open [Google Search Console](https://search.google.com/search-console/about) and select the correct property.\r\n\r\n### 02▸ Click \"Performance\" > \"Pages\" tab > sort by \"Clicks\" (descending).\r\n\r\n### 03▸ Click \"Export\" and choose \"CSV\" to download the results.\r\n\r\n### \r\n\r\n### 04▸ Next, click the \"Queries\"   tab, hover over the filter button and select \"Top queries\".\r\n\r\n### 05▸ Next actions:\r\n\r\n- __Review Top Queries__\r\n\r\nNote the highest-impression and highest-click queries. Pay attention to queries ranking on page 2 (positions 11–20), as these are prime candidates for improvement with internal links.\r\n\r\n- __Build a Target Page List__\r\n\r\nCombine your __top pages (by clicks)__ and __their associated queries__ into a worksheet. This becomes your priority list for internal linking.\r\n\r\n## Build cluster map and link plan in Google Sheets plan template\r\n\r\n### 01▸ Open Template 148: Internal Linking Plan ([web version](https://members.clickminded.com/template/148/)). The example and explanation can be seen below:\r\n\r\n### 02▸ Paste target URLs into the \"URL\" column.\r\n\r\n__Note:__ Use canonical or final URLs only; no redirects. Enter one URL per row and match your site's trailing-slash style; include parameters only if canonical. Exclude non-indexable pages you won’t link to.\r\n\r\n### 03▸ Set \"Type\" for each target to \"Hub\", \"Spoke\", or \"Money\".\r\n\r\n__Note:__ \"Hub\" pages are pillar or overview pages. \"Spoke\" pages support the cluster. \"Money\" pages focus on conversions.\r\n\r\n### 04▸ Enter \"Priority\" and 4. \"Primary Topic/Keyword\" for each target.\r\n\r\n__Note:__ Set \"Priority\" based on business value and current performance (e.g., 1–3 or \"High\"/\"Medium\"/\"Low\"). Add the main topic or primary keyword you want the page to rank for.\r\n\r\n### 05▸ Enter \"Existing Inlinks\" from the Screaming Frog \"Internal\" export.\r\n\r\n__Note:__ Filter the export to status \"200\" URLs. Use \"VLOOKUP\" or \"INDEX-MATCH\" to map the \"Inlinks\" count to each URL, then paste it into \"Existing Inlinks\".\r\n\r\n### 06▸ Enter \"Target Inlinks\" and 7. update \"Gap\" for each target.\r\n\r\n__Note:__ Set \"Target Inlinks\" by page type: set \"Money\" and \"Hub\" pages to 5–15 now (build toward 10–20), and other posts to 3–10. Calculate \"Gap\" as MAX(Target Inlinks − Existing Inlinks, 0). You should see \"Gap\" values at 0 or higher.\r\n\r\n### 07▸ Add 5–10 URLs in \"Candidate Linking Pages\" for each target.\r\n\r\n__Note:__ Search site - yourdomain.com plus the topic to find relevant pages. Review the \"All Outlinks\" export for context-rich sources. Choose higher-traffic, authoritative pages that return status \"200\" and do not redirect. List 5–10 top candidates per target, separated by line breaks or commas.\r\n\r\n### 08▸ Assign an \"Owner\" and 10. set \"Status\" to \"Queued\" for each row.\r\n\r\n__Note:__ Add the responsible implementer in \"Owner\". Set \"Status\" to \"Queued\" to mark the row ready for linking work.\r\n\r\n## Add contextual internal links in WordPress (Gutenberg)\r\n\r\n### 01▸ Go to \"Pages\" > \"All Pages\" or \"Posts\" > \"All Posts\" and click \"Edit\" on a source page.\r\n\r\n### 02▸ Highlight a natural phrase related to the target topic in the editor.\r\n\r\n__Note:__ Choose a descriptive, natural anchor that includes the main concept or a close variant; avoid generic text like \"click here\". Vary anchors across pages (exact, partial, synonyms, long-tail) while keeping them readable.\r\n\r\n### 03▸ Click the inline \"Link\" icon (or press Ctrl/Cmd+K).\r\n\r\n### 04▸ Paste the target URL and press \"Enter\" to apply the link. Use the canonical/final URL (match your trailing-slash style) and remove tracking parameters.\r\n\r\n### 05▸ In the link popover, toggle \"Open in new tab\" OFF for internal links.\r\n\r\n### 06▸ Click \"Save Draft\" to save the page.\r\n\r\n### \r\n\r\n### 07▸ Best Practices:\r\n\r\n- Place at least one in-body link high on the page (e.g., first paragraph/100–150 words) when it helps the reader; keep the anchor descriptive and natural.\r\n- Add a concise list or weave links within sections so each spoke is linked once with a descriptive, topic-matching anchor.\r\n- Add a single link near the intro or most relevant section, using the hub’s primary topic as the anchor (avoid \"read more\").\r\n- Only add links where they naturally aid the reader; vary anchors and avoid overlinking in short sections.\r\n- Replace any internal link that hits a 301/302 with the final destination URL. Update any redirected internal link (from your redirect report or observed behavior) to the 200 destination URL.\r\n- View the published page and click each new link to confirm it resolves correctly without errors.\r\n\r\n## Validate and QA in Screaming Frog\r\n\r\n__Note:__ We use Screaming Frog to validate and QA the site because it allows us to spot technical issues that could impact performance, SEO, and user experience. By reviewing inlink counts, we can confirm that priority pages are well-linked internally. Exporting response codes helps us catch errors (like 4xx/5xx) that need fixing. Checking redirect chains ensures we avoid unnecessary hops that slow down load times and waste crawl budget. Finally, exporting all outlinks lets us identify any broken or redirected external links that may affect credibility or usability.\r\n\r\n### 01▸ Click the \"Inlinks\" column header to sort descending. Check your target URLs against your baseline Sheet for higher \"Inlinks\" counts.\r\n\r\n### \r\n\r\n### 02▸ Go to \"Bulk Export\" > \"Response Codes\" > \"Internal & External\" and export errors for review (4xx/5xx).\r\n\r\n### 03▸ Go to \"Reports\" > \"Redirects\" > \"Redirect Chains\" and export to locate links hitting redirects.\r\n\r\n### 04▸ Go to \"Bulk Export\" > \"Links\" > \"All Outlinks\" and export for a final broken/redirected link check.\r\n\r\n\r\n## Monitor impact in Google Search Console\r\n\r\n### 01▸ Open \"Performance\" > Click \"More\".\r\n\r\n### 02▸ Choose \"Compare\" to compare baseline vs the last 28 days and then click \"Apply\".\r\n\r\n### \r\n\r\n### 03▸ Paste the canonical URL in the search bar and press \"Enter\".\r\n\r\n### 04▸ Scroll down, review \"Clicks\", \"Impressions\", \"CTR\", and \"Average position\" across the two periods.\r\n\r\n### 05▸ Click \"Links\" and open \"Internal links\" to view \"Top linked pages\".\r\n\r\n### 06▸ Confirm target pages are increasing in internal link counts over time. You should see higher counts than your baseline. \"Links\" data may take 48–72 hours to update. That's it!","html":"<p>SOP 255: Implement An Internal Linking Strategy On A Website</p>\n<p>This SOP outlines how to audit, plan, implement, and validate an internal linking strategy on WordPress using Screaming Frog, Google Search Console, and Google Sheets. It standardizes anchors, placement, and ongoing monitoring for small sites.</p>\n<p><strong>Last Updated / Reviewed:</strong> 09/22/2025</p>\n<p><strong>Execution Time:</strong> 3–6 hours for the initial sprint (≤500 URLs) + 15–30 minutes/month to monitor</p>\n<p><strong>🚀 Goal:</strong> Implement a practical internal linking strategy that improves crawlability, relevance, and rankings on a WordPress site.</p>\n<p><strong>🤞 Ideal Outcome:</strong> Ensure priority hubs and money pages receive consistent, contextual internal links; eliminate orphaned pages, redirects, and broken links; and track impact in Google Search Console.</p>\n<p><strong>🤔 Why this is important:</strong> Internal links help search engines understand site structure, distribute authority, and improve discovery while guiding users to related content.</p>\n<p><strong>🧐 Where this is done</strong> Screaming Frog (desktop), Google Search Console (web), Google Sheets (web), and WordPress (wp-admin).</p>\n<p><strong>🗓️ When this is done:</strong> When running an initial sprint, iterate monthly and whenever new content is published.</p>\n<p><strong>👨 Who does this:</strong> SEO specialist or content manager with WordPress Editor access.</p>\n<p>__⚠️Prerequisites or requirements: __</p>\n<p>• WordPress Editor access to target pages/posts</p>\n<p>• Google Search Console access to the property</p>\n<p>• Screaming Frog installed (free or paid)</p>\n<p><a href=\"https://members.clickminded.com/sop/255\"><strong>Click here to get the most up-to-date version of this SOP</strong></a></p>\n<h2>Crawl and export baseline in Screaming Frog</h2>\n<p>__Note: __We perform this baseline crawl and export in Screaming Frog to capture a clear snapshot of the website’s current internal linking and technical health before making any changes. This provides visibility into the existing site structure, page status codes, redirects, and high-level issues, ensuring no important page is overlooked or orphaned. By documenting these details upfront, we create a reliable benchmark that allows us to track improvements, measure the impact of internal linking strategies, and quickly identify any unintended issues after implementation.</p>\n<h3>01▸ If you are new, create an account with <a href=\"https://www.screamingfrog.co.uk/\">Screaming Frog</a>, download and install the<a href=\"https://www.screamingfrog.co.uk/seo-spider/\"> SEO Spider Tool. </a></h3>\n<h3>02▸ Next, key in your webpage link under \"Enter URL to spider\" and click \"Start\".</h3>\n<h3>03▸ Confirm the status bar shows \"Completed\" at 100%. Large sites may take minutes or hours.</h3>\n<h3>04▸ Click the \"Internal\" tab and click \"Export\" to save CSV.</h3>\n<h3>05▸ Click the \"Response Codes\" tab > tap on the double arrows > click \"Export\" to save CSV.</h3>\n<h3>06▸ Go to \"Reports\" > \"Redirects\" > \"Redirect Chains\" and click \"Save\".</h3>\n<h3>07▸ Go to \"Reports\" > \"Issues Overview\" and click \"Save\".</h3>\n<h3></h3>\n<h3>08▸ Go to \"Bulk Export\" > \"Links\" > \"All Outlinks\" and click \"Save\".</h3>\n<h3></h3>\n<h3>09▸ Finally, go to \"Reports\" > \"Orphan Pages\" and click \"Save\".</h3>\n<h2>Identify target pages in Google Search Console</h2>\n<p><strong>Note:</strong> You identify target pages in Google Search Console to ensure your internal linking strategy supports the URLs that matter most for visibility and performance. GSC highlights which pages are already earning impressions and clicks, as well as those ranking on the cusp of stronger positions. By prioritising these pages, you can strengthen their authority with contextual internal links, improve their chances of climbing in search results, and focus efforts on the URLs that will deliver the greatest impact on traffic and conversions.</p>\n<h3>01▸ Open <a href=\"https://search.google.com/search-console/about\">Google Search Console</a> and select the correct property.</h3>\n<h3>02▸ Click \"Performance\" > \"Pages\" tab > sort by \"Clicks\" (descending).</h3>\n<h3>03▸ Click \"Export\" and choose \"CSV\" to download the results.</h3>\n<h3></h3>\n<h3>04▸ Next, click the \"Queries\"   tab, hover over the filter button and select \"Top queries\".</h3>\n<h3>05▸ Next actions:</h3>\n<ul>\n<li><strong>Review Top Queries</strong></li>\n</ul>\n<p>Note the highest-impression and highest-click queries. Pay attention to queries ranking on page 2 (positions 11–20), as these are prime candidates for improvement with internal links.</p>\n<ul>\n<li><strong>Build a Target Page List</strong></li>\n</ul>\n<p>Combine your <strong>top pages (by clicks)</strong> and <strong>their associated queries</strong> into a worksheet. This becomes your priority list for internal linking.</p>\n<h2>Build cluster map and link plan in Google Sheets plan template</h2>\n<h3>01▸ Open Template 148: Internal Linking Plan (<a href=\"https://members.clickminded.com/template/148/\">web version</a>). The example and explanation can be seen below:</h3>\n<h3>02▸ Paste target URLs into the \"URL\" column.</h3>\n<p><strong>Note:</strong> Use canonical or final URLs only; no redirects. Enter one URL per row and match your site's trailing-slash style; include parameters only if canonical. Exclude non-indexable pages you won’t link to.</p>\n<h3>03▸ Set \"Type\" for each target to \"Hub\", \"Spoke\", or \"Money\".</h3>\n<p><strong>Note:</strong> \"Hub\" pages are pillar or overview pages. \"Spoke\" pages support the cluster. \"Money\" pages focus on conversions.</p>\n<h3>04▸ Enter \"Priority\" and 4. \"Primary Topic/Keyword\" for each target.</h3>\n<p><strong>Note:</strong> Set \"Priority\" based on business value and current performance (e.g., 1–3 or \"High\"/\"Medium\"/\"Low\"). Add the main topic or primary keyword you want the page to rank for.</p>\n<h3>05▸ Enter \"Existing Inlinks\" from the Screaming Frog \"Internal\" export.</h3>\n<p><strong>Note:</strong> Filter the export to status \"200\" URLs. Use \"VLOOKUP\" or \"INDEX-MATCH\" to map the \"Inlinks\" count to each URL, then paste it into \"Existing Inlinks\".</p>\n<h3>06▸ Enter \"Target Inlinks\" and 7. update \"Gap\" for each target.</h3>\n<p><strong>Note:</strong> Set \"Target Inlinks\" by page type: set \"Money\" and \"Hub\" pages to 5–15 now (build toward 10–20), and other posts to 3–10. Calculate \"Gap\" as MAX(Target Inlinks − Existing Inlinks, 0). You should see \"Gap\" values at 0 or higher.</p>\n<h3>07▸ Add 5–10 URLs in \"Candidate Linking Pages\" for each target.</h3>\n<p><strong>Note:</strong> Search site - yourdomain.com plus the topic to find relevant pages. Review the \"All Outlinks\" export for context-rich sources. Choose higher-traffic, authoritative pages that return status \"200\" and do not redirect. List 5–10 top candidates per target, separated by line breaks or commas.</p>\n<h3>08▸ Assign an \"Owner\" and 10. set \"Status\" to \"Queued\" for each row.</h3>\n<p><strong>Note:</strong> Add the responsible implementer in \"Owner\". Set \"Status\" to \"Queued\" to mark the row ready for linking work.</p>\n<h2>Add contextual internal links in WordPress (Gutenberg)</h2>\n<h3>01▸ Go to \"Pages\" > \"All Pages\" or \"Posts\" > \"All Posts\" and click \"Edit\" on a source page.</h3>\n<h3>02▸ Highlight a natural phrase related to the target topic in the editor.</h3>\n<p><strong>Note:</strong> Choose a descriptive, natural anchor that includes the main concept or a close variant; avoid generic text like \"click here\". Vary anchors across pages (exact, partial, synonyms, long-tail) while keeping them readable.</p>\n<h3>03▸ Click the inline \"Link\" icon (or press Ctrl/Cmd+K).</h3>\n<h3>04▸ Paste the target URL and press \"Enter\" to apply the link. Use the canonical/final URL (match your trailing-slash style) and remove tracking parameters.</h3>\n<h3>05▸ In the link popover, toggle \"Open in new tab\" OFF for internal links.</h3>\n<h3>06▸ Click \"Save Draft\" to save the page.</h3>\n<h3></h3>\n<h3>07▸ Best Practices:</h3>\n<ul>\n<li>Place at least one in-body link high on the page (e.g., first paragraph/100–150 words) when it helps the reader; keep the anchor descriptive and natural.</li>\n<li>Add a concise list or weave links within sections so each spoke is linked once with a descriptive, topic-matching anchor.</li>\n<li>Add a single link near the intro or most relevant section, using the hub’s primary topic as the anchor (avoid \"read more\").</li>\n<li>Only add links where they naturally aid the reader; vary anchors and avoid overlinking in short sections.</li>\n<li>Replace any internal link that hits a 301/302 with the final destination URL. Update any redirected internal link (from your redirect report or observed behavior) to the 200 destination URL.</li>\n<li>View the published page and click each new link to confirm it resolves correctly without errors.</li>\n</ul>\n<h2>Validate and QA in Screaming Frog</h2>\n<p><strong>Note:</strong> We use Screaming Frog to validate and QA the site because it allows us to spot technical issues that could impact performance, SEO, and user experience. By reviewing inlink counts, we can confirm that priority pages are well-linked internally. Exporting response codes helps us catch errors (like 4xx/5xx) that need fixing. Checking redirect chains ensures we avoid unnecessary hops that slow down load times and waste crawl budget. Finally, exporting all outlinks lets us identify any broken or redirected external links that may affect credibility or usability.</p>\n<h3>01▸ Click the \"Inlinks\" column header to sort descending. Check your target URLs against your baseline Sheet for higher \"Inlinks\" counts.</h3>\n<h3></h3>\n<h3>02▸ Go to \"Bulk Export\" > \"Response Codes\" > \"Internal &#x26; External\" and export errors for review (4xx/5xx).</h3>\n<h3>03▸ Go to \"Reports\" > \"Redirects\" > \"Redirect Chains\" and export to locate links hitting redirects.</h3>\n<h3>04▸ Go to \"Bulk Export\" > \"Links\" > \"All Outlinks\" and export for a final broken/redirected link check.</h3>\n<h2>Monitor impact in Google Search Console</h2>\n<h3>01▸ Open \"Performance\" > Click \"More\".</h3>\n<h3>02▸ Choose \"Compare\" to compare baseline vs the last 28 days and then click \"Apply\".</h3>\n<h3></h3>\n<h3>03▸ Paste the canonical URL in the search bar and press \"Enter\".</h3>\n<h3>04▸ Scroll down, review \"Clicks\", \"Impressions\", \"CTR\", and \"Average position\" across the two periods.</h3>\n<h3>05▸ Click \"Links\" and open \"Internal links\" to view \"Top linked pages\".</h3>\n<h3>06▸ Confirm target pages are increasing in internal link counts over time. You should see higher counts than your baseline. \"Links\" data may take 48–72 hours to update. That's it!</h3>\n"}