Skip to content
← All topics
05Migrations / Study guide

Website migrations: how to move a site without losing its search traffic

A working guide to planning, redirecting, launching and monitoring a site move, based on search engine documentation, the HTTP standards and published migration data, with my own judgement marked where they stop.

chapters
12chapters
to read
18 minto read
sources
24sources
questions
6questions

By Mani Bharij · Updated 7 October 2026

Chapter mapHover or tap a point
010203040506070809101112

Chapter 011 min

Types of website migration and how risky each one is

A website migration is any change that alters how search engines find, crawl or understand a site that already ranks. Some are mundane, such as moving to a new host. Others change almost everything at once: the domain, the platform, the URL structure and the templates. Search engines have spent years learning the old site, and a migration asks them to relearn it. The work is about making that relearning quick and unambiguous.

This guide covers each type of move and its risk, the planning that should start months before launch, redirect mapping, staging, the launch itself and what to watch afterwards. If you are moving an online shop between platforms, read it alongside the ecommerce SEO guide, because catalogues add their own problems. (If Shopify is on either side of the move, I have written up what changes when you migrate to or from Shopify.) If the move touches country or language sites, the international SEO guide covers the structure decisions.

Diagram

A migration in six stages

01

Benchmark

Record how the old site performs before anything changes: crawl it, export rankings and traffic by template, and list the deep URLs that carry backlinks. Without this you cannot tell normal turbulence from damage.

Step 1 of 6
Each stage has its own chapter below. Most migration losses trace back to a stage that was skipped, usually the first two.
Chapter 01 / 121 min

Types of website migration and how risky each one is

Risk depends on how many things a search engine has to re-establish. If the URLs stay the same, Google mostly has to notice that the same pages are now served from somewhere else. If the URLs change, every ranking page has to be recrawled, its redirect followed, and its signals consolidated onto a new address. If the content and templates change too, Google is also re-evaluating the pages themselves.

Migration typeWhat changesRelative riskMain thing that goes wrong
Hosting or CDN changeServers and DNS. URLs stay the same.LowNew infrastructure blocks or slows Googlebot, or the new copy has a different robots.txt.1
HTTP to HTTPSProtocol on every URLLow to mediumIncomplete redirects, mixed signals from canonicals and internal links still pointing at http
URL structure changePaths on the same domainMediumMissing or chained redirects, internal links left on old paths
Redesign on the same platformTemplates, navigation, contentMediumContent and internal links removed from templates without anyone noticing
Domain changeHostname on every URLMedium to highRedirects removed too early, old domain lapses, backlinks never updated
Platform or CMS changeUsually URLs, templates and rendering at onceHighPlatform imposes its own URL patterns, JavaScript rendering, lost metadata
Merging sitesTwo sets of URLs collapse into oneHighOverlapping pages redirected badly, one site’s content quietly dropped
International restructuringccTLDs, subdomains or folders, plus hreflangHighhreflang annotations broken by the new URLs, markets redirected to the wrong locale
Common migration types, ranked roughly by search risk (practitioner judgement)
Diagram

How risky each type of migration is for search

Lower riskHigher risk
  • Hosting or CDN changeHosting or CDN change: 12 percent of the way from Lower risk to Higher risk.
  • HTTP to HTTPSHTTP to HTTPS: 30 percent of the way from Lower risk to Higher risk.
  • URL structure changeURL structure change: 50 percent of the way from Lower risk to Higher risk.
  • Redesign on the same platformRedesign on the same platform: 50 percent of the way from Lower risk to Higher risk.
  • Domain changeDomain change: 68 percent of the way from Lower risk to Higher risk.
  • Platform or CMS changePlatform or CMS change: 85 percent of the way from Lower risk to Higher risk.
  • Merging sitesMerging sites: 85 percent of the way from Lower risk to Higher risk.
  • International restructuringInternational restructuring: 85 percent of the way from Lower risk to Higher risk.

Hover a row for the main thing that goes wrong.

Practitioner judgement, matching the table above. Risk rises with how many signals change at once.

Most real projects combine several of these. A replatform nearly always changes URLs and templates, and businesses often add a redesign and a content rewrite because "we are rebuilding anyway". The safer plan is the opposite: make the changes one after the other, not all at the same time.2 I agree with that where the business allows it. If a combined move goes badly, you cannot tell whether the redirects, the templates or the content caused it, and that slows recovery.

Chapter 02 / 121 min

What the search engines document about site moves

Google publishes two separate guides, and Bing has its own tool. Start by working out which Google guide applies to you.

  • Moves without URL changes, such as switching hosting provider or moving to a CDN. The steps are to lower the DNS TTL to a few hours at least a week in advance, check the new infrastructure does not block Googlebot, and only shut down the old hosting once traffic to it reaches zero.1
  • Moves with URL changes, which covers protocol, domain and path changes. This is the guide most migrations need. It covers URL mapping, permanent server-side redirects, updating internal links and annotations, sitemaps, Search Console verification of both sites, and monitoring.2
  • For Bing, Bing Webmaster Tools has a Site Move tool for announcing the move. A migration guide on Bing’s webmaster blog, written by Fili Wiese of SearchBrothers, also covers 301 redirects, keeping them live on the old domain for at least one to two years, and expecting some fluctuation in visibility even after a well-planned move.3

Google’s guides are short. Read them in full before planning starts, because most of the timing claims quoted about migrations come from them.

Chapter 03 / 121 min

Benchmarking the old site before anything changes

You cannot judge a migration without a record of the site before it moved, and once the old site is gone most of this data is impossible or tedious to recreate. Capture it early, and capture it again in the week before launch.

  • A full crawl of the old site, saved and exportable: every URL, status code, title, meta description, canonical, hreflang, word count, internal link count and structured data type. This becomes the checklist the new site is compared against.
  • Search Console performance data by page and query, exported at the longest window available. Search Console only keeps a limited history, and you will want the old URLs’ numbers months after launch.
  • Organic traffic and conversions by template or section (category pages, product pages, articles, location pages), not only as a site total. A migration that holds the total but loses one template is still a failure, and the total will hide it.
  • Rankings for a representative set of queries per template, if you track rankings.
  • Backlinks to deep URLs. Links to the homepage usually survive any migration. The value at risk is in links pointing to articles, products and tools several levels down, because those are the URLs most likely to be missed in a redirect map.
  • Current indexing state from the Page indexing report, so you know which problems existed before launch and do not blame them on the move.5
  • Server logs, if you can get them, showing which URLs Googlebot requests and how often. They show URLs no crawler or analytics tool will surface.
Chapter 04 / 121 min

Building a complete URL inventory from several sources

The redirect map is only as good as the list of old URLs it starts from, and no single source has them all. A crawler only finds URLs that are linked internally. Analytics only knows URLs that received visits. Search Console only reports URLs Google has seen. Orphaned pages, retired campaigns and old PDFs with good backlinks fall through the gaps, and they are often the URLs that matter.

SourceWhat it addsWhat it misses
Site crawlEvery internally linked URL with its on-page dataOrphaned pages and anything behind forms or JavaScript the crawler did not run
XML sitemaps (current and archived)URLs the CMS considers livePages excluded by the sitemap generator, and often images and files
Search Console performance and indexing exportsURLs Google has indexed or shown in resultsURLs with no impressions, and anything beyond the export row limits
Analytics landing pagesURLs that received traffic, including from email and paid campaignsPages with no recorded sessions
Backlink toolsDeep URLs other sites link to, including long-dead onesLinks the tool has not discovered
Server logsEvery URL requested by Googlebot and usersOnly as complete as the period you keep logs for
CMS or database exportEvery published item, including unlinked onesURLs generated by rewrites, filters and parameters
Where old URLs come from

Combine them into one list, normalise the URLs (protocol, trailing slash, case, parameters), and remove duplicates. Then tag each URL with its traffic, links and template so you can prioritise. On a large site you will not hand-check every row, but you should hand-check every URL that carries meaningful traffic or links.

Chapter 05 / 123 min

Redirect mapping: sending every old URL to its new address

The core of the move is a mapping from each current URL to its new equivalent, served as permanent server-side redirects.2 In the HTTP standard, a permanent redirect means the resource has a new permanent URI and future references ought to use it.6 For Google, redirects are one of the strongest signals for picking a canonical URL, alongside rel="canonical".7 So a clean redirect map does most of the work of carrying rankings across. I have written up how to build the redirect map step by step, from the spreadsheet columns to testing it on staging.

Map one to one wherever an equivalent exists

Each old URL should redirect to the single new URL that best matches its content and intent. A product redirects to the same product. A category redirects to the same category, even if it has been renamed. Where two old pages have been merged, both redirect to the merged page. Pattern rules (for example, every /blog/yyyy/mm/slug to /articles/slug) are fine for templates with a clean pattern, but test them against the full inventory, because exceptions are where pattern rules break.

Never send everything to the homepage

Redirecting large numbers of old URLs to the homepage, or to any single irrelevant page, is the shortcut that costs the most. Google might treat such redirects as soft 404s,2 and in practice that means the old URL’s signals are not passed on. If a page has no equivalent on the new site, let it return a 404 or 410.2 A 410 is the more specific of the two: the HTTP standard defines it as a resource that is no longer available, with the condition likely to be permanent.6 A redirect to the nearest relevant parent (a discontinued product to its category, for example) is a reasonable middle ground when the parent serves the same need.

Avoid redirect chains

Sites that have been migrated before usually carry old redirects. Add a new migration on top and an old URL can hop three or four times before it lands. Googlebot can follow up to 10 hops, but redirecting straight to the final destination is the safer setup.28 Search Console’s Page indexing report shows a chain that is too long, or a loop, as a redirect error.5 Before launch, flatten every existing redirect so it points at the final new URL, and include those legacy URLs in your test list.

Choosing between 301, 308, 302 and 307

CodeMeaningHow Google treats itUse in a migration
301Moved permanently6A signal that the target should be canonical9The default for moved pages
308Permanent redirectTreated as permanent, the same as 301 for canonicalisation9Equivalent for SEO. Also guarantees the request method and body are kept, which matters for forms and APIs10
302 and 303Found, see other. A client may switch a POST to a GET6Followed, but not used as a signal that the target should be canonical9Avoid for moved pages
307Temporary redirect, with the request method kept6Treated as temporary9Avoid for moved pages
Redirect status codes and how Google treats them

To change how a URL appears in search results, use a permanent server-side redirect wherever possible. JavaScript redirects are the last resort, for when server-side and meta refresh redirects are not available.9 HTTP redirects also run first in browsers, before any page loads, and MDN advises against keeping meta refresh redirects alongside them, because the two can drift apart and cause loops.11 Some platforms and plugins default to temporary redirects, so check the status code the server returns. The setting in the admin screen can be wrong.

Chapter 06 / 121 min

How long to keep redirects, and when to use the Change of Address tool

Keep redirects for as long as possible, and generally at least one year.2 Google’s John Mueller gave the reason in a 2021 Ask Googlebot video: its systems need to see a redirect a few times to record the change, and recrawling takes time.12 The migration guide on Bing’s blog goes further, at least one to two years and preferably longer.3 Treat a year as a minimum. Backlinks, bookmarks, old emails and printed material keep sending people to old URLs for years, and a redirect costs almost nothing to keep. I would only remove a migration redirect when the old URL has had no meaningful requests in the logs for a long period, and even then I would question why it is worth the effort.

For a domain change, keep control of the old domain. Letting it lapse removes every redirect at once, and someone else can register it.

The Change of Address tool

Search Console’s Change of Address tool tells Google that a whole site has moved from one domain or subdomain to another.13 It only applies to that kind of move. It is not for HTTP to HTTPS changes, path changes within a domain, www to non-www changes, or hosting changes where the URLs stay the same.13

  • You must be an owner of both the old and new properties in Search Console, using the same Google account.13
  • The old homepage must 301 redirect to the new one, and the tool works on domain-level properties, not path-level ones.13
  • The tool’s effect lasts 180 days, and Search Console asks you to keep the redirects for at least that long.13 Read that alongside the one year guidance above, and keep them longer.

Whether or not the tool applies, verify both the old and new sites in Search Console, including all their variants.2 Add both to Bing Webmaster Tools as well, which is where Bing’s Site Move tool lives.3 Do this before launch so the old properties have data for comparison.

Chapter 07 / 121 min

Staging environments and the noindex that follows you into production

A staging site has to be kept out of search, and the way most teams do it causes the most common launch failure. The two usual tools behave differently, and the difference matters at both ends of the project.

  • robots.txt controls crawling, not indexing. The standard itself says its rules are not a form of access authorisation,14 and a URL blocked by robots.txt can still be indexed without a description if other pages link to it.15
  • A noindex directive keeps a page out of the index, but only if Google can crawl the page and see it. If robots.txt blocks the page, the noindex is never read.16
  • Password protection or IP allow-listing keeps everything out, including crawlers. Password protection is one of the documented ways to keep a page out of Google.15 This is the method I would use for staging, because it cannot be accidentally inherited as a search directive.

Staging also matters for testing. If it is password protected, your crawler needs credentials to crawl it, and you should crawl staging in full before launch: every old URL through the redirect rules, every new template for status codes, canonicals and directives.

Redirects carry signals from old URLs to new ones. The new pages still have to deserve the rankings they inherit, and every internal signal on the new site has to agree on which URLs are canonical. Updating internal links, canonicals and hreflang is part of the move itself.2

ElementWhat to checkWhy it matters
ContentBody copy, headings, titles and meta descriptions carried across for every ranking pageRedesigns often cut copy from category and landing pages. Rankings that depended on it go with it.
Internal linksNavigation, breadcrumbs, related links and in-body links point at new URLs directly, never through redirectsLinking to the canonical URL reinforces it as canonical.7 Links through redirects add a hop and a mixed signal.
CanonicalsEvery rel="canonical" references the new URL, is absolute, and is self-referencing where the page is the canonicalCanonicals left pointing at old URLs contradict the redirects, and conflicting canonical signals are a documented mistake.7
hreflangEvery alternate URL updated to the new address, fully qualified, with return links in placeGoogle ignores the annotations if two pages do not both point to each other.17 One market migrating ahead of another breaks the set.
Structured dataThe same schema types and properties present on each template as beforeNew templates often drop product, review or breadcrumb markup that the old theme added, and rich results disappear with it.
XML sitemapsOnly canonical, indexable new URLs, as absolute URLsList the URLs you want in search results.18 The sitemap protocol requires each URL to begin with the protocol, such as https.19
What to check on the new site, compared with the benchmark crawl

Submitting a sitemap of the old URLs alongside the new one after launch helps Google discover the redirects sooner, and lets you watch indexing shift from one to the other over time.2 Remove the old URL sitemap once most of those URLs have dropped out of the index. Leaving it in place indefinitely lists URLs you do not want in search, which contradicts the guidance on sitemap contents.

Chapter 09 / 121 min

JavaScript rendering on a new platform

Platform changes increasingly mean a move to a JavaScript framework or a headless front end. That changes how Google gets the content. Google crawls, renders and indexes in separate phases, with rendering done by a headless Chromium that executes the page’s JavaScript.20 Content and links that exist only after rendering depend on that step working.

  • Server-side rendering or pre-rendering is still worth having, partly because not all bots can run JavaScript.20 Research by Vercel and MERJ, published in December 2024 from crawler traffic on Vercel’s network, found that none of the major AI crawlers it measured rendered JavaScript, including those from OpenAI and Anthropic.21 The AI search guide covers what that means for visibility in assistants.
  • Links need to be real <a> elements with href attributes. Those are what Google can reliably follow, and the History API is the supported way to handle client-side routing, not URL fragments.20
  • Single-page applications must return meaningful status codes. A "not found" view served with a 200 is a soft 404.20
  • Do not ship a noindex in the initial HTML and rely on JavaScript to remove it. Google may skip rendering when it sees noindex in the HTML, so the JavaScript never runs.20
  • Canonicals should be in the server HTML, and JavaScript should not change a canonical to a different URL from the one in the HTML.20

To test it, compare the raw HTML response of each new template with the old one: titles, canonicals, body copy, internal links and structured data. Then inspect a sample of rendered pages with the URL Inspection tool in Search Console. If the raw HTML of the new site is much thinner than the old one, treat that as a launch blocker.

Chapter 10 / 121 min

Launch day checklist for a website migration

Launch in a quiet trading period with the developers who built the redirects available for at least the following week. Google crawls a moved site more heavily than usual for a while, so make sure the servers can take it.2

Checklist0 of 10 done
Chapter 11 / 122 min

Monitoring after launch, and what normal turbulence looks like

Any significant change can bring ranking fluctuations while Google recrawls and reindexes, and on a medium-sized site it can take a few weeks or more for new URLs to replace old ones in results, longer for large sites.2 That is the only timeline Google gives, and it describes URLs being swapped in results. Traffic is a separate question. SALT.agency’s 2026 study of 1,052 domain migrations, some its own and the rest crowdsourced from other SEOs, measured how long the new domain took to match the old domain’s pre-migration monthly organic traffic. The median was 304 days and the mean 489, and roughly one in four recovered within 90 days.23 It covers domain changes only and, by its own account, does not analyse which migration practices made the difference, so read it as a range of outcomes, not a forecast. Nobody can tell you in advance how long your site will take. What you can do is check whether the mechanics are working, which is a better early indicator than traffic. There is a day by day version of this in what to check in the first month after a migration.

What to watch in Search Console

  • Page indexing report: old URLs should move steadily into "Page with redirect", and new URLs should move into indexed. A rise in "Not found (404)", "Soft 404", "Redirect error", "Blocked by robots.txt" or "Excluded by noindex" points at a specific fault.5
  • Sitemaps report: compare indexed counts for the old URL sitemap and the new one over time.2
  • Crawl Stats report: total requests, the response code breakdown and host status. Most responses should be 200 or similar, but during a site move a high share of 301 or 308 responses is expected.24 It is only available for root-level properties.24
  • Performance report by page: whether impressions are transferring from old URLs to new ones, template by template against the benchmark.

What to watch in server logs

Logs show which URLs Googlebot requests. In the first weeks you want to see Googlebot fetching old URLs and receiving 301s, then fetching the new URLs and receiving 200s. Watch for 5xx responses in particular. Server errors make Google’s crawlers slow down, and indexed URLs that keep returning errors are eventually dropped.8 The migration guide on Bing’s blog recommends checking the logs daily for at least three months after the move starts.3 A server that buckles under the post-launch crawl can do more damage than any mapping mistake.

Chapter 12 / 121 min

When to roll back a website migration

Rolling back is rarely the right answer, because it forces Google through a second move in the opposite direction and resets the clock. The migration guide on Bing’s blog names attempted roll-backs as one of the most problematic reasons migrations fail.3 Most post-launch problems are fixed faster by correcting the fault on the new site. Plan for it anyway, and keep the old site deployable for at least the first few weeks.

SituationUsual response
Missing or wrong redirects for some URLsFix forward. Add the redirects, then recrawl the old URL list.
Staging robots.txt or noindex left in placeFix forward immediately. Remove the block and resubmit sitemaps.
Thin content or missing internal links on a templateFix forward on that template.
Rendering failure: Google sees empty or near-empty pagesFix forward if it can be resolved in days. Consider rolling back if it cannot.
New platform cannot serve the redirects or status codes you needRoll back, because the fault is structural and will not be fixed quickly.
Servers failing under load, with sustained 5xx responsesRoll back or scale up at once, depending on which is faster.
Fix forward or roll back (practitioner judgement)

If you do roll back, reverse the redirects so the new URLs point at the old ones, restore the old sitemaps and withdraw any Change of Address request. Then work out what failed before you try again. The second attempt carries more risk than the first, because Google has now seen two moves in a short period.

Questions6 answered

Common questions

01How long does it take to recover traffic after a website migration?
There is no reliable figure. On a medium-sized site it can take a few weeks or more for new URLs to replace old ones in Google’s results, and longer for larger sites.2 Traffic often takes longer: in SALT.agency’s 2026 study of 1,052 domain migrations, the median time to regain the old domain’s organic traffic was 304 days.23 Recovery also depends on how much changed: a clean domain move with one-to-one redirects usually settles faster than a replatform with new templates and content.
02How long should I keep 301 redirects after a site move?
For as long as possible, and generally at least one year.2 The Change of Address tool asks for at least 180 days,13 and the migration guide on Bing’s blog says one to two years.3 In practice there is little reason ever to remove them, because backlinks and bookmarks keep using old URLs for years.
03Is a 308 redirect as good as a 301 for SEO?
Google treats both 301 and 308 as permanent redirects and uses them as a signal that the target should be canonical.9 The difference is for browsers and other clients: a 308 guarantees the request method and body are not changed.10
04Do I need the Change of Address tool for an HTTP to HTTPS migration?
No. The tool is for moving from one domain or subdomain to another, and not for HTTP to HTTPS, www changes, path changes or hosting changes.13 For those, redirects, updated internal links and canonicals, and new sitemaps do the work.
05Can I redirect old pages that no longer exist to the homepage?
It is not a good idea. Redirecting many old URLs to one irrelevant page such as the homepage might be treated as a soft 404.2 Redirect to the closest relevant page, and let pages with no equivalent return a 404 or 410.
06Is it safe to block a staging site with robots.txt?
It is not enough on its own. robots.txt does not keep a page out of search, and blocked URLs can still be indexed if linked from elsewhere.15 Password protection is safer for staging, and it cannot be carried over to the live site as a crawl block.
References24 sources

Sources

  • Platform docs18
  • Regulator3
  • Industry study2
  • Reporting1
  1. 01Changing your hostingGoogle Search CentralPlatform docs
  2. 02Site Moves and MigrationsGoogle Search CentralPlatform docs
  3. 03Website Migration with BingBing Webmaster BlogPlatform docs
  4. 04Challenge bad botsCloudflare DocsPlatform docs
  5. 05Page indexing reportSearch Console HelpPlatform docs
  6. 06RFC 9110: HTTP SemanticsIETFRegulator
  7. 07How to Specify a Canonical with rel="canonical" and Other MethodsGoogle Search CentralPlatform docs
  8. 08How HTTP Status Codes Affect Google's CrawlersGoogle for DevelopersPlatform docs
  9. 09Redirects and Google SearchGoogle Search CentralPlatform docs
  10. 10308 Permanent RedirectMDN Web DocsPlatform docs
  11. 11Redirections in HTTPMDN Web DocsPlatform docs
  12. 12Google: Keep 301 Redirects In Place For A YearSearch Engine JournalReporting
  13. 13Change of Address toolSearch Console HelpPlatform docs
  14. 14RFC 9309: Robots Exclusion ProtocolIETFRegulator
  15. 15Robots.txt Introduction and GuideGoogle Search CentralPlatform docs
  16. 16Block Search Indexing with noindexGoogle Search CentralPlatform docs
  17. 17Localized Versions of your PagesGoogle Search CentralPlatform docs
  18. 18Build and Submit a SitemapGoogle Search CentralPlatform docs
  19. 19Sitemaps XML formatsitemaps.orgRegulator
  20. 20Understand JavaScript SEO BasicsGoogle Search CentralPlatform docs
  21. 21The rise of the AI crawlerVercelIndustry study
  22. 22How To Audit Redirects In A Site Migration Using The SEO SpiderScreaming FrogPlatform docs
  23. 23Only 27% of domain migrations recover in 90 daysSALT.agencyIndustry study
  24. 24Crawl Stats reportSearch Console HelpPlatform docs
Going deeper on Migrations

Shorter pieces on one part of this subject

Questions about any of this?

LinkedIn is the easiest place to reach me. Send a message or connect, and I will reply there.