Crawl the old site before you can't
The single most expensive mistake in a migration is starting the redirect map after the old site is gone. Once the previous CMS is decommissioned, nobody can reliably enumerate what used to exist — and the URLs that matter most are rarely the ones anyone remembers.
Before anything is switched, run a full crawl of the current site and export it. Then pull the same list from three other sources, because no single source is complete: your analytics platform for pages that received traffic, Search Console for pages that received impressions, and your backlink tool for pages other sites link to. That last one routinely surfaces URLs that get almost no traffic but carry most of the domain's external links — old press pages, a resource someone cited years ago, a discontinued product with a link from a trade publication.
The union of those four lists is your migration scope. Anything on it that will not exist after launch needs a decision recorded against it: redirect to a named equivalent, keep as-is, or deliberately retire. A URL with no decision is a URL that will 404.
Map to equivalents, not to the homepage
Every redirect should point at the closest genuine equivalent of the old page. When a product is discontinued, the equivalent is usually its category or a replacement product — not the homepage, and not a generic landing page.
Bulk-redirecting retired URLs to the homepage is common because it is trivially easy and it eliminates 404s from reports. It also passes almost nothing. Search engines treat an irrelevant redirect as a soft 404, and the ranking signals accumulated by the old page are effectively discarded. You have swapped a visible problem for an invisible one, which is worse because nobody investigates it.
Keep the chains short. A redirect that points to another redirect that points to a third URL will usually still resolve, but each hop is an opportunity for something to be misconfigured later, and long chains slow crawling on large sites. When you build the map, resolve it so every old URL points directly at its final destination.
One-to-one wherever a real equivalent exists
The old page's topic should be recognisable in the new page's content. If a visitor arriving from the old URL would feel they landed somewhere unrelated, search engines will reach the same conclusion.
301, not 302, for anything permanent
A temporary redirect signals the old URL is coming back. Migrations are permanent, and using 302s means signals sit in limbo rather than consolidating on the new URL.
Keep the redirects live for years, not months
External links and bookmarks persist far longer than anyone expects. Removing the redirect layer after six months quietly breaks every inbound link built before the migration.
Test the map before launch, not after
Run the full old-URL list against the staging environment and assert every one returns a 301 to a 200. This is a script, it takes minutes, and it catches the bulk of what would otherwise be found by a traffic decline.
The annotations everyone forgets
Redirects get attention because they are visible. The annotations that quietly break are canonical tags and hreflang, and both fail in ways that produce no error anywhere.
Canonical tags are frequently carried over from the old templates with old URLs baked in. The result is a new page that returns a 200, looks correct to a human, and tells search engines that the authoritative version is a URL which now redirects elsewhere. That is a contradictory signal, and the usual outcome is that the tag is disregarded and the engine picks a version itself.
Hreflang breaks even more silently on international migrations, because it depends on reciprocity — every page in a language cluster must reference every other, including itself. When one market's templates are updated and another's are not, the return references go missing and the entire cluster is ignored. Nothing is reported, and the symptom is the wrong regional page ranking in the wrong market, showing the wrong currency.
Check canonicals and hreflang on staging with the production hostname substituted. Both failures are invisible in a browser and both are cheap to fix before launch and expensive after.
What a normal recovery looks like
Even a technically flawless migration usually shows a dip. Search engines have to recrawl the old URLs, follow the redirects, process the new ones and reconsolidate signals, and on a large site that takes time. Two to six weeks of softness is ordinary and not evidence of a mistake.
What is evidence of a mistake is a decline that has not begun recovering after a month, or a decline concentrated in a specific section rather than spread across the site. Section-specific losses almost always mean a template-level fault — one page type whose canonicals, redirects or internal links were handled differently from the rest.
The most useful thing you can do in the first fortnight is watch coverage and crawl reports rather than rankings. Rankings are noisy and lag; a spike in 404s or a sudden drop in indexed pages tells you immediately, and while the fix is still cheap.
When the domain changes too
Everything above applies to a replatform where the domain stays the same. Changing the domain — which is what a rebrand usually means — adds a category of risk that is not a technical problem and cannot be engineered away.
Brand search is the exposure. People search your old name for years after you stop using it, and those queries are among the highest-converting traffic you have. A redirect captures the ones who search and click through, but it does nothing for the growing share who see an unfamiliar name in the results and scroll past. That erosion is gradual, hard to attribute, and rarely modelled when the rebrand is costed.
This is why we treat a name change as a search decision as much as a design one. If the honest driver is that the identity looks dated rather than that the meaning has changed, the migration risk is being taken for no reason a refresh could not have addressed.
Terms used in this piece
We do this for a living
If you'd rather not build this yourself, these are the services where it lives.