Why migrations go wrong
A migration is any change that moves URLs: a redesign with a new structure, a replatform onto different ecommerce software, a move to a new domain name, a merge of several sites into one, a split of one site into several, or a switch from HTTP to HTTPS. They all share the same risk. The addresses that search engines have indexed, that other sites link to, and that people have bookmarked stop resolving to the same content.
Migrations fail for boringly predictable reasons. Nobody built a complete inventory of the old URLs. Redirects went to the homepage instead of to equivalent pages. The staging site's noindex directive shipped to production. The redirect map was implemented as a chain three hops long. The old domain's DNS was canceled a week after launch. The launch happened on a Friday.
None of that is exotic. It is what happens when a migration is treated as a development milestone rather than as a search event that a development team happens to execute.
Building the URL inventory
The first deliverable is a complete list of every URL the old site is responsible for. Complete is the operative word, and one source is never enough. I combine a full crawl of the live site, server logs covering a long enough period to catch seasonal and low-frequency pages, Search Console performance and index coverage data, analytics landing page reports going back at least a year, the existing XML sitemaps, and a backlink export so that externally linked URLs are represented even when nothing internal points at them any more.
Each source finds URLs the others miss. Logs surface pages that lost their internal links but are still crawled. Backlink data surfaces old campaign pages and PDFs that carry some of the most valuable links on the site. Analytics surfaces pages that convert but rank for nothing, and that would otherwise be judged worthless and dropped.
Once the inventory exists it gets ranked — by organic sessions, by revenue, by referring domains, by conversions. That ranking decides which URLs are mapped individually and which can be handled by a pattern rule.
Redirect mapping
A redirect map pairs every old URL with the closest equivalent on the new site. The rules are simple to state and routinely broken.
- Map to the closest equivalent page, not to the homepage or a top-level category. A mass redirect to the homepage is treated as a soft 404, and whatever that page had earned is gone.
- Use 301 permanent redirects for permanent moves, and use 302 only where the move genuinely is temporary.
- Redirect in one hop. Chains dilute value, waste crawl budget and slow real users down. When a site migrates a second time, the new map has to be composed against the old one so that the oldest URLs still land in a single step.
- Do not redirect a URL that should return 410. Content that is genuinely gone should say so rather than land somebody on an unrelated page.
- Carry the details across — canonical tags, hreflang annotations, structured data and robots directives — and update internal links to point at the new destinations instead of relying on the redirects to do it.
The map is then tested against the full old inventory before launch, not after.
DNS, certificates and the cutover
Domain changes add a layer that redesigns do not: name resolution itself. I plan that with whoever controls DNS well before launch day, because it is the part that cannot be rolled back quickly.
Time to live values on the relevant records are lowered days in advance so the cutover propagates in minutes rather than a day. TLS certificates are issued and tested for every hostname involved, including the old ones that will only serve redirects, because a certificate error on the old domain breaks every redirect passing through it. Mail records are checked before anyone touches the zone, since a nameserver change made carelessly takes email down with it. CDN and firewall configuration is updated to serve and cache the new host. And the old domain is kept registered, renewed, locked and redirecting indefinitely rather than for a year, because links to it will keep arriving for as long as the old content is referenced anywhere.
Where the domain is being acquired rather than already owned, the transfer is scheduled first. A transfer takes days and cannot be hurried on launch morning.
Launch and the monitoring window
Migrations should not launch on a Friday, into a holiday, or during the trading peak the business depends on. Beyond timing, the launch checklist is short and non-negotiable: remove the staging noindex and the staging robots.txt, confirm the production robots.txt is the intended file, submit the new sitemaps, keep the old sitemaps reachable briefly so the redirects get discovered, and file a change of address in Search Console when the move is between domains.
Then the monitoring starts, and it runs for months rather than for a week. I watch index coverage on the new URLs, crawl rate and status codes in the logs, 404s arriving from both real traffic and crawlers, rankings on the highest-value terms, and revenue by landing page against the equivalent period before the move.
A short dip is normal while search engines reprocess the site. A dip that has not begun to recover is a signal to go and find the specific broken thing, not to wait it out.
Recovering a migration that has already failed
I am often brought in after the move, when traffic has fallen and the team that executed it has moved on to other work. Recovery is a forensic exercise, and the sequence matters more than the tooling.
The first step is reconstructing the old URL set from whatever survives: archived crawls, logs from before the cutover, backlink exports, analytics history, the Wayback Machine, and the search index itself. The second is establishing what each of those URLs does now — 404, redirect to the homepage, redirect through a chain, resolve to a page about something else, or fail on a certificate. The third is comparing traffic and rankings by URL and by section rather than in aggregate, because migration damage is almost never evenly distributed. Usually one template or one directory absorbed the loss and the site-wide number hides which.
Most of what I find is fixable. Rebuilding a correct one-hop redirect map, restoring canonical and hreflang annotations, undoing an accidental noindex and repairing internal links recovers a large part of what was lost, though it takes longer than getting it right the first time would have.
How a migration project runs
A migration is a defined project with a start, a deliverable and an end. In practice that means a pre-launch phase covering inventory, mapping, technical review of the new build on staging and the launch plan itself; a launch-week phase; and a monitoring phase that continues long enough to demonstrate the move worked.
The most useful thing I contribute is often the least technical: getting the search, development, hosting and DNS decisions into one plan with one order of operations, agreed before anything ships. Migration projects are handled through Hartzer Consulting.