Back to blog
12 min read

Internal Linking After a CMS Migration: How to Preserve (and Improve) Your Link Structure

Internal Linking After a CMS Migration: How to Preserve (and Improve) Your Link Structure

Most migration checklists spend a lot of ink on redirects and sitemaps. Internal links get a line item at best, and often nothing at all. This is a mistake — and it is one that costs sites significant ranking power in the months following a CMS move.

Internal links do two things for SEO. First, they tell search engines which pages on your site are important. The more internal links a page receives, the more ranking authority it accumulates from within your own domain. Second, they guide crawlers through your site's content structure. A page that receives no internal links — an orphaned page — is hard for Google to find and impossible for it to properly contextualize within your site's topical hierarchy.

When you migrate from WordPress to a new CMS, internal links break in predictable ways. URL structures change. Hardcoded links in post content point to old paths. Navigation menus get rebuilt, sometimes dropping links that were carrying crawl signal to important pages. By the time the dust settles, your site can have dozens or hundreds of broken internal links and a set of orphaned pages that are invisible to both users and search engines.

This guide covers how to audit your internal link structure before and after a migration, what the three most common internal linking failures look like in practice, and how to use the migration window as an opportunity to build a stronger link structure than you had before.

Quick Checklist

  • Crawl your WordPress site and export all internal links (source URL → destination URL)
  • Identify pages with the most inbound internal links (these are your most important pages)
  • After migration, re-crawl and compare: are all internal links resolving to 200 pages?
  • Check for orphaned pages (pages in the sitemap but with zero internal links)
  • Update hardcoded internal links in CMS content to use new URL paths
  • Verify anchor text hasn't changed on high-value internal links

Why Internal Links Matter More Than Most Migration Checklists Admit

Google uses internal links as one of the primary signals for understanding a site's information architecture. When Googlebot crawls your site, it follows internal links to discover pages, assign relative importance, and understand topical relationships between content. A page that is linked from your homepage, your navigation, and three high-traffic blog posts sends a strong signal that it is important. A page that sits in your sitemap but receives zero internal links sends almost no signal at all.

After a migration, many sites see rankings for secondary and tertiary pages drop — not because the content changed, but because the internal link structure that was distributing ranking authority to those pages got disrupted. This is a quiet failure. It does not produce 404 errors in Search Console. It does not trigger any obvious alerts. It simply causes pages to gradually lose visibility as Google recalibrates its understanding of the site's structure.

The impact compounds over time. If important pages stop being linked internally, crawlers visit them less frequently, they fall out of regular crawl cycles, and any new content updates on those pages take longer to be indexed. The pages do not disappear — they just become less competitive.

This is also why a migration is an opportunity, not just a risk. If your old WordPress site had poor internal linking — a common situation, since WordPress's default structure does not enforce any link discipline — rebuilding the site gives you a chance to design the link structure intentionally. Many sites exit a well-executed migration with stronger topical authority than they had going in.

The Three Internal Linking Failures That Tank Migrations

Links Pointing to Old URLs (Not Redirected or Updated)

This is the most common failure. Your blog posts, service pages, and other CMS content are full of hardcoded internal links — links written directly into the content, not managed by a navigation system. When your URL structure changes during a migration, those hardcoded links still point to the old paths.

If you have set up proper 301 redirects, Google will follow those redirects and eventually arrive at the correct page. But there is a cost: each redirect in a link chain dilutes the equity passed through it. An internal link that passes through a redirect is weaker than a direct link. At scale — hundreds or thousands of pieces of content with hardcoded links — this dilution adds up to a measurable reduction in the ranking signal distributed across your site.

The fix is to update the hardcoded links in your content to point directly to the new URLs rather than relying on redirects to catch them. For WordPress, this can be done with a SQL query against the wp_posts table before migrating content to the new CMS. For content that has already been migrated, most CMS platforms have a find-and-replace function that can update URLs across all content at once.

See our full SEO migration checklist for the complete sequence, including when in the migration process to handle internal link updates.

Orphaned Pages (Pages With Zero Internal Links Post-Migration)

An orphaned page is any page that exists in your sitemap or is otherwise accessible by URL but receives no internal links from other pages on your site. Googlebot discovers pages primarily by following links — if no page on your site links to a given URL, the only way Google finds it is through the sitemap. Pages discovered only via sitemap are crawled less frequently and ranked less aggressively than pages that are part of an interconnected link structure.

Orphaned pages are created during migrations in several ways. Navigation menus get rebuilt and items get dropped. Category and tag pages that previously auto-linked to posts may not have equivalents in the new CMS. Footer links get redesigned out. Sidebar widgets that linked to related posts disappear. The result is a set of pages that were well-integrated in the old site and now exist in isolation.

The only way to find orphaned pages is to crawl the site and compare the pages in your sitemap to the pages that receive at least one internal link. Any page in the sitemap that does not appear as a link destination in the crawl is orphaned. Tools like Screaming Frog, Ahrefs Site Audit, and Semrush Site Audit can identify orphaned pages automatically.

Anchor Text Changes That Weaken Topical Signals

Anchor text — the visible text of a link — is a relevance signal. When a page is internally linked with keyword-rich anchor text (for example, "Next.js migration SEO checklist" instead of "click here"), Google gets an additional signal about what that destination page is about. This contributes to topical relevance and can support rankings for the anchor text's primary keywords.

During a migration, anchor text gets changed in subtle ways. Navigation items get renamed. Link text gets updated as part of a content refresh. Related post widgets that pulled anchor text from page titles switch to different templates. In aggregate, these changes weaken the topical signal that internal links were providing.

Before migrating, export your internal link inventory including anchor text. After migration, spot-check links to your most important pages and verify the anchor text is consistent or improved. If anchor text has been genericized (changed from descriptive to "read more" or "learn more"), update those links.

How to Audit Internal Links Before and After Migration

The pre-migration audit is simpler: crawl your WordPress site with Screaming Frog (free for under 500 URLs, paid for larger sites) and export the "All Inlinks" report. This gives you a complete picture of every internal link on the site: source URL, destination URL, anchor text, and status code. Save this export — it is your baseline.

Within the export, identify your most-linked pages. Sort by inbound internal link count descending. The pages at the top of this list are your most important pages from Google's perspective. If the migration does anything to reduce the number of internal links pointing to these pages, you will feel it in rankings.

After migration, run the same crawl against the new site. You are looking for three things:

First, compare destination URLs. Any destination that returns a 301 or 302 redirect instead of a 200 is a link that should be updated to point directly to the new URL. Any destination that returns a 404 is a critical link that needs immediate attention.

Second, identify pages that gained or lost internal links. If a page that previously received 40 internal links now receives 12, something in the navigation or content structure changed in a way that reduced its authority signal. Investigate and restore the missing links.

Third, identify new orphaned pages by cross-referencing your sitemap against the pages that appear as link destinations in the crawl. Pages in the sitemap with zero inbound internal links need links added from relevant content.

Our redirect map best practices guide also covers internal link considerations as part of a complete migration redirect strategy.

Improving Link Structure During the Rebuild (An Opportunity, Not Just Parity)

A migration is one of the few moments when you have legitimate reason to restructure your entire site at once. Rather than simply restoring what existed in WordPress, consider whether the old internal link structure was actually serving your SEO goals.

Most WordPress sites develop their internal link structure organically over years. Blog posts link to whatever was relevant when they were written. Navigation menus reflect whatever pages existed at the time the menu was last edited. The result is typically a flat, inconsistent structure with no deliberate topical clustering.

The alternative is a hub-and-spoke model (also called topic clustering). In this structure, a high-authority pillar page on a broad topic links to and receives links from a set of supporting pages that cover specific subtopics. For example, if you offer migration services, your main migration service page is the hub. Blog posts on specific migration topics — redirect mapping, sitemap generation, internal linking — are the spokes. Each spoke links back to the hub, and the hub links out to the spokes.

This structure sends a strong topical signal: your site is authoritative on migration, and the hub page is the primary destination for that topic. Google rewards this with better rankings for both the hub and spoke pages.

Rebuilding your site gives you a clean slate to implement this structure. As you migrate content, identify your pillar pages and the supporting content that should link to them. Update all supporting posts to include a contextual link back to the relevant pillar. Update the pillar pages to link out to each supporting piece. The internal link structure you build into the new site can be substantially stronger than what you had in WordPress.

Structuring Internal Links in Next.js

If you are migrating to Next.js, internal linking is handled differently than in WordPress. In WordPress, links in post content are stored in the database as absolute or relative URLs. In Next.js with a headless CMS (Contentful, Sanity, Prismic, etc.), your content typically stores links as relative paths or as structured references to other content entries.

Make sure your content model supports internal linking in a way that does not hardcode full URLs. If an author links to /services/migration/ in Contentful rich text, that link should be stored as a relative path — not https://yourdomain.com/services/migration/. This way, internal links continue to work correctly if your domain changes or if you run the site in a staging environment.

Also configure your Next.js application to render internal links using the <Link> component from next/link rather than plain <a> tags. The <Link> component enables client-side navigation, which improves page load speed for users who click internal links — a secondary UX benefit that complements the SEO value of the links themselves.

For your SEO-safe WordPress → Next.js migration, internal link preservation is part of the content audit we conduct before any content moves to the new CMS. Every link in every piece of content is validated against the new URL structure before launch.

FAQ

Do internal links pass link equity the same way external links do?

Internal links pass link equity — often called PageRank or link juice — but the mechanism works differently than external links. External links bring authority into your domain from outside. Internal links redistribute authority that already exists within your domain. A page with many strong external links can pass some of that accumulated authority to other pages through internal links. This is why linking internally from your high-authority pages (homepage, high-traffic blog posts) to pages you want to rank carries real SEO value.

How do I find orphaned pages after a migration?

Crawl your new site with a tool like Screaming Frog and export the list of all pages the crawler discovers by following links. Then compare that list to your XML sitemap. Any URL in the sitemap that does not appear in the crawl's page inventory has no internal links pointing to it — it is orphaned. Screaming Frog also has a dedicated orphan page report if you provide a sitemap file during the crawl setup. Fix orphaned pages by adding at least two to three contextually relevant internal links from existing pages that cover related topics.

Should I update internal link anchor text during a migration?

Yes, where it can be improved — but do not change anchor text that is already descriptive and keyword-relevant just for the sake of changing it. The migration is a good time to replace generic anchor text ("click here," "read more," "this page") with descriptive anchor text that reflects the content of the destination page. For your most important pages, audit the anchor text of every internal link pointing to them and make sure it is consistent and topically relevant. Avoid over-optimizing by using exact-match keywords as anchor text on every single internal link to a page — vary the phrasing naturally.

How many internal links per page is ideal for SEO?

There is no universal ideal number. The guidance that matters most is that every internal link should be editorially justified — it should help the user navigate to relevant information. Pages with lots of genuinely useful links (like a comprehensive pillar page linking to 20 supporting articles) can have many links without issue. What hurts SEO is pages with thin or spammy link lists where quantity is the goal rather than relevance. For most content pages, somewhere between three and ten contextual internal links to other pages on your site is a reasonable target. Navigation links and footer links are separate from this count.

What tools can I use to audit internal links on my WordPress site?

Screaming Frog SEO Spider is the most thorough option — it crawls the site and exports a complete internal link map. The free version handles up to 500 URLs; the paid license covers unlimited URLs. Ahrefs Site Audit and Semrush Site Audit both offer internal link reporting as part of their broader audit capabilities, and they can also show you which internal links are pointing to redirected or broken URLs. For a quick check without installing software, the Google Search Console Links report shows which pages on your site receive the most internal links, though it does not show the specific source URLs of those links.

Next Steps

Your internal link structure is one of the most controllable SEO signals on your site. A migration is the right time to audit it, fix what is broken, and build something better than what you had. Start with the pre-migration crawl, complete the post-launch comparison, and address orphaned pages before you call the migration done.

Related posts:

Services: