SSL Checker DMARC Meta Tags Site Speed Broken Links AI Chat Bookings Try ModusOp

Published 27 April 2026

Almost every catastrophic SEO incident we've audited started with a migration that nobody fully tested. New CMS, new domain, new URL structure, new templates — pick any one of those and the chance of breaking something is significant. Pick all four at once and you're almost guaranteed to lose a meaningful share of organic traffic unless you handle redirects perfectly.

This guide is the workflow we use for client migrations. It's not glamorous — it's mostly spreadsheets and verification — but it's the difference between a migration that goes unnoticed and one that takes six months to recover from.

The Single Most Important Idea

Every URL that has ever received traffic, has external inbound links, or is in Google's index needs to either:

  1. Continue to serve the same (or better) content at the same URL after migration, OR
  2. 301 redirect to the closest equivalent on the new site.

There's no third option. A URL that 404s post-migration loses its ranking, its inbound links, and any direct traffic. A URL that 301s to your homepage instead of a real equivalent loses most of its ranking value (Google explicitly treats homepage redirects as soft 404s).

The whole migration process flows from this principle.

Step 1: Build a Complete URL Inventory

Before you change anything, you need an authoritative list of every URL on the current site. Sources to combine:

De-duplicate the combined list. You'll typically end up with two or three times as many URLs as the public sitemap suggested. That's normal.

Step 2: Map Every URL to Its New Destination

For each URL on the old site, the destination is one of:

Avoid:

Build the map in a spreadsheet. Two columns: old_url, new_url. Save it; you'll need it again multiple times.

Step 3: Generate the Redirect Rules

Translate the spreadsheet into your server's redirect format. Most platforms support importing a CSV directly:

Whatever the format, the rules should be in version control. If something breaks post-launch, you need to be able to roll back, audit, and re-deploy.

Step 4: Test Every Redirect Before Launch

This is the step that gets skipped on tight timelines and causes most of the post-launch damage. Test in a staging environment that exactly mirrors production:

  1. Deploy the redirect map to staging.
  2. Take the spreadsheet's old_url column and run every URL through curl or Broken Link Finder against staging.
  3. Verify each one resolves to the expected new_url with HTTP 301 (single hop, not chained).
  4. Flag any URL where the actual destination doesn't match the map. These need fixing before launch.
  5. Verify the new URL itself returns 200 (not another redirect or 404).

For sites with thousands of URLs, automate this — a small script that reads the CSV, hits each old URL, and reports failures. It's a one-evening job and pays for itself many times over.

Step 5: Pre-Launch Crawl

Before flipping DNS, crawl the new site as a search engine would:

Broken Link Finder handles the link verification piece; for full-site crawls, use Screaming Frog or a similar dedicated crawler.

Step 6: Launch and Verify

On launch day:

  1. Flip DNS during low-traffic hours. The first hours of a migration are when problems surface; you want minimal traffic exposure.
  2. Run the redirect test against production immediately. Same script as step 4 but pointing at the live URLs. Confirm every old URL returns 301 to the right destination.
  3. Submit the new sitemap to Google Search Console. Speeds up discovery of the new structure.
  4. Use the URL Inspection tool on a sample of high-value old URLs to verify Google sees the redirect and is indexing the new destinations.
  5. Monitor Search Console's Coverage report daily for the first two weeks. Look for spikes in crawl errors, soft 404s, or 4xx responses.

Step 7: Post-Launch Maintenance

Migrations are never done at launch. The first 4-8 weeks need ongoing attention:

The Mistakes That Wreck Migrations

The Migration Checklist

Before launching:

After launching:

Migrations done this way are boring — which is exactly the goal. A boring migration is a successful migration. Run a final Broken Link Finder scan a week after launch and confirm everything still works; that's typically when subtle issues surface.

Verify your migration

Run every old URL through Broken Link Finder before and after launch — single-pass redirects, real status codes, no surprises.

Run an Audit →