Migrations are where good sites lose traffic. A new CMS, a redesign, a domain change or an HTTPS switch can each change thousands of URLs, and small mistakes multiply: one wrong redirect rule, one template that adds noindex, one environment setting copied from staging.
The fix isn’t a longer checklist. It’s measuring the site before and after, so every change is visible. This guide builds a migration plan around three crawls.
What can go wrong in a migration?
- Old URLs that don’t redirect, or redirect to the homepage
- Redirect chains and loops from stacked rules
noindexor a staging robots.txt left on the live site- Canonicals, hreflang and sitemaps still pointing at old URLs
- Internal links still pointing at old URLs, adding a redirect hop to every visit
- Content, titles or structured data lost in templates
- Pages with search traffic left out of the redirect map
Google’s guide to site moves with URL changes covers the essentials; the checklist below turns it into crawls you can run.
Before launch: benchmark the old site
Crawl the entire old site and keep that crawl. It’s your record of every URL, its status, title, canonical and indexability, and the baseline you’ll compare against.
Pull traffic data. Connect Search Console and GA4 so you know which URLs bring clicks and visits. Those are the URLs the redirect map must get exactly right.
Build the redirect map. One row per old URL, with its new equivalent. Map page to page, not everything to the homepage. Export the old crawl’s URL list as the starting point.
Before launch: crawl the new site
Crawl the staging site and check it. If staging sits behind a login, allow your crawler’s IP address instead (Crawlens doesn’t log in to sites), and if staging disallows crawling in robots.txt, turn off Respect robots.txt for this crawl. Then check:
- Indexability: no accidental
noindex, robots.txt rules or canonicals to staging URLs - Canonicals: every page has a self-referencing canonical on the new URL, as Google recommends
- Internal links use new URLs and none are broken
- Hreflang points to new URLs
- Titles, meta and structured data survived the new templates
- JavaScript rendering, if the new front end renders in the browser: compare raw and rendered HTML
Crawlens’s audit covers each of these: indexability, canonical, link, hreflang, content and structured data checks run on every crawl.
At launch: redirects
Google’s guidance:
- Use server-side permanent redirects (301 or 308).
- Redirect to the final destination directly. Googlebot can follow up to 10 hops, but Google advises keeping chains low, ideally no more than 3.
- Keep redirects for at least a year, so signals can transfer.
- Update internal links, canonicals, hreflang and sitemaps to the new URLs.
- If the domain or subdomain changes, submit a Change of Address in Search Console.
After launch: verify every old URL
Crawl the old URL list in Crawlens’s URL list mode (paste or import the URLs from your benchmark crawl). Every old URL should return one permanent redirect to its mapped new URL. The audit flags:
| Check | What it catches |
|---|---|
| Redirect chains (2+ hops) | Old URLs taking several hops |
| Redirect loops | Rules that send URLs in circles |
| Temporary redirects | 302/307 used where 301 is needed |
| Internal pages return 4xx | Old URLs with no redirect at all |
| HTTP version does not redirect to HTTPS | HTTPS migrations missing the site-wide redirect |
Check URLs with traffic first. With Search Console and GA4 connected, two checks catch the costly mistakes directly: pages with search traffic that return errors and landing pages with visits that return errors. Pages with search traffic that are not indexable catches noindex and canonical mistakes on pages that earn clicks.
After launch: compare and keep watching
Crawl the new site and compare with a previous crawl of it. If URLs didn’t change (a redesign or replatform on the same URLs), compare directly with the old-site crawl. Crawlens’s comparison shows new and fixed issues per check, plus URL changes: new URLs, URLs no longer found, status code changes, pages that became non-indexable, and changed titles.
Schedule crawls daily or weekly for the first weeks, with email alerts when the health score drops or new critical issues appear. Migrations often break things a few days later, when a cache clears or someone “fixes” a redirect rule.
Expect some movement. Google says rankings can fluctuate temporarily, and for medium-sized sites it can take a few weeks or more for the new URLs to replace the old ones in search.
Checklist
Before launch
- Full crawl of the old site saved as a benchmark
- Search Console and GA4 data pulled for every URL
- Page-to-page redirect map, including every URL with traffic
- New site crawled on staging: indexability, canonicals, links, hreflang, content, structured data
At launch
- 301/308 redirects straight to final URLs
- Internal links, canonicals, hreflang and sitemaps use new URLs
- Staging
noindexand robots.txt rules removed - Change of Address submitted (domain or subdomain moves only)
After launch
- Old URL list crawled: one permanent redirect each, to a 200, indexable page
- No errors or noindex on URLs with search traffic or visits
- New crawl compared with the baseline
- Scheduled crawls with alerts for the first weeks
- Redirects kept for at least a year
Frequently asked questions
How long should I keep redirects after a site migration?
Google recommends keeping redirects for as long as possible, generally at least one year, so it can transfer signals to the new URLs.
Should migration redirects be 301 or 302?
Use permanent redirects, 301 or 308, from each old URL to its equivalent new URL. Google recommends server-side permanent redirects where possible.
Will rankings drop after a site migration?
Google says to expect temporary fluctuation. For medium-sized sites it can take a few weeks or more for Google to show the new URLs instead of the old ones.
How do I check that all old URLs redirect correctly?
Crawl the list of old URLs after launch. Every one should return a single permanent redirect to its new equivalent, which should return 200 and be indexable.
Do I need the Change of Address tool?
Only when you move from one domain or subdomain to another. For URL changes on the same domain, redirects, internal links and sitemaps do the work.