Website migration checklist: how to move a site without losing search traffic
A website migration is any change that moves or renames a site's URLs, platform, domain or structure. Examples: WordPress to Webflow, a new domain, or a redesign that renames pages.
When search traffic drops after a move, the cause is usually one of four things:
- missing redirects;
- content that didn't make it across;
- crawling blocked by mistake;
- tracking that stopped working at launch.
This checklist covers each one, in the order we work through them.
What counts as a website migration?
- Platform: a new CMS or site builder, such as Squarespace to WordPress or Wix to Webflow.
- Domain: a new domain name, or merging two sites into one.
- Structure: renamed URLs, merged pages or new folders (/blog to /insights).
- Protocol or hosting: HTTP to HTTPS, or a new host or CDN. These carry less risk when the URLs stay the same.
A redesign that keeps every URL and most of the content is lower risk. A redesign that renames pages is a migration and needs the same care.
Before you build: the inventory
- List every URL that matters. Combine:
- your current XML sitemap;
- a full crawl (Screaming Frog or a similar tool);
- the Pages report in Search Console;
- pages that received organic visits in GA4 over the last 12 months.
A crawl on its own misses pages that nothing links to but that still get visits.
- Record what each URL earns:
- organic clicks and top queries (Search Console);
- conversions (GA4);
- links from other sites (Search Console's Links report or Ahrefs).
- Decide what happens to each URL: keep it, merge it into another page, or retire it. Only retire pages with no traffic, links or conversions.
- Save the old site's metadata:
- title tags;
- meta descriptions;
- H1s;
- canonical tags;
- structured data;
- image alt text.
A new template can overwrite these without anyone noticing.
- Set a benchmark: export 28 days of Search Console clicks and impressions, plus positions for your top 20 queries.
The redirect map
This is the most important file in a migration.
- One row per old URL, mapped to the closest matching new URL. Don't send everything to the homepage. Redirects to unrelated pages don't pass along what the old page had earned.
- Use permanent (301) redirects that go straight to the final URL, with no chains.
- Cover the variants: trailing slash or not, http and https, www and non-www, and old URLs with query strings that other sites link to. Include PDFs and images that get search traffic.
- Retired pages with no replacement can return a 404 or 410.
- Keep the map in a spreadsheet your developer imports, so there's a record of every decision.
Build and staging checks
- Staging is hidden from search engines with a password or
noindex, not just robots.txt. - Every "keep" page exists on the new site, with its main content and headings carried over.
- Title tags, meta descriptions and canonical tags are set for each page, not left at a template default.
- Internal links point straight to the new URLs, not through redirects.
- Structured data validates in Google's Rich Results Test.
- The main content of each page is in the HTML without needing JavaScript. Search engines handle scripts with a delay, and many AI crawlers don't run them at all.
- Tracking is tested without touching live data. On staging, use a separate test property or a verified, active GA4 developer-traffic filter that excludes test events from production reporting. DebugView alone does not isolate production analytics. Keep Google Ads conversion tags off or in test mode. Staging tests should never count as conversions.
- Forms are tested with email delivery stubbed for routine tests, so test submissions don't reach your team or use your provider's sending allowance. A test inbox still uses provider quota. Run a controlled live-delivery test only when needed, using that allowance.
- Mobile layout and page speed are checked on the main templates.
Launch day
- Freeze content changes on the old site.
- Publish or switch DNS, then remove the staging block from the new site. This step is easy to forget.
- Turn on the redirects and test every row of the map. Run the list of old URLs through a crawler: each should return one 301 to a page that returns 200.
- Check robots.txt on the live site: nothing important disallowed, and the sitemap listed.
- Submit the new XML sitemap in Search Console. For a domain change, also use the Change of Address tool. It needs both domains verified and the redirects live.
- Check live tracking with a clearly marked internal test, such as a test email address that your analytics and CRM filters exclude. Confirm the form arrives and the test doesn't appear in conversion reports.
- If you run paid ads, update each ad's final URL to the new address. A redirect to a different domain can lead to a destination-mismatch disapproval, and every redirect slows the landing page.
After launch
- First week: check Search Console daily for crawl errors and 404s, and add missing redirects as you find them.
- First few weeks: compare clicks and impressions with your benchmark. Google says it can take a few weeks or more for a medium-sized site to show the new URLs, longer for big sites, and that rankings can fluctuate while it recrawls. A drop that keeps getting worse usually means missing redirects or missing content.
- Months two and three: compare query positions page by page against your inventory, and restore content to pages that slipped.
- Keep redirects for as long as possible, at least a year. That's Google's guidance for site moves (Google Search Central). For domain changes, the Change of Address tool's effect lasts 180 days, but the redirects should stay well beyond that. Keep the old domain registered so they keep working.
How long does a website migration take?
It depends on how many URLs change, how much content moves, and how many integrations (forms, ecommerce, CRM) need rebuilding. The inventory and redirect map often take longer than the build itself.
After launch, Google says recrawling and settling can take a few weeks or more for a medium-sized site. Large sites take longer.
The short version
| Phase | Don't skip |
|---|---|
| Before | Full URL inventory, with traffic and links for each URL |
| Build | Redirect map, metadata carried over, tracking and forms tested without live data |
| Launch | Remove the staging block, test every redirect, submit the sitemap |
| After | Daily 404 checks for a week, compare with the benchmark, keep redirects at least a year |