Website Migration SEO Checklist: Redirects, Tests and Rollback
Which website migration tasks decide whether rankings hold, and in what order do you do them?
Updated
Rankings hold through a website migration when you do four things in order: benchmark and crawl the old site, build a one-to-one redirect map, launch with canonicals, sitemaps and links pointing at the new URLs, then watch Search Console and server logs for weeks. The redirect map carries the most risk. Google also advises changing one thing at a time, such as the domain first and the CMS or layout later, so you can trace any traffic drop to its cause. Give every task one named owner before the move starts.
Related guides: technical and on-page SEO checklist, SEO quick wins checklist for fixes before a move, SEO audit tool for crawling the old and new site.
1. Pick the migration type
3 tasks
Classify the migration type and write it in the plan
HighRedirects, a Change of Address request and DNS steps differ by type, so a mixed project needs one plan per type.
Check: Name one type for each part of the project. A mixed project gets one line per type, with its own steps.
Split combined projects into separate launches
HighGoogle says a site move combined with a redesign will probably lose some traffic while Google relearns the pages.
Check: Write the launch order in the plan: domain first, then layout or CMS, each in its own release.
For an HTTPS move, remove every HTTPS-to-HTTP path
CriticalGoogle keeps the HTTP page as canonical when the HTTPS page has a bad certificate, insecure dependencies other than images, a redirect through HTTP, or an HTTP canonical. HSTS does not override that preference.
Check: Test the certificate, mixed-content dependencies, canonicals, and sitemap and hreflang URLs for any http:// value.
2. Before the move: benchmark, crawl and map the old site
13 tasks
Export baseline organic clicks, impressions, queries and pages from Search Console
CriticalYou need this baseline for the comparison at each checkpoint after the move. The Performance report's default view covers only the past three months.
Check: Export queries and pages for a full period before launch. Save the files outside Search Console, with the launch date in the file name.
Snapshot rankings, indexed page count, organic sessions, conversions and revenue
HighBenchmark these measures before the move. You need the same measures at each checkpoint to tell a dip from a loss.
Check: Record each measure by template and for the top landing pages, with the date. Take the indexed page count from the Page indexing report.
Crawl the old site fully and save the crawl
CriticalThe crawl is the reference for status codes, titles, canonicals, internal links and hreflang on the old site.
Check: Crawl the whole site with Screaming Frog or a similar crawler, and save the export before any change.
Build one URL inventory from a crawl, Search Console, analytics, sitemaps and the CMS
CriticalGoogle names sitemaps, server logs or analytics, and the CMS as sources for old URLs. A full crawl is a fourth source.
Check: Merge the lists, remove duplicates, and add image, PDF, JavaScript and CSS URLs.
Snapshot the backlink profile and mark the most-linked URLs
HighA missed redirect costs the most on URLs with many links. Google also advises a list of sites linking to the old URLs.
Check: Export referring domains for each old URL, then mark the URLs with the most referring domains as must-not-break.
Build the 1:1 redirect map (old URL, new URL, type, status)
CriticalGoogle says people often redirect to wrong or non-existent URLs on the new site, so every target needs a test.
Check: Keep one target for each old URL, use a 301 or 308 for each move, and test that every target returns a 200 status.
Decide the fate of every old URL: redirect, merge, or 404 or 410
HighGoogle treats 404 and 410 the same and drops already indexed URLs that return them. Merged content can redirect to one new page.
Check: Add a decision column to the map. Give each 404 or 410 a reason, and consider a 301 for any URL that still has links.
Verify all old and new property variants in Search Console
HighGoogle advises covering every variant of both sites, including www, non-www, HTTP and HTTPS.
Check: Add each variant as a property, or add a Domain property, which covers all protocols and subdomains and uses a DNS record.
Copy the disavow file to the new property
LowA disavow file uploaded to the old site must be uploaded again in the new site's account.
Check: Upload the disavow file in the new account.
Check server capacity and warn the host
MediumGoogle crawls both the old and new URLs after a move, so the server needs room for the extra requests.
Check: Confirm the new server and CDN can handle the higher crawl load after launch. Send the host the planned move date.
Pick the launch window and the approach: all at once, or by section
MediumGoogle advises moving in a recurring traffic dip. Small and medium sites move all URLs at once, and large sites can start with a stable section.
Check: Compare weekly and seasonal traffic in analytics to choose the window. For a large site, pick a section that changes less often for the first move.
Back up files, database and DNS, and test the restore
CriticalThe backup is part of the rollback plan. An untested backup is a guess.
Check: Restore the backup into a scratch environment, and confirm the site loads and the database holds the latest content.
Check a purchased destination domain for manual actions and URL removals
HighA used domain can carry URL removals left by the previous owner, especially a site-wide removal.
Check: Before the move, look for manual actions and URL removals in Search Console for the domain, and clear any you find.
3. Staging, noindex and blocks
5 tasks
Put staging behind HTTP auth or an IP allowlist
HighGoogle suggests a test environment, perhaps IP-restricted, with noindex on any public test host. It also says robots.txt does not hide pages. Authentication is the primary block.
Check: Request the staging URL from an outside network. Confirm you get an access challenge, not the page.
Prepare the production robots.txt and the noindex removal list before launch
HighGoogle advises a written list of URLs whose noindex rules come off when the move starts, so nobody guesses on launch day.
Check: Store the final robots.txt and the removal list in the launch runbook, with one owner for each item.
Remove staging blocks at launch, then grep the built output for noindex and Disallow
CriticalA noindex tag usually sits in a shared template, so a homepage check misses article and product pages.
Check: Search the built HTML of one page from each template for noindex and Disallow, before and after the deploy.
Confirm robots.txt returns 200 or 404 (never 5xx) on the old and new hosts
CriticalA 5xx response stops Google's crawling for 12 hours. Google caches robots.txt for up to 24 hours, so an old block can last a day after you fix it.
Check: Request robots.txt on both hosts and confirm a 200 or 404 status. A 4xx other than 429 counts as no file.
Confirm the firewall, CDN or web application firewall (WAF) lets Googlebot reach the new stack
HighGoogle says firewall or DoS protection must not block Googlebot from reaching DNS or the hosting servers. A bot challenge looks like an outage.
Check: After launch, check the bot-protection logs for blocked Googlebot requests, and run a live test in URL Inspection on important pages.
4. Redirect rules
8 tasks
Use 301 or 308 for every permanent move, server-side
CriticalGoogle says a server-side redirect has the best chance of being read correctly. Avoid JavaScript redirects, which Google may never see if rendering fails.
Check: Read the response for each old URL. Confirm a 301 or 308 status and a server-side redirect.
Make every redirect one hop to a 200 page
HighGoogle advises redirecting to the final destination directly. Chains add latency, and some browsers do not support long chains.
Check: Flatten chains in the map. In the crawl, each old URL should show one redirect and a final 200 status.
Never redirect many unrelated URLs to the home page
HighGoogle says this can be treated as a soft 404. Consolidated content is the exception: many old pages can redirect to one new page that replaces them.
Check: Count the old URLs that point to each target. Review every target with many unrelated sources.
Return 404 or 410 for deleted URLs with no equivalent, and 301 those that still have links
MediumA 301 for a dropped URL with links keeps most of that link value. Google treats 404 and 410 the same.
Check: Mark each deleted URL in the map as 404 or 410, or as 301 when it has links. Confirm each one returns that status.
Test the whole map with a crawler or script, not by hand
CriticalGoogle's HTTP status guide says its inspection tools do not follow redirects, so a crawler that follows the chain fills that gap. The Page indexing report lists chains that are too long, loops and bad URLs.
Check: Test each old URL for its hop count, final URL, final 200 status and loops. Test http, https, www and non-www on the old host.
Google site move guide, Google HTTP status guide, Page indexing report help
Keep robots.txt on the old host free of long redirect chains
MediumGoogle follows at least five redirect hops for robots.txt, then treats the file as a 404. It does not follow JavaScript or meta refresh redirects for robots.txt.
Check: Request the old host's robots.txt and count the hops in the response. Remove any redirect on that path.
Handle Bing with 301s, a new sitemap and IndexNow
LowBing's Site Move tool is no longer available, so server-side 301s are how you tell Bing about a move.
Check: Submit the new sitemap in Bing Webmaster Tools, and send added, updated or deleted URLs through IndexNow, a protocol for sharing changed URLs.
Keep redirects live for a year or longer
HighRedirects keep passing signals and visitors while old links and Google traffic remain. Plan around the longer of the two Google figures.
Check: Put a removal date at least one year out in the plan. Extend it while links or Google traffic still reach the old URLs.
5. Launch day signals
9 tasks
Use a self-referencing absolute canonical on every new URL
CriticalEach new URL should carry a self-referencing canonical. Once redirects are live, canonicals on the new site must use the new URLs.
Check: Fetch one URL per template and confirm the canonical is the absolute new URL, not the old one.
Update hreflang to the new URLs, with return links and x-default
HighHreflang annotations must use the new URLs. Google may ignore them when a page does not link back to the page it points to.
Check: Confirm each language version links back, uses full http or https URLs, and that x-default covers unmatched languages. Skip this task for single-language sites.
Publish a new sitemap with only final 200 URLs, and submit it
HighGoogle says to submit the new sitemap. A sitemap file holds 50MB uncompressed or 50,000 URLs, and Google uses lastmod only when it is accurate.
Check: Include only absolute, canonical URLs. Split the list into several sitemaps at the limit, optionally with an index file, and set lastmod only to dates that match the page.
Keep the old-URL sitemap submitted for monitoring
MediumGoogle says the old-URL sitemap shows redirect warnings that you can ignore, and its indexed count falls as the new sitemap's count rises.
Check: Submit both sitemaps. Ignore redirect warnings on the old-URL sitemap only, and track both counts each week.
Rewrite internal links to the final URLs in the same release
HighGoogle says to replace internal URLs based on the mapping. An internal link that goes through a redirect adds a hop for users.
Check: Crawl the new site and list each internal link that answers with a 3xx status. Fix every one.
Update external, social and ad links, top inbound first
MediumGoogle suggests prioritizing outreach by the number of inbound visits for each link.
Check: Sort the inbound links to old URLs by visits, using analytics. Update the top ones first, then social profiles and ad campaigns.
Lower the DNS TTL a week ahead for hosting moves, and monitor propagation
MediumGoogle suggests lowering the TTL at least a week before a hosting move, to a few hours, so DNS caches refresh faster.
Check: Note the current TTL on each record, and lower it a week before the move. Watch propagation from more than one location, and keep the old host live.
Verify analytics and conversion tracking on the new templates, and annotate the launch
HighBroken tracking looks exactly like a traffic collapse, so rule out a measurement fault before you diagnose an SEO loss.
Check: Confirm each template fires the analytics and conversion tags in the real-time reports. Add a launch annotation with the date.
Move images and PDFs with the same redirect rules, and keep image URLs stable
MediumImages and downloads such as PDFs can hold traffic and links. Google says to reference an image with the same URL so it can be cached and reused.
Check: Add image and PDF URLs to the map. Return a 301 where a URL changes, and leave image URLs unchanged where you can.
6. Change of Address
4 tasks
Check the Change of Address prerequisites
HighYou must own both properties under one Google account, and the tool works only on domain-level properties, not on paths.
Check: Confirm owner access to both properties under the same account, and confirm the old property is at domain level.
Redirect the old homepage and canonical pages with 301 before you submit
CriticalGoogle asks for a 301 from the old homepage to the new one, and recommends 301s for the canonical pages. The tool runs a quick check for 301s on a few pages.
Check: Test the old homepage and the top canonical pages before you open the tool. Fix every critical pre-move failure the tool reports before you continue.
Submit Change of Address for every old host variant, then check each one
HighThe tool does not move subdomains, including www. It does move every protocol and every path under the domain. Google says to use it for unused www and non-www variants too.
Check: List every host variant in Search Console. Submit a request for each domain or subdomain change, and skip HTTP to HTTPS, www to non-www and path moves.
Don't chain or stack moves: one move at a time into a shared destination
MediumGoogle says you cannot submit a second move from the new site right after the first. Merging several sites at once can cause confusion and traffic loss.
Check: Finish one move, wait until traffic stabilizes, then start the next. Record the date each move finished.
7. Post-launch monitoring
10 tasks
Re-crawl the live site on launch day and diff it against the old crawl
CriticalA second full crawl confirms the changes are the ones you expect. An old URL with no link on the new site is an orphan.
Check: Compare status codes, canonicals, titles, internal links, hreflang and noindex between the two crawls. List every old URL that no new page links to.
Check server logs daily in week one for Googlebot hits, 4xx and 5xx
HighLogs show Googlebot's crawling, the URLs that return errors, and normal user traffic in one place.
Check: Filter the logs for Googlebot, and count 4xx and 5xx responses by URL each day. Log any new error pattern for the team.
Watch the Crawl Stats host status for robots.txt, DNS and server connectivity
HighA red status means a significant robots.txt, DNS or connectivity error in the last week.
Check: Check the host status in Crawl Stats each day in the first weeks. Treat red as an issue to fix the same day.
Track the old-URL and new-URL sitemaps in the Sitemaps report
MediumGoogle expects the indexed count for the old sitemap to fall over time while the count for the new sitemap rises.
Check: Record both indexed counts each week. A new-sitemap count that stays low is a prompt to check the redirects.
Review the Page indexing report weekly for redirect errors, noindex, soft 404 and not found
HighThe report's example list is limited to 1,000 URLs. Live URL Inspection does not test duplicate or canonical conditions, so use the report to find patterns.
Check: Use the report to find patterns each week. Check important URLs one by one in URL Inspection, and compare canonicals with the crawl.
Compare Performance clicks and impressions for old and new URLs at weeks one, two and four
HighGoogle says new URLs start to show impressions and clicks as they index, and rankings may fluctuate before they settle.
Check: Filter by the old and new URL paths separately. Read trends across weeks, not single days.
Check Core Web Vitals per new template once 28 days of field data exist
LowThe Chrome UX Report uses a 28-day rolling average, so new templates take weeks to show their field data.
Check: Review field data for each template after that window. Don't judge a new template on its first week.
Fix the 404s that you link to or list in a sitemap, and leave the rest
MediumGoogle advises fixing only the 404s you link to or list in a sitemap. A page that has moved should return a 3xx redirect.
Check: Filter the 404 list by internal links and sitemap membership. Fix those, then leave the rest.
Run a full audit at day 90 and compare it with the baseline
MediumThe monitoring plan ends with one full re-audit at day 90, the point to compare with the baseline.
Check: Re-run the full crawl, compare it with the baseline crawl, and confirm every must-not-break URL still redirects.
Keep checking until Change of Address ends at day 180, and keep redirects for one year
MediumThe in-progress notice and the move signals run for 180 days. The site move guide says generally at least one year for redirects, so the calendar needs both dates.
Check: Put both end dates in the plan. Don't remove redirects, or let the old domain lapse, before those dates.
8. Rollback and recovery
4 tasks
Write go/no-go and rollback criteria before launch, and name the rollback owner
CriticalSet three to five binary conditions, with a named rollback owner. The criteria are your own judgement.
Check: Write three to five yes or no conditions, for example: redirect map complete, staging crawl clean, backup tested, rollback owner named.
Keep the old host and a restorable backup live until old-host traffic is zero
HighGoogle says the old hosting can shut down once its traffic reaches zero, so keep it running until then.
Check: Track old-host traffic in the logs until it reaches zero. Keep the backup restorable until then.
Write the Change of Address cancel procedure into the runbook
MediumGoogle's cancel works for 180 days after the request. Remove the old 301s from the server first, or Google may keep following them.
Check: Write three steps in the runbook: remove the old 301s, add 301s from the new site back to the old, and click Cancel Move on the old property.
Set stakeholder expectations with the recovery data
LowOne Search Engine Journal study of 892 domain migrations found an average of 523 days for the new domain to match the old estimated traffic. Its figures are estimates from SEO tools, not each site's own analytics.
Check: Put these figures in the plan with the method limit beside them, so nobody reads an estimate as a forecast.
Reference tables
Migration types at a glance
| Type | What changes | Do URLs change? | Change of Address? | Main risk |
|---|---|---|---|---|
| Domain | The domain name, such as example.com to example.net, or merged hostnames. | Yes | Yes, for a domain or subdomain move. | Old URLs with no 301 to an equivalent page. |
| Platform or CMS | Templates, rendering and often the URL pattern. | Depends on the URL map. | No, unless the domain also changes. | Links built with scripts instead of a standard link (an a tag with an href), which Google cannot follow. |
| HTTPS | The protocol, from http to https. | Yes | No. | HTTPS pages that redirect through HTTP, use a bad certificate, or name an HTTP URL as their canonical (preferred) version. |
| URL structure | Paths, such as pages moved under a new folder. | Yes | No. Add redirects and update sitemaps. | A redesign combined with the move, which Google says will probably lose some traffic. |
| Hosting or CDN | The server, host or CDN, with the visible URLs unchanged. | No | No. | Crawl or DNS failures, and firewalls that block Googlebot. |
Redirect types and how Google reads them
| Redirect | How Google reads it | Use it for |
|---|---|---|
| 301 | Permanent. Google reads it as a strong signal that the target should be canonical. | Every permanent move. |
| 308 | Permanent. Google treats it the same as a 301, but the two codes differ in meaning for other clients. | A permanent move where the meaning matters to other clients. |
| 302 | Temporary. A weak signal, and the original URL can stay in results. | A short outage, when you want the original URL to stay in results. |
| 307 | Temporary. Google treats it the same as a 302. | A temporary change that should read as temporary to other clients. |
| Instant meta refresh | Read as permanent. | Avoid it when a server-side redirect is possible. |
| Delayed meta refresh | Read as temporary. | Avoid it for moves. |
| JavaScript redirect | Google may never see it if rendering of the content fails. | Last resort, when no server-side or meta refresh option exists. |
Common Questions
How many redirect hops can a migration afford, and what does each extra hop cost?
Google says it can follow up to 10 hops, but its site move guide advises redirecting straight to the final URL. If that is not possible, keep the chain ideally to no more than 3 hops and fewer than 5. Each extra hop adds latency for users, and not every browser supports long chains. Search Console's Crawl Stats report also counts each hop as a separate request, so every extra hop adds one request to the crawl count.
Do 301 redirects lose link equity, and is a 302 safer while I test?
Google says 301 and other permanent redirects do not cause a loss in PageRank, so a 301 is the right choice for a move. A 302 is a temporary redirect and a weak signal, and it can keep the old URL in search results. Do not use a 302 as a safety net during a move. Google reads it as temporary, so the old URL can stay in results.
Which moves need Change of Address, and which need only redirects?
Change of Address applies only when a whole domain or subdomain moves to another domain or subdomain. An HTTP to HTTPS switch, a move from www to non-www and a change of paths inside one site do not use it. Those moves need redirects, canonicals and updated sitemaps. For a domain move, submit the change for every subdomain variant of the old domain, including unused www and non-www hosts, from an account that owns both properties.
How long should I keep redirects and the old domain?
Google's site move guide says to keep redirects generally at least one year. Its Change of Address help says at least 180 days, and longer if Google traffic still reaches the old URLs. Plan for the longer figure. Keep paying for the old domain for at least a year as well, because Google sees no relationship between the two sites after 180 days, and someone could buy an abandoned domain and use it for malicious purposes.
How do I tell a traffic dip from a failed migration?
Judge the move in weeks, not days. Google says a small or medium site can take a few weeks for most pages to move, and rankings can fluctuate before they settle. Watch the indexed page counts for the old and new sitemaps first, because a low count on the new side can point at the redirects. Compare every measure with your pre-launch baseline. Recovery can take far longer than a few weeks. The rollback section gives the figures from a large study, with its limits.
Can I roll back after I submit Change of Address?
Yes, for 180 days after the request. Google's steps are to remove the 301 redirects on your server that send traffic from the old site to the new one, add 301 redirects from the new site back to the old one, then click Cancel Move in the Change of Address tool on the old property. Skip the first step and Google may keep following the old redirects after the cancel, so remove them before you cancel.