Website migrations don’t usually fail because of one spectacular mistake. They fail because of 400 tiny “eh, we’ll fix it later” decisions. And then Search Console lights up like a Christmas tree.
This is a practical SEO checklist for migrations. The focus is broken links, redirects, and the stuff that keeps traffic from falling off a cliff.
TL;DR migration checklist
- ✅ Inventory old URLs (old sitemap + logs)
- ✅ Build a 301/410 redirect map (old → new)
- ✅ Update internal links (don’t rely on redirects)
- ✅ Launch QA crawl (catch 404s, loops, chains)
- ✅ Monitor Search Console + logs after launch
Prep (before you touch anything)
1) Inventory URLs
You need an “old world” URL list. The best sources:
- Old sitemap(s)
- Server logs (what people and bots actually hit)
- Analytics / Search Console exports
Don’t skip the boring edge cases: old PDFs, campaign landing pages, and “random” blog posts from 2017 that still have backlinks. Those are exactly the URLs that will show up as 404s for months if you don’t map them now.
2) Decide your redirect policy
- 301 for real moves (old page has a new home).
- 410 for intentional removals (no replacement).
- Avoid blanket redirects (everything → homepage) unless you enjoy confusing users.
3) Freeze the window
Plan a deploy window and a rollback plan. Migrations fail most often when changes keep shipping while redirects are half done.
Map redirects (the part that saves you)
If you have old + new sitemaps, you can generate a mapping workflow instead of hand-editing spreadsheets. Use TinyUtils Sitemap Delta to compare lists and export redirect rules.
A simple way to think about the mapping: for each old URL, pick the new URL that answers the same intent. If there isn’t a real replacement, don’t fake it — return a 410 and move on.
| Old URL | New URL | Status |
|---|---|---|
| /pricing/ | /plans/ | 301 |
| /blog/old-post/ | /blog/new-post/ | 301 |
| /downloads/legacy-brochure.pdf | (no replacement) | 410 |
Rules of thumb
- Closest match beats “kind of related”. Redirect to the page that answers the same intent.
- Specific before wildcard. Wildcards are powerful and dangerous.
- Kill chains. Old URLs should point directly to the final destination.
- Normalize slashes and casing. Most redirect bugs are “almost the same URL”.
Don’t forget the “boring” redirects
Migration redirect maps are usually about content URLs, but you also want your canonical behavior to be consistent:
- HTTP → HTTPS (pick one and enforce it).
- www vs non‑www (pick one, redirect the other).
- Trailing slash (pick a convention and stick to it).
These don’t feel exciting, but they prevent loops and “why does Google have two versions of every page?” headaches.
Query strings: decide your policy early
Some migrations change URL parameters (filters, pagination, search). Others only use parameters for tracking (UTMs). Decide what you’re going to do:
- Keep parameters when they affect the page content.
- Ignore/drop tracking parameters if you want cleaner analytics and fewer “duplicate” URLs.
- Map only when there’s a real one-to-one translation between old and new parameter schemes.
Implement (don’t forget internal links)
Redirects are necessary — but they shouldn’t be your internal navigation system. After you add redirects:
- Update nav and footer links.
- Update canonical URLs.
- Update sitemap(s) to reflect the new structure.
A quick sanity check that catches a lot of mistakes: every old URL should do exactly one hop (301) and land on a 200. If you see 301 → 301 → 200 chains, fix them now. Google follows chains, but you’re wasting crawl budget and making users wait.
Launch QA (catch disasters before Google does)
Do a crawl right after launch. Start with templates because they multiply: homepage, nav/footer, category pages, top blog templates.
- Run a scan with TinyUtils Dead Link Finder to catch 404s and broken outbound links.
- Re-run Sitemap Delta to confirm old URLs now resolve correctly.
What you’re looking for
- 404s on important pages
- Redirect loops
- Redirect chains
- Robots/sitemap mistakes
After launch (monitor like it’s your job)
- Watch Search Console for spikes in “not found” URLs.
- Watch logs for repeated 404s (especially old URLs still being hit).
- Fix the top 20 issues first — it’s usually most of the impact.
One practical trick: keep a simple “top 50 old URLs” list and re-check it daily for the first week. It’s boring, but it catches the high-impact issues fast — before they become “why is traffic down 30%?” threads.
Next steps
If you’re migrating soon, start by comparing sitemaps with TinyUtils Sitemap Delta. Then run Dead Link Finder after launch to catch the broken stuff fast.
Planning a website migration?
Use our tools to plan redirects and find broken links
Compare Sitemaps →