skip to content

field note

first published 2026-10-09

Site migration SEO checklist: the freeze, the map, the watch

A site migration loses rankings in three predictable ways. The SEO checklist I run on every replatform, redesign and domain move — freeze the inventory, generate and test the redirect map, watch the flip — with the evidence from migrations that went right and one that was blamed for a collapse it didn't cause.

1,174 words · 5 min read · technical seo

A migration is the one moment in a site's life when every ranking it has earned is handed back to Google for re-evaluation at once. Most of the damage I have been asked to repair afterwards was avoidable, and all of it was the same three failures: nobody froze what existed, nobody tested the redirect map before the flip, and nobody watched the instruments afterwards.

This is the checklist I run on every replatform, redesign and domain move. I ran it on this site when it moved from WordPress to Next.js in August: 249 URLs frozen, every one of them mapped, 468 exact redirects generated from the inventory and proven by a test before cutover. And I ran it in reverse on a client whose migration was being blamed for a collapse that had started seven months earlier.

Phase 0: freeze

Nothing moves until there is a record of what exists.

  • The URL inventory. Every URL the live site serves: from the sitemap, from a full crawl, from Search Console's pages with impressions in the last sixteen months, from the server logs for the last ninety days, and from the backlink export. Four of those sources will disagree with each other. The inventory is their union.
  • The ranking baseline. Positions and clicks for the queries that pay the bills, exported, dated, kept.
  • The link equity map. Which URLs carry referring domains. On this site the homepage carried most of it and one old blog post carried the next largest share; the migration kept both at their addresses.
  • The template inventory. Titles, descriptions, headings, canonicals, structured data and internal links on each template, so the new build can be diffed against the old.
  • A performance baseline. Server response at the origin, Core Web Vitals field data, crawl stats. You will want to know whether the new site is faster, and "it feels faster" is not a number.

Everything in this phase goes into a file that is committed and never edited again. It is the thing you argue from in week three.

Phase 1: map

  • One row per old URL, one target per row. The target is a live page on the new site that serves the same intent, or a deliberate decision to retire the URL with a redirect to the closest parent. Redirecting everything to the homepage is not a map; Google treats it as a soft 404 and you lose the equity anyway.
  • Generated, not hand-typed. When the map has more than a few dozen rows, write it as data and generate the redirect configuration from it. Hand-maintained redirect lists drift, duplicate and chain. The generator for this site reads the inventory and the content directory and emits the rules; a test asserts that every inventory URL resolves.
  • Single hop. Old URL to final URL, in one redirect. Chains cost crawl budget and leak signal. Trailing-slash normalisation, protocol and host canonicalisation all happen before your rules, so test the whole path, not just your rule.
  • Keep what can be kept. A URL that exists unchanged on the new site needs no redirect; it needs proof that it is unchanged. Put it in an explicit keep list and fetch it.
  • Legacy surfaces. Media hotlinks, the old platform's REST API, feed URLs, plugin sitemaps. Each has an audience of machines that will keep asking for it. Catch them with prefix rules rather than discovering them in the 404 log a month later.

Phase 2: test, before anything flips

  • Fetch every inventory URL against the new site on a staging host or with a hosts-file override, and assert the status code and the final URL for each. On a recent rescue, 1,687 URLs were mapped and every one fetched single-hop through the tested configuration before DNS changed.
  • Diff the templates. Old title against new title, old heading against new heading, canonical against canonical, structured data against structured data. The redesign that "kept all the content" usually dropped the H1 into a styled div.
  • Fetch as every reader. Googlebot, the AI crawlers, a plain browser, a browser with JavaScript off. The new build is almost always more JavaScript-dependent than the old one, and the crawlers that do not render will tell you.
  • Check access rules. The staging robots.txt, the password protection, the firewall rule that blocked bots from the preview. One of them is still there. Find it before Google does.
  • Rehearse the DNS change. Lower the TTL days ahead, know the exact records, know how to put them back.

Phase 3: flip and watch

  • Change DNS, then confirm from outside. Not from your machine with its cached resolver: from a public resolver, from the crawler's point of view, from a phone on mobile data.
  • Submit the sitemap immediately and read it back in Search Console a day later: discovered count, last read, errors.
  • Watch the logs daily for the first weeks. What Googlebot fetches, what it gets, which old paths it still asks for. On that rescue, 192 dead paths were still being crawled after the move, each one a small tax the redirect map had never heard of. The log is the only place they show up.
  • Watch positions against the baseline, query by query, and resist the urge to change anything else for a few weeks. A migration plus a content rewrite plus a new navigation is three experiments with one measurement.
  • Keep the old host alive but unserved until the index has turned over, so a missed URL can be found and mapped rather than lost.

The migration that was framed

The collapse that brought Trade2Sync to me was real: a trading-software company's search traffic had fallen hard and the migration was the obvious suspect. The exports said otherwise. Both Search Console properties, sixteen months each, showed the decline beginning the week of 15 December 2025, seven months before the cutover. The migration had been done with care; the cause was elsewhere, in a backlink profile where 1,273 of 1,506 referring domains were junk.

That is the quiet argument for the freeze. Without a dated baseline, every later problem becomes the migration's fault, and the real cause goes untreated.

The checklist, in one block

0  FREEZE   url inventory (sitemap ∪ crawl ∪ GSC 16mo ∪ logs 90d ∪ backlinks)
            ranking baseline · link equity map · template inventory · perf baseline
1  MAP      one target per old url · generated from data · single hop
            explicit keep list · legacy surfaces (media, api, feeds, old sitemaps)
2  TEST     fetch every inventory url against the new build · diff templates
            fetch as googlebot / ai crawlers / no-js · remove staging access rules
            rehearse dns, lower ttl
3  WATCH    confirm dns from outside · submit sitemap, read it back
            logs daily · positions vs baseline · change nothing else
            keep the old host unserved until the index turns over

Run it, keep the files, and when someone asks in week three what the migration did, you will be able to answer with a number instead of a feeling.

asked straight — answered straight

01How long after a site migration do rankings recover?

If every URL is mapped and the redirects are single-hop and tested before cutover, most sites see positions settle within weeks, with noise in between. If URLs were dropped or redirected to the wrong targets, recovery depends on how fast you find and fix them, which is why the watch period matters more than the launch day.

02Do I need redirects if the URLs stay the same?

You need to prove they stayed the same. A frozen inventory fetched against the new site before cutover is the proof. Trailing slashes, case, parameters and pagination are where 'the same' quietly isn't.

03Should I migrate the site and change the content at the same time?

Only if you accept that you won't be able to tell which change caused what. Separate them when you can: move first, hold content steady, watch, then improve. When the business won't wait, freeze a baseline so at least the measurement is honest.

04What is the biggest cause of lost traffic in a migration?

Dropped URLs that nobody inventoried, followed by redirects that chain or point at the wrong page, followed by blocking the new site from crawlers with a rule left over from staging. All three are avoidable with the same discipline: freeze, map, test, watch.

next step — technical seo audit

Technical SEO audit finished as fixes.

An audit that ends in shipped fixes, with the readouts to prove it. Send a brief — a few lines about the site, the problem and the evidence you have — and the reply is a straight read on fit and shape, from the person who does the work.

no forms · no funnels · jamie@jamiemckaye.com

Jamie McKaye

written by

Jamie McKaye

Technical SEO consultant and full-stack developer in Hersham, Surrey, in practice since 2007. One person, no handoffs: the audits, the code and the writing come from the same pair of hands. This site is the working proof — it grades itself on the same instrument it runs for clients.

aboutthe recordlinkedin ↗x ↗medium ↗