SEO Migration.

website migration seo checklist

Website migration SEO checklist

Five phases, each with a gate that has to be true before the next one starts. Owners and outputs are named so nothing sits in the gap between two teams.

By Arsal Riaz, Technical SEO Consultant Published
Definition
A phase-gated migration checklist — A phase-gated migration checklist orders the SEO work by dependency rather than by convenience, and defines an exit condition for each phase. Work does not move forward until the gate is met, so problems surface while they are still cheap to fix instead of on launch day.

Most migration checklists are flat lists. That is the problem with them: a flat list lets you tick off launch-day tasks while the redirect map is still incomplete, and it gives no signal that you are about to ship something expensive. This one is ordered by dependency. Each phase has a gate — a single condition that has to be demonstrably true before the next phase begins.

Use it as a working document. Print it, take it into the planning meeting, and put a name against every row. The scope of the underlying work is on the website migration SEO services page, and unfamiliar terms are defined in the glossary.

This page is formatted for printing — everything expands, and navigation is stripped from the printed output.

01

Discovery and benchmarking

6–10 weeks before launch

Establish what "no loss" means in numbers, before anything changes. Everything measured after launch is compared against what is captured here, so a benchmark taken late is a benchmark that proves nothing.

  1. Get read-only access to Search Console and analytics

    Shared

    Both properties, before any other work starts. Access requests routinely take longer than the person requesting them expects, and every later step depends on this one.

    Output Verified access to both properties

  2. Export 12 months of URL-level performance

    SEO

    Clicks and impressions per page, not per query. Freeze the file with the export date in its name. This is the only dataset that makes a post-launch comparison possible.

    Output Dated benchmark export

  3. Crawl the current site in full

    SEO

    Every indexable URL with status code, canonical, meta robots, title, headings, word count, internal link count and structured data recorded per URL.

    Output Production crawl export

  4. Pull the referring domain data

    SEO

    Which pages carry external links, from any backlink tool. This list overlaps far less with the traffic list than people expect, and the difference is where equity hides.

    Output Pages ranked by referring domains

  5. Request server log access

    Engineering

    Ask early even if it turns out to be unavailable. Logs are the only source that shows what crawlers actually do rather than what you infer they do.

    Output Log access, or a documented decision that it is unavailable

  6. Record the indexable URL count

    SEO

    A single number, dated. After launch, comparing this against the new count is the fastest way to detect index bloat arriving with the new platform.

    Output Baseline indexable URL count

  7. Tier URLs by priority

    Shared

    Combine organic clicks, referring domains and revenue where available. The top tier gets one-to-one mapping; lower tiers can be handled by rule.

    Output Tiered URL inventory

Gate — do not start the next phase until this is true A dated, frozen benchmark exists: URL-level clicks and impressions for the last 12 months, the complete indexable URL inventory, and a full crawl of the current site.

02

Crawl parity and redirect mapping

4–8 weeks before launch

Decide where every URL goes. This is the phase that determines whether the migration works, and it is the one most often compressed when the build runs late.

  1. Review the proposed URL structure against the current one

    Shared

    Before mapping begins. If the new structure creates avoidable mapping ambiguity, this is the last point at which saying so is cheap.

    Output Structure findings with named owners

  2. Write pattern rules for the bulk of URLs

    SEO

    Most URLs map cleanly by rule. Writing the rules first turns the remainder into a visible, countable exception list rather than a vague concern.

    Output Rule set with match counts

  3. Test the rules against the real inventory

    SEO

    Not against the pattern — against the actual URL export. Every rule has exceptions, and they are always in the oldest content nobody remembers.

    Output Rule coverage report with exceptions

  4. Resolve every exception by hand

    Content

    Pages whose category no longer exists, merged product variants, retired campaigns. Each needs a destination, an owner and a deadline.

    Output Exception map with owners

  5. Decide the deliberate removal list

    Content

    Pages with no relevant destination return 410 Gone rather than redirecting somewhere irrelevant. Make this a recorded decision, never a default.

    Output Documented 410 list

  6. Specify where redirect rules will live

    Engineering

    Edge, application, or both. Edge rules respond faster and survive deploys; application rules suit logic needing database lookups. Decide and document the split.

    Output Redirect architecture specification

  7. Plan the internal link rewrite

    Engineering

    Internal links must point at final destinations in the source, not rely on redirects. Include absolute URLs stored in content database fields.

    Output Internal link rewrite scope

Gate — do not start the next phase until this is true Every URL in the priority tiers has a named destination and a status code. The count of unmapped URLs is zero, not "nearly zero".

03

Staging QA

1–3 weeks before launch

Prove the new site presents what the old one presented. The parity diff finds the problems nobody thought to test for, which is reliably where the damage is.

  1. Protect staging with HTTP authentication

    Engineering

    Not robots.txt. A Disallow rule does not prevent indexing of a URL that has been linked from anywhere, and staging URLs get pasted into tickets and chat.

    Output Staging behind authentication

  2. Crawl staging using auth credentials

    SEO

    Configure the crawler with the credentials rather than removing the protection. Taking auth off so a tool can crawl is how staging sites get indexed.

    Output Staging crawl export

  3. Diff staging against production, field by field

    SEO

    Titles, descriptions, H1s, canonicals, meta robots, word counts, internal link counts, structured data types, image alt coverage, hreflang.

    Output Parity diff with variance counts per field

  4. Compare indexable URL counts

    SEO

    A large unexplained increase means the new platform generates URLs the old one did not. That is index bloat arriving with the build, and it is cheaper to prevent than to undo.

    Output URL count comparison

  5. Verify rendering for every template

    SEO

    Fetch raw HTML and confirm body content, internal links and canonical tags exist without JavaScript execution. Do this per template, not per page.

    Output Rendering report by template

  6. Test priority redirects against staging

    SEO

    Every URL in the priority tiers, individually, for final status code and hop count. Chains and loops fail the gate outright.

    Output Redirect test results

  7. Confirm the noindex removal plan

    Engineering

    Staging carries noindex. Establish exactly how it is removed at cutover and who verifies its absence in production, in writing, before launch day.

    Output Documented noindex removal step with an owner

Gate — do not start the next phase until this is true Every unexplained difference in the parity diff is either fixed or accepted in writing, and every priority URL resolves in one hop to a 200 on staging.

04

Launch day

Cutover window and the following 48 hours

A monitoring shift, not a strategy session. Everything on this list should already have been decided; today is about verifying that what was decided actually shipped.

  1. Lower DNS TTL 48 hours ahead

    Engineering

    Drop to 300 seconds so the cutover propagates in minutes and a rollback is fast. This has to happen two days early to be useful, which makes it easy to miss.

    Output TTL confirmed at the registrar

  2. Verify redirects on the live host immediately

    SEO

    As soon as DNS resolves. Staging tests do not prove production behavior — edge configuration frequently differs between the two.

    Output Live redirect verification

  3. Check robots.txt in production

    SEO

    The staging version shipping to production is one of the two most expensive launch-day failures. It takes thirty seconds to check.

    Output Production robots.txt confirmed

  4. Check meta robots and X-Robots-Tag in production

    SEO

    The other expensive failure. A site-wide noindex can begin removing pages within days. Check headers as well as tags — X-Robots-Tag is invisible in page source.

    Output Production directive audit

  5. Submit updated sitemaps

    SEO

    New sitemap URLs submitted in Search Console, old ones removed. Confirm sitemap URLs match canonicals exactly, trailing slash included.

    Output Sitemaps submitted and accepted

  6. File Change of Address if the domain changed

    SEO

    Only after the sitewide redirect is live and verified, and only for a genuine domain move. It does not apply to protocol or structure changes.

    Output Change of Address filed

  7. Watch for crawl errors and server load

    Engineering

    Crawl activity spikes after a migration as search engines rediscover the site. Confirm the infrastructure handles it without timing out.

    Output First 48 hours monitored

  8. Know the rollback trigger and who can pull it

    Shared

    Agreed in advance, in writing. Deciding what constitutes a rollback condition during an incident produces the wrong decision.

    Output Rollback criteria with a named decision-maker

Gate — do not start the next phase until this is true Sampled priority redirects return one hop to a 200 on the live host, and production carries no accidental noindex, Disallow or stale canonical.

05

Recovery tracking

30, 60 and 90 days after launch

Measure against the frozen benchmark on a matched cohort of URLs. Week-over-week comparison in the first fortnight mixes recrawled pages with pages Google has not looked at yet, and tells you almost nothing.

  1. Compare a matched URL cohort, not the site total

    SEO

    Follow each pre-migration URL to its destination and compare that page's performance. If A 301s to B, A's performance is now B's performance.

    Output Cohort comparison against benchmark

  2. Re-test the redirect map against production

    SEO

    Releases after launch introduce chains. A rule added in week three often runs before the migration rules and quietly adds a hop to everything.

    Output Re-test results with any new exceptions

  3. Track the Googlebot hit distribution

    SEO

    In server logs, watch requests shift from old URLs to new ones. This is the only direct evidence of how discovery is actually progressing.

    Output Crawler request distribution over time

  4. Watch indexation counts in both directions

    SEO

    Old URLs should fall out; new URLs should be discovered. A rise in total indexable URLs against the baseline means bloat rather than growth.

    Output Indexation trend against baseline

  5. Identify losing cohorts by template and section

    SEO

    Losses concentrate in identifiable groups — a template that lost its canonical, a section that lost internal links. Grouping makes the cause visible.

    Output Loss analysis grouped by template and section

  6. Rank remaining issues by traffic at risk

    SEO

    Not by severity label. A critical issue affecting forty unvisited URLs should not outrank a moderate one affecting a revenue-driving section.

    Output Prioritized remediation list

  7. Keep old domain redirects live

    Engineering

    For at least twelve months where a domain changed, and ideally indefinitely. Letting the registration lapse discards accumulated signal permanently.

    Output Registration on auto-renew with a named owner

Gate — do not start the next phase until this is true Googlebot requests predominantly hit new URLs, and cohort performance has returned to the pre-migration range or the remaining gap is explained and owned.

Want a second pair of eyes on your version of this?

Send the checklist back with your notes and the launch date. Reviewing a plan someone else has already thought about is faster and cheaper than starting from a blank page.

Reply
Typically within one business day.
Hours
Monday to Friday, 9am–6pm US Eastern.
First call
Scoping, not a pitch. No deck.