What counts as a site migration (and what each type needs)
Not every migration needs the same work. Google's own guides split moves into two kinds: moves where URLs change and moves where they do not (Google: site moves with URL changes, without URL changes).
| Migration type | URLs change? | Redirect map needed? | Change of Address tool? | Biggest risk |
|---|---|---|---|---|
| Domain change (oldbrand.com to newbrand.com) | Yes, all | Yes | Yes | Lost links if the old domain lapses |
| HTTP to HTTPS | Yes, protocol only | One rule | No, Google handles it | Chains with www and slash rules |
| Platform or CMS switch (Wix to WordPress, Squarespace to Shopify) | Usually | Yes | No (same domain) | New URL patterns and lost titles |
| URL structure change (new folders) | Yes | Yes | No | Unmapped long-tail pages |
| Redesign on the same URLs | No | No | No | Cut content, slower templates, noindex left on |
| Hosting or CDN move | No | No | No | Server errors, firewall blocking Googlebot |
The Change of Address tool is for moving a domain or subdomain only. Google says not to use it for HTTPS, www or path changes, and it keeps a move active for 180 days (Google: Change of Address tool).
The 10 checks that prevent most migration traffic loss
If you only have time for ten things, do these. Each is a row in the workbook with full how-to steps.
- Inventory every old URL from four sources: a full crawl, your XML sitemaps, Search Console's Pages report (clicks), and pages with backlinks. A crawl alone misses orphan pages and old campaign URLs.
- Map each old URL to its closest new URL, one to one. Same topic, same intent. Google's site move guide is built around this mapping.
- Do not dump removed pages on the homepage. Google may treat many old URLs redirected to one unrelated page as soft 404s. Pick the nearest category, or return 404 or 410 when nothing matches.
- Use server-side 301 or 308 redirects. Google treats them as a strong signal that the new URL is canonical. 302 and 307 are weak signals (Google: redirects).
- One hop, no chains, no loops. Googlebot follows up to 10 redirect hops (Google: HTTP status codes), but each hop slows users and crawling, and a loop never reaches a page. Flatten old redirects from past migrations too.
- Carry over titles, H1s and main content on pages that rank. New templates often reset titles to a default pattern.
- Fix canonicals, hreflang and internal links to use the new URLs. Never point them at the old domain or the staging host.
- Remove every staging block at launch: noindex tags, X-Robots-Tag headers, "Disallow: /" and passwords.
- Submit the new XML sitemap and, for domain moves, use the Change of Address tool on launch day.
- Keep redirects for at least a year, ideally for good. That is Google's own guidance, and it means keeping the old domain renewed.
How to build a redirect map that checks itself
A redirect map is a two-column list: old URL, new URL. The hard part is not filling it. It is catching the rows that look fine but break.
Here are real rows from the workbook's URL mapping sheet (northwind-outdoors.com is a fictional example store). You fill columns A to D. The flags and the verdict fill themselves.
| Old URL | New URL | Type | Target status | Verdict (formula) |
|---|---|---|---|---|
| /tents/2-person-tents.html | /tents/2-person/ | 301 | 200 | OK |
| /guides/pitch-a-tent-old | /blog/how-to-pitch-a-tent | 301 | 200 | Fix: point straight at the final URL (the target is itself redirected) |
| /sale | /offers | 301 | 301 | Fix: loop, both rows point at each other |
| /sleeping-bags/arctic-0f.html | (empty) | Fix: add a target or set 404/410 | ||
| /stoves/trail-stove-v1.html | /stoves/trail-stove/ | 302 | 200 | Fix: change to 301 or 308 |
| /winter-clearance-2023 | / (homepage) | 301 | 200 | Check: is the homepage really the closest page? |
| /catalog-2019.pdf | (empty) | 410 | OK: retired on purpose |
How to use it:
- Paste old URLs into column A and new URLs into column B, in the same format (full URLs or paths only).
- Sort by clicks and referring domains. Check the top 50 rows by hand.
- Before launch, crawl the old URL list against staging and paste each final status code into column D.
- Fix every row whose verdict does not start with OK. The summary at the top counts what is left.
Your migration timeline, phase by phase
| Phase | When | What you do | What is normal |
|---|---|---|---|
| 1. Pre-migration | 4 to 8 weeks before | Inventory, benchmark, map, build and test on staging | Nothing changes in Google yet |
| 2. Launch day | Day 0 | Remove blocks, switch redirects, crawl old URLs, submit sitemap, Change of Address | Google starts crawling harder |
| 3. Week 1 | Days 1 to 7 | Daily Search Console checks, fix 404s, re-crawl the new site | Rankings wobble, old URLs show "Page with redirect" |
| 4. Weeks 2 to 12 | Weekly | Fill the benchmark, investigate losing pages, keep redirects | New URLs replace old ones in results |
How long does a site migration take to recover?
Google says that for medium-sized websites it "can take a few weeks or more" for new URLs to show in search, larger sites take longer, and rankings can fluctuate during the move before they settle (Google). Google also says it will crawl the new site more heavily than usual for a while, so make sure your server can take it.
That is why the workbook tracks weeks 1, 4, 8 and 12, not just launch day. A dip in week 1 is expected. A page still down more than 30% at week 8 is a problem to investigate: check its redirect target, its content, its title and its indexing status. If total traffic falls and you cannot tell why, our traffic drop recovery playbook walks through the causes, and the indexing problems fix guide covers every "not indexed" reason in Search Console.
A sample from the checklist: launch day
| Task | How to check | Priority |
|---|---|---|
| Remove every staging block | View source on 10 key pages for noindex, check X-Robots-Tag headers, open /robots.txt | High |
| Crawl the full old URL list against the live site | Crawler in list mode, export final status and hops, paste into the URL map | High |
| Check every host variant redirects in one hop | curl -I on http, https, www and non-www of the homepage and one deep URL | High |
| Submit the new XML sitemap | Search Console (new property) > Indexing > Sitemaps | High |
| Use Change of Address (domain moves only) | Old property > Settings > Change of address | High |
| Inspect the homepage and one URL per template | Search Console > URL Inspection > Test live URL | High |
| Analytics shows live traffic | GA4 > Reports > Realtime, trigger one conversion | High |
The full workbook has 13 launch-day tasks, plus how to fix each one.
Who this checklist is for
- Business owners switching platforms (for example from Wix or Squarespace to WordPress or Shopify) who want a plain list to hand to their developer.
- Marketers and SEO leads running a rebrand, domain change or redesign who need owners, priorities and proof.
- Agencies and freelancers who want a client-ready plan and a benchmark that shows the result.
How to use this with an AI assistant
You can run most of the checks with an AI assistant connected to SEOmatic. Connect SEOmatic: https://seomatic.ai/mcp. Then paste:
SEOmatic reads your real Search Console data and can draft fixes in WordPress, Webflow, Shopify, Wix and other CMSs; nothing goes live until you approve it. It does not replace the redirect test in the workbook: crawl your old URL list with a crawler and paste the status codes into the URL map.
Connect SEOmatic: https://seomatic.ai/mcp
Before launch: copy-paste prompt
Replace the domains with your own.
Use SEOmatic to prepare the site migration SEO checklist for oldsite.com (moving to newsite.com).
1. Run connect_seomatic so I can sign in and connect Search Console for oldsite.com.
2. gsc_performance action top_pages for the last 12 months: list every page with clicks, sorted by clicks. These go first in my redirect map.
3. gsc_performance action top_queries for the last 3 months: the 50 queries that bring the most clicks, with the page that ranks for each (gsc_performance action query_pages for the top 10).
4. gsc_insights action sitemaps: which sitemaps Google has, and how many URLs each one submits.
5. site_audit on oldsite.com: broken internal links and existing redirects I should flatten before the move.
6. backlink_profile action referring_domains for oldsite.com: pages with links that must get a redirect.
7. Give me one CSV-style table for my URL map: old URL, clicks (12 months), referring domains, suggested new URL (leave blank if you are not sure).After launch: copy-paste prompt
Use SEOmatic to run the post-launch checks of the site migration SEO checklist on newsite.com (old site: oldsite.com, launched on YYYY-MM-DD).
1. Run check_site on newsite.com: homepage indexable, robots.txt not blocking, sitemap pages return 200.
2. gsc_performance action compare_periods by page: the 28 days since launch vs the 28 days before. List the 20 biggest losers.
3. gsc_indexing action batch_inspect on those pages and my 30 most important new URLs: indexed or not, and the canonical Google chose.
4. site_pages action crawl on the 10 biggest losers: did the title, H1, canonical and main content carry over?
5. site_audit on newsite.com: noindex leaks, canonicals pointing elsewhere, broken internal links, dead pages, slow pages.
6. gsc_insights action sitemaps: is the new sitemap read, with no errors?
7. Give me one table: check, pass or fail, evidence (URL and numbers), fix, priority. Stage the fixes you can make with task_manage action create and show them with show_approval_cards. Do not change anything I have not approved.What each tool covers here (and what it does not)
| Checklist phase | SEOmatic tool (MCP name, action) | What it covers | Do by hand |
|---|---|---|---|
| First look, no sign-in | check_site | Homepage indexability, redirects, noindex, canonical, robots.txt, up to 10 sitemap pages | |
| Pre-migration inventory | gsc_performance (top_pages, top_queries, query_pages), backlink_profile (referring_domains), site_audit | Pages with clicks, queries and their pages, linked pages, broken links | A full crawl of the old site (crawler of your choice) |
| Redirect map | none (the URL mapping sheet does it) | Crawl the old URL list after launch and paste final status codes into the sheet | |
| Launch day | check_site, gsc_insights (sitemaps) | Staging blocks left on the homepage, robots.txt, sitemap status | Change of Address tool (domain moves only) in Search Console settings |
| Week 1 to 12 | gsc_performance (compare_periods, trend), gsc_indexing (batch_inspect, 50 URLs per call, Google limit 2,000 per day per property), site_pages (crawl), site_audit | Pages that lost clicks, indexing of new URLs, titles and canonicals that did not carry over | Crawl stats and the Page indexing report in Search Console |
| Fixes | task_manage (create, decide, rollback), show_approval_cards | Stages fixes as proposals; a missing 301 can be added on Shopify, Wix, BigCommerce, HubSpot, Framer, Drupal and WordPress (SEOmatic Redirects plugin). Not on Squarespace or Webflow. | Server-level redirects (nginx, Apache, Cloudflare) |
The full checklist (80 tasks, URL map, benchmark): https://seomatic.ai/?utm_source=asset&utm_campaign=site-migration-seo-checklist
Go deeper
- GuideWebsite Redesign SEO Checklist: Keep Your Rankings Through a New Design
- GuideRedirect Mapping Template: A 301 Map That Flags Its Own Mistakes
- GuideChanging Your Domain Name Without Losing SEO
- GuideGoogle Search Console Change of Address Tool: Step by Step
- GuideHTTP to HTTPS Migration: The SEO Checklist
- GuideCMS Migration SEO: Switch Platforms Without Losing Rankings
Sources (12)
- developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes
- developers.google.com/search/docs/crawling-indexing/site-move-no-url-changes
- developers.google.com/search/docs/crawling-indexing/301-redirects
- developers.google.com/crawling/docs/troubleshooting/http-status-codes
- developers.google.com/search/docs/crawling-indexing/block-indexing
- developers.google.com/search/docs/crawling-indexing/http-network-errors
- developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing
- support.google.com/webmasters/answer/9370220
- support.google.com/webmasters/answer/7440203
- support.google.com/webmasters/answer/9205520
- support.google.com/webmasters/answer/9679690
- support.google.com/webmasters/answer/9689846


