Guide · Publishing & Operations

Programmatic SEO Site Migrations

Migrate large pSEO sections with an explicit old-to-new URL map, relevant redirects, updated canonicals and links, controlled rollout, and verification.

Moving a programmatic SEO section is not one migration. It is hundreds or thousands of page-level migrations sharing the same release window.

A new CMS can change slugs. A directory redesign can change parents. A domain move can change every absolute URL. A new page model can merge rows that used to be separate. Some old URLs need a one-to-one replacement, some should consolidate, and some should disappear because the page no longer deserves a successor.

The scalable unit of planning is therefore an old URL → new state map, not a folder-level redirect rule written five minutes before cutover.

Start by defining what is actually changing

“Site migration” can describe several different operations:

  • domain or subdomain change;
  • directory or URL-pattern change;
  • CMS migration with URLs preserved;
  • CMS migration that also changes routing;
  • page-model redesign that merges or splits page families;
  • information-architecture change that moves children under different hubs;
  • a combination of those changes.

The fewer variables you change at once, the easier the result is to diagnose.

Google’s current site-move guidance recommends changing one thing at a time where practical. If you want a new domain, new CMS, new URL structure, and new page design, separating those changes can make failures easier to attribute.

For pSEO, this matters even more because one routing or template decision can affect an entire family at once.

If the CMS changes but the public URLs, page content, canonicals, internal relationships, and directives remain stable, the SEO migration is primarily a parity and verification problem. If URLs change, you need a page-level mapping and redirect plan.

Build the old URL inventory before designing the redirect rules

You cannot map a page you forgot existed.

Start from more than one source because large generated sections drift over time. The original spreadsheet rarely equals the current live inventory after manual edits, failed publishes, old batches, redirects, and previous cleanup.

Useful inventory sources include:

  • current CMS records;
  • XML sitemaps;
  • server or CDN logs;
  • analytics landing-page data;
  • Search Console page data;
  • internal crawl results;
  • known redirect rules;
  • external-link reports for important legacy URLs;
  • the original page plan or launch manifests.

Google’s site-move documentation similarly recommends using sitemaps, CMS data, logs, analytics, and link information when assembling old URLs.

Do not drop a URL from the migration map just because it had no traffic in the last report. A seasonal page, a page with external links, a recently published page, or an important parent can still require an explicit decision.

The objective is one authoritative list of old addresses that the migration can classify.

Give every old URL one migration state

For each old URL, decide what it becomes.

A practical mapping can use states such as:

Old page state New state Typical action
Page and URL remain valid Same URL Keep URL; verify content and directives after CMS move
Same page moves to a new URL One-to-one replacement Permanent redirect old → new
Several old pages become one stronger page Consolidated Redirect each relevant old URL → the consolidated destination
Page remains useful but should not appear in Search Accessible, non-indexable Keep page and use noindex when that is the intended Search state
Page has no replacement and no reason to remain Retired Remove and return an appropriate 404 or 410 response
Old URL is an alternate duplicate that must remain accessible Alternate Use a deliberate canonical relationship when appropriate

The important part is not the label. It is that the state is decided before the cutover.

Do not let the redirect implementation make the content decision for you. A regex that sends every old child to the new category hub can be technically elegant and editorially wrong.

The dedicated retirement decision framework covers the difference between merge, redirect, noindex, canonical, and deletion in more depth.

Map one-to-one replacements to the closest real destination

When an old page has a direct successor, map it to that successor.

For example:

/integrations/slack//apps/slack/

is straightforward if the page still represents the same integration and the new URL is its new home.

The same principle applies when several old pages have genuinely been consolidated into one page that now satisfies their combined need. Google explicitly allows older URLs to redirect to a new consolidated page when that destination is relevant.

What you should not do is route hundreds of unrelated retired URLs to the homepage or one broad category simply to avoid 404s. Google’s migration guidance warns that irrelevant mass redirects can confuse users and may be treated as soft 404s.

A redirect is a relationship claim. The destination should make sense to someone who requested the old URL.

Use permanent redirects for real URL moves

For URLs that have moved permanently, Google recommends server-side permanent redirects such as 301 or 308 when possible.

Point each old URL directly to its final destination. Avoid unnecessary redirect chains such as:

old-v1 → old-v2 → new-category → final-page

A chain creates more work for users and crawlers and makes the migration harder to reason about. Google advises keeping redirect chains low and, when possible, redirecting directly to the final URL.

Do not delete the redirects as soon as the new URLs appear in Search. Google’s current site-move documentation recommends keeping redirects for as long as possible, generally at least one year, so signals and old links have time to be reassigned.

From a user perspective, useful legacy redirects can remain longer when old bookmarks and external links still exist.

Make canonical signals describe the new world

A migration can fail quietly when the redirect says “new URL” but the new page’s canonical still says “old URL.”

For a normal one-to-one move, the new page should usually have a self-referencing canonical for the new address. Update any other canonical relationships so they point to the intended destination URLs after the move.

Google’s site-move guidance explicitly calls for updating canonical annotations to the new URLs. It also warns teams to remove temporary noindex rules used during development once the move starts.

Do not use a cross-canonical as a substitute for a proper move. If the old URL has permanently moved and users should land on the new URL, a redirect expresses that transition more clearly.

Canonical Tags for Programmatic SEO Pages covers the technical relationship choices in detail.

Redirects protect old addresses. They should not become the new internal-link architecture.

Use the old-to-new map to update:

  • hub → child links;
  • child → parent links;
  • sibling relationships;
  • breadcrumbs;
  • navigation;
  • contextual article links;
  • template-level related-page modules;
  • hard-coded links in evergreen content.

Google recommends updating internal links to the new URLs during a site move rather than relying on redirects indefinitely.

This matters especially for pSEO because template-level links can multiply one stale path across every page in the family. One old parent URL inside a shared template can create thousands of avoidable redirect hops.

After updating the rules, crawl the new section and look for pages that no longer have a stable incoming path. A migration can preserve every URL technically while accidentally creating an orphaned family.

Rebuild parent and sibling relationships when the page model changes

A directory restructure is not just a URL replacement.

Suppose the old architecture was:

/locations/austin/

and the new architecture becomes:

/services/plumbing/austin/

The Austin page may now have a different parent, different sibling set, different breadcrumb path, and different contextual links. Redirecting the old URL solves only the address transition.

Treat the destination page set as a new relationship graph and verify that every child belongs to a meaningful hub.

The current URL hierarchy docs explain how pSEO Guard represents parent relationships in the page plan. The product can review planned parents before publishing, but it does not automate a live-site migration.

Move the sitemap inventory to the destination URLs

Your production sitemap should describe the canonical, indexable URLs you want search engines to discover after the move.

Once the new URLs are ready, generate sitemap output from the new inventory rather than carrying old redirecting addresses forward as the steady-state sitemap.

Google recommends submitting the new sitemap in Search Console as part of a URL-changing site move. Keep the old URL mapping or launch manifest separately so you can reconcile old and new states without asking the sitemap to be both historical ledger and current inventory.

If a large pSEO section already uses page-family or batch sitemaps, preserve those boundaries when they help you monitor the migration. Do not repartition files during the same cutover unless the sitemap structure itself is part of the change you need.

For the broader inventory model, see Sitemap Strategy for Programmatic SEO.

Separate unchanged, moved, merged, and retired pages in the rollout

Large migrations become easier to verify when these states are not mixed into one success count.

Track at least:

  • unchanged URLs verified on the new platform;
  • one-to-one moved URLs with working redirects;
  • consolidated old URLs pointing to the correct survivor;
  • retired URLs returning the intended status;
  • pages held back because their new state is unresolved;
  • unexpected old URLs discovered after the initial inventory.

This gives you an actual migration denominator.

“10,000 URLs processed” is not meaningful if 300 redirect to the wrong place and 200 were never in the map.

Use section-based rollout when the size justifies it

For small or medium sites, Google’s site-move guidance generally recommends moving URLs together so users and Google can process a coherent move.

For large sites, Google notes that moving sections separately can make problems easier to monitor and fix. That option fits many large pSEO sections because page families often provide natural operational boundaries.

A useful pilot section should be coherent and relatively stable. It should still contain enough variation to exercise the migration rules: parent pages, children, redirects, merged pages, and ordinary pages.

Do not assume a successful pilot proves every other family will behave the same way. A different CMS content type, template, URL rule, or data source can create a new failure mode.

The goal of phased rollout is controlled risk, not a ritual where every migration must use the same percentage of pages.

Verify the destination before and after cutover

Before enabling redirects, test the destination page set.

Confirm:

  • expected pages exist;
  • URLs and parents match the map;
  • pages return the intended status;
  • canonical tags use destination URLs;
  • temporary noindex rules are removed where pages should be indexable;
  • internal links point to destination URLs;
  • sitemap entries use the destination inventory;
  • page content and structured fields survived the CMS move.

After cutover, test the old URLs too.

For a large map, verify redirects programmatically rather than opening ten examples and declaring victory. Check that the redirect reaches the expected final URL, not merely a URL with a 200 response.

Monitor 404/410 responses for retired pages, unexpected errors, redirect chains, server capacity, and URLs that were missing from the original map.

Google notes that large site moves can temporarily increase crawl activity on the new site, so capacity and error monitoring are part of migration verification rather than an infrastructure footnote.

Measure migration progress by old and new cohorts

Deployment completion is only the first checkpoint.

Use Search Console and your own inventory to observe whether old URLs are giving way to new URLs, whether the intended destination pages are being indexed, and whether Search impressions and clicks are moving to the new addresses.

Expect temporary Search fluctuations during a significant move. Google explicitly warns that recrawling and reindexing large sites takes time and happens URL by URL.

Do not judge the move only from aggregate site traffic. Segment the migrated page families so a healthy section does not hide one broken template or directory.

The existing indexing measurement guide covers the Search Console mechanics. The broader performance guide explains how to reconnect Search evidence to business outcomes after the move.

A pSEO migration is complete when the old structure stops being required

A migration is not complete because the deploy finished or the redirects exist.

It is complete operationally when:

  • every known old URL has an intentional state;
  • destination pages and relationships are correct;
  • relevant old URLs redirect directly to their correct successors;
  • retired URLs return the intended response;
  • new pages use the intended canonicals and index directives;
  • internal links and sitemap output no longer depend on the old structure;
  • unexpected orphan pages and old references have been resolved;
  • Search and business measurement can be joined to the new inventory;
  • the redirect layer can remain as compatibility rather than as the site’s internal navigation system.

For a thousand-page family, that is the difference between “we changed the folder name” and “we migrated the information architecture.”

The URL map is what lets you prove which one happened.

Make the new page relationships explicit before cutover.

Define parent and hub relationships for the destination page set so the migration changes URLs without silently breaking the structure around them.

Review the URL hierarchy →

Continue with

Related resources

Related terms