Module 5.2 — Site Migrations
Phase 5: Advanced Specialist Topics
A site migration is one of the highest-risk activities in technical SEO. Done well, it is invisible — rankings hold, traffic continues, and users notice nothing. Done poorly, it can erase years of accumulated authority, drop organic traffic by 50–80%, and take 6–18 months to recover from. This module treats migrations as a structured engineering discipline, not a checklist you run the week before launch.
The goal is to give you a repeatable framework that works whether you are changing a domain name, moving from HTTP to HTTPS, switching platforms (e.g., WordPress to headless), restructuring URLs, consolidating multiple sites, or doing all of the above at once.
1. What Counts as a Migration?
A migration is any change that causes URLs to move, disappear, or change their identity in a way that search engines must be instructed to follow. The most common types:
- Domain change — e.g.,
oldsite.com → newsite.com (the most dangerous; all external link equity must redirect)
- Protocol change — HTTP → HTTPS (should be treated as seriously as a domain change)
- Subdomain consolidation —
blog.example.com → example.com/blog
- URL restructure — changing slugs, removing categories from paths, adding or removing trailing slashes
- Platform migration — moving from one CMS to another (e.g., Drupal → WordPress, WordPress → Payload/Next.js)
- Internationalisation restructure — moving from subfolders to subdomains, or adding new locales
- Site consolidation or split — merging two domains into one, or splitting one domain into two
These types frequently combine. A replatforming from WordPress to Payload often means a new URL structure, new hosting, and sometimes a new domain — all at once. That compounding is where migrations become dangerous.
2. The Core Principle: One Variable at a Time (When Possible)
Every migration variable you change simultaneously makes diagnosis harder. If traffic drops after a migration that changed the domain, URL structure, platform, and hosting in one weekend, you cannot isolate the cause. Where possible, phase the changes:
- Move to HTTPS first, separately, and confirm rankings are stable before anything else.
- Restructure URLs in a second phase.
- Change domain (if required) in a third phase.
This is not always commercially feasible, but it is always the technically safer path. When you must do everything at once, your pre-launch preparation must be proportionally more thorough.
3. Phase Overview
Every migration follows the same four phases:
- Phase 1: Discovery & Baseline — Understand the current state completely before touching anything.
- Phase 2: Planning & Build — Map every URL, build redirects, configure the new site, and validate on staging.
- Phase 3: Launch & Signal — Execute the cutover systematically, then signal the change to search engines.
- Phase 4: Monitor & Recover — Watch crawl data, GSC, and rankings closely for weeks, and intervene fast when problems appear.
4. Phase 1: Discovery & Baseline
You cannot measure the success or failure of a migration without a baseline. Run all of the following before any work begins, and store the outputs.
4.1 Full crawl of the current site
Use Screaming Frog or Sitebulb to crawl the live site. Export every URL with:
- Status code
- Canonical URL (self-referencing vs pointing elsewhere)
- Title and meta description
- H1
- Inbound internal links (link equity signals)
- Indexability status
This is your source of truth for redirect mapping. Every indexed URL that will change must appear in this spreadsheet.
4.2 GSC baseline export
From Google Search Console, export:
- Performance data: top pages by clicks over the last 3 and 12 months
- Top queries per page
- Coverage report: indexed, excluded, and errors
- Core Web Vitals report (field data)
- Current sitemap status
The top-pages-by-clicks list is your priority URL list. These are the pages where a redirect failure costs real traffic. They need individual QA before launch, not batch verification.
4.3 Backlink profile
Export the full backlink profile from Ahrefs, Semrush, or Majestic. Every external link pointing to a URL that will change must be redirected. Pay special attention to:
- The homepage
- Pages with the most referring domains
- Any links pointing to HTTP-only URLs (common on older sites)
- Links pointing to already-404 URLs (clean these up during the migration)
4.4 Rank tracking baseline
Set up position tracking for your top 50–100 keyword/URL combinations before the migration. You need a pre-migration snapshot to compare against post-migration data. Without it, you are guessing about recovery.
4.5 Analytics baseline
Record the current 90-day averages for: organic sessions, organic conversion rate, and revenue from organic. These become your recovery targets.
5. Phase 2: Planning & Build
5.1 URL mapping
The redirect map is the most critical deliverable of the planning phase. It is a spreadsheet with one row per URL that changes, structured as:
old_url | new_url | redirect_type | priority | notes
Rules for redirect mapping:
- Map old URL → new URL at a 1:1 level where possible. The new URL should be the topically closest equivalent on the new site.
- Do not redirect everything to the homepage. A page about blue running shoes should redirect to the new blue running shoes page, not to
/. Mass redirects to the homepage are treated as soft 404s by Google.
- Where no direct equivalent exists (a page being retired), redirect to the most relevant parent category or closest topical equivalent. If there is genuinely no relevant page, a 410 (Gone) is better than a misdirecting 301.
- Use 301 (Permanent) for all permanent content moves. Use 308 (Permanent Redirect, method-preserved) for POST endpoints if relevant, but for SEO purposes 301 is standard.
- Avoid redirect chains. Old URL should redirect directly to the final new URL — not through intermediate URLs. A chain of
A → B → C loses equity at each hop and wastes crawl budget. If you have existing redirects, fold them into the new map: A → C directly.
- Flag redirect loops (where A redirects to B which redirects back to A) — they cause crawlers to give up entirely.
5.2 Implementing redirects
The implementation method depends on the server environment:
- Apache —
.htaccess rules using RewriteRule or Redirect directives
- Nginx —
rewrite and return directives in the server block
- CDN / edge layer — Cloudflare Rules, Vercel rewrites/redirects in
vercel.json, Netlify _redirects file. This is the fastest approach and does not require touching application code.
- Next.js —
redirects() in next.config.js for static redirects; middleware for dynamic/conditional redirects
- WordPress — plugins like Redirection for manageable volumes; server-level rules for large volumes (plugin-managed redirects add database queries per request)
For large-scale migrations (10,000+ redirects), server-level or CDN-level implementation is strongly preferred over application-level, both for performance and reliability.
5.3 New site configuration checklist
Before launch, every item on this list must be confirmed on the staging environment:
robots.txt on staging must block all crawlers (Disallow: /) — confirm this is in place and will be changed to allow on launch
- All canonical tags point to the correct new canonical URLs (no canonicals pointing back to the old domain)
- XML sitemap contains only the new URLs, all returning 200, all indexable
- Hreflang tags (if applicable) reference the new URLs and include all required language/region variants
- Structured data has been ported to the new templates and references new URLs in any
url or @id fields
- Open Graph tags reference the new domain
- All internal links have been updated to point to new URLs (do not rely on redirects for internal links — update them at the source)
- Analytics tracking code is present on all new templates and firing correctly
- Search Console verification method is ready for the new property
- HTTPS configured correctly with a valid certificate (no mixed-content warnings)
- Core Web Vitals measured on staging — confirm they are at least equal to or better than the live site
5.4 Redirect QA on staging
Before launch, crawl the old site's URL list against the new staging environment to verify redirects. In Screaming Frog, use List Mode with the old URLs, pointed at the staging host, to confirm:
- Every URL in the redirect map returns a 301 (or the intended code)
- The redirect destination is the correct new URL
- No chains (the Status Code column should show the final destination, not an intermediate)
- No loops
- Priority pages (top GSC traffic) are individually verified by a human following the redirect in a browser
6. Phase 3: Launch & Signalling
6.1 Timing
Schedule the launch cutover during your lowest-traffic window, typically Tuesday–Thursday early morning in the site's primary timezone. Avoid Fridays — if something goes wrong, you need the full engineering team available to revert or fix, and a weekend with degraded rankings is harder to monitor and respond to.
6.2 Launch sequence
- Flip DNS / point traffic to the new server or CDN.
- Confirm the new site is live on the correct domain with a valid HTTPS certificate.
- Confirm
robots.txt on the new site now allows crawling (the staging block has been removed).
- Verify the old domain is redirecting (spot-check 10–15 priority URLs in a browser).
- Submit the new XML sitemap to Google Search Console immediately.
- If this is a domain change, use the Change of Address tool in GSC (Settings → Change of Address). This is a direct signal to Google that the domain has permanently moved. It is only available for domain-level moves and requires the new property to be verified in GSC.
- Request indexing on the most important 10–20 priority URLs via the URL Inspection tool in GSC.
- Annotate the migration date in your analytics platform.
6.3 The Change of Address tool
Google's Change of Address tool (available in GSC under Settings for domain migrations) instructs Google to transfer PageRank and signals from the old domain to the new one faster than it would discover them organically. You must:
- Have both the old and new domain verified as properties in GSC
- Have a 301 redirect from old to new already live
- Submit the tool from the old domain's GSC property
Google's documentation states the tool is active for approximately 180 days. Use it even if you have correctly set up all redirects — it accelerates the recrawl-and-reassign process.
7. Phase 4: Post-Launch Monitoring
The migration is not finished at launch. The weeks immediately after launch are when most migration failures become apparent, and when fast intervention can limit damage. Define a monitoring cadence:
7.1 Daily (first two weeks)
- GSC Performance: impressions and clicks by day — compare the same days from the prior week and year
- GSC Coverage: watch for a spike in 404s (missed redirects) or "Redirect error" items
- Server logs: confirm Googlebot is crawling the new site and finding 200 responses, not being stuck in redirect loops
- Spot-check priority URLs with the URL Inspection tool — confirm they are being indexed under the new URL
7.2 Weekly (weeks 3–12)
- Rank tracking: compare current positions against pre-migration baseline for top keyword/URL pairs
- Crawl the new site in Screaming Frog: look for broken internal links, orphaned pages, canonicalization errors that only appear in production
- Backlink profile: confirm external links pointing to old URLs are being correctly redirected — use the backlink tool to check for lost links
- Core Web Vitals field data (available in GSC after sufficient traffic accumulates): confirm CWV has not regressed
- Index coverage: total indexed URLs should be growing toward the expected count from the baseline crawl
7.3 What normal looks like
Even a well-executed migration causes a temporary dip. Understand the expected pattern:
- Week 1–2: Googlebot discovers redirects and begins recrawling. Some rankings may fluctuate as Google processes the signals. This is normal.
- Week 3–6: Most important URLs should be re-indexed under new URLs. Rankings should begin stabilising or recovering.
- Week 6–12: Full index normalisation. For large sites, this can take longer.
- Domain migrations specifically: Full link-equity transfer can take 3–6 months even with the Change of Address tool. Patience is required, but if things are not stabilising by week 8–10, investigate actively.
7.4 Common post-launch problems and their fixes
-
Spike in 404s in GSC — Your redirect map has gaps. Pull the 404 report from GSC, cross-reference with the crawl baseline, and add the missing redirects. Prioritise URLs with inbound links.
-
Rankings dropping on specific pages but not others — Check whether those pages' redirects are working correctly. Also check whether their canonical tags point to themselves (not back to the old domain). Check whether they appeared in the new sitemap.
-
Significant total traffic drop without specific page-level errors — Check whether the new
robots.txt is blocking crawlers (a common launch mistake when staging blocks are not removed). Check the GSC Coverage report for a site-wide indexing issue.
-
Duplicate content / canonicalisation warnings — The old domain may still be accessible without redirects on some paths (e.g., the www vs non-www version, HTTP vs HTTPS). Confirm every variation of the old URL redirects to the canonical new URL.
-
Redirect chains appearing post-launch — Often caused by existing CMS-managed redirects that were not folded into the migration redirect map. Audit and flatten them.
8. HTTPS Migrations Specifically
HTTP → HTTPS migrations are simpler than domain migrations but have their own failure modes:
- Mixed content — After moving to HTTPS, any resource (image, script, stylesheet, iframe) loaded over HTTP triggers a browser warning and may be blocked. Audit with Screaming Frog (the HTTPS report), Chrome DevTools (Security panel), and fix all hardcoded
http:// references in content, templates, and configuration.
- Certificate misconfiguration — Ensure the certificate covers all subdomains you intend to serve (wildcard cert or explicit SANs), and that the certificate chain is complete. Use SSL Labs to verify.
- Non-HTTPS sitemaps and canonicals — After migration, your sitemap and all canonical tags must use
https://. A sitemap full of http:// URLs tells Google those are the canonical URLs — the opposite of what you want.
- HSTS — Once you are confident HTTPS is stable, configure HTTP Strict Transport Security (
Strict-Transport-Security response header). Start with a short max-age (e.g., one week), then extend to one year. Do not submit to the HSTS preload list until you are certain HTTPS is permanent.
- GSC property — HTTPS is a separate property from HTTP in Search Console. Add and verify the HTTPS version as a new property, and migrate your sitemap submission to it. Use the Change of Address tool from the HTTP property pointing to HTTPS.
9. Platform Migrations (CMS to CMS)
When migrating platforms — for example, from WordPress to a Payload/Next.js stack — the URL and redirect concerns above still apply in full, but there are additional SEO-critical items that change ownership:
-
Meta tags and canonicals are now your responsibility in code. A WordPress plugin was managing these. In a headless stack, you must implement
generateMetadata (Next.js App Router) or equivalent for every template type. Confirm that every page type — homepage, category, article, product, author, tag — has a template that generates unique, correct meta.
-
The sitemap must be regenerated dynamically from the new CMS content. Confirm it is accessible at
/sitemap.xml, contains the correct new URLs, excludes noindex pages, and is submitted to GSC.
-
Structured data templates must be rebuilt. JSON-LD blocks that existed in the old CMS (whether via a plugin or custom code) must be reimplemented in the new platform's templates. Validate them with the Rich Results Test against the new URLs.
-
Rendering must be verified. Use the URL Inspection tool to confirm that content, links, meta tags, and structured data are present in the raw HTML response, not only after client-side JavaScript hydrates. This is the fundamental promise of SSR/SSG, and it must be verified, not assumed.
-
Internal link audit. In the new CMS, confirm all internal links have been updated to the new URL structure. Do not rely on redirects to correct internal links — update them at the source so crawl budget is not consumed by redirect hops.
-
Page speed regression check. Platform changes frequently introduce performance regressions. Run Lighthouse and WebPageTest against the new staging environment for key templates and confirm Core Web Vitals are equal to or better than the old site before going live.
10. Phased Rollouts
For very large sites (100,000+ URLs), a big-bang migration — switching everything at once — is high-risk. Consider a phased rollout:
- Section-by-section migration — Move one URL section (e.g.,
/blog/) to the new platform while the rest of the site remains on the old one. Validate completely, confirm rankings hold, then proceed to the next section.
- Canary / percentage rollout — Use edge routing (Cloudflare Rules, Vercel, etc.) to send a percentage of traffic to the new stack. Monitor field data CWV and error rates before expanding to 100%.
- Stagger by priority — Migrate revenue-critical pages last, once the migration process is proven on lower-priority sections.
Phased rollouts require careful canonical management. During a partial migration, ensure old-domain URLs that have not yet moved still have their canonicals pointing to themselves (not pre-emptively pointing to the new domain before the content exists there).
11. Migration Pre-Launch Checklist (Summary)
This is a condensed version to be used as a go/no-go gate before flipping the switch:
- Full crawl baseline captured and stored
- GSC performance and coverage baselines exported
- Backlink profile exported with high-value link targets identified
- Rank tracking baseline set for top 100 keyword/URL pairs
- Redirect map covers 100% of indexed URLs from the baseline crawl
- No redirect chains in the map — all redirect to final destination directly
- Redirects QA'd on staging in Screaming Frog list mode
- Priority URLs individually verified manually
- Staging
robots.txt blocks all crawlers — will be changed at launch
- All canonical tags on new site point to correct new URLs
- All internal links updated to new URLs (not relying on redirects)
- New sitemap contains only correct new URLs, all returning 200
- Structured data ported, validated, and referencing new URLs
- HTTPS certificate valid and complete (if protocol change)
- No mixed-content errors
- Analytics tracking verified on all new templates
- GSC new property verified and ready
- Change of Address tool ready to submit (if domain change)
- CWV on staging equal to or better than live baseline
- Launch scheduled for low-traffic window with engineering available
- Rollback plan defined and confirmed as executable
12. Rollback Planning
Every migration must have a defined rollback plan before the launch date. This is not pessimism — it is engineering discipline. Define:
- What constitutes a rollback trigger (e.g., site returns errors on more than 20% of requests, homepage is inaccessible, critical checkout path is broken)
- The exact technical steps to revert DNS or CDN routing back to the old server
- Who has authority to trigger a rollback and who must be notified
- How long the old server will remain live and available to revert to (minimum: two weeks post-launch)
- How you will communicate a rollback to stakeholders
SEO-specific note: a rollback after a domain migration that has already been live for more than a few days gets complicated — Google may already be processing the redirect signals. For this reason, domain migrations in particular must be executed with confidence. The staging QA phase is where you build that confidence.
Milestone
You are ready to move on from this module when you can do the following without consulting notes:
- Given a real or sample site facing a domain change + URL restructure + platform migration simultaneously, produce a complete redirect map from a Screaming Frog crawl export, with no chains, no mass redirects to the homepage, and correct handling of pages with no direct equivalent.
- Write the pre-launch checklist for that specific migration and identify the three highest-risk items with mitigation steps.
- Describe what GSC signals you would monitor in the first 14 days post-launch and define what an anomaly looks like that requires intervention.
- Diagnose a post-migration traffic drop given a GSC Coverage report showing a spike in 404s, and describe the exact steps to resolve it.