Migrations fail quietly. The new site looks better in a stakeholder walkthrough. Core Web Vitals may even improve on lab tests. Three weeks later, category landings are soft, product pages return soft 404 patterns, and nobody is sure whether the cause is rankings, tracking, or both.
Pre-launch work is where you still control staging rules, DNS timing, and release blockers. After launch, every fix competes with hotfixes and angry sales threads. Treat the site migration audit as a go-live gate, not a retrospective.
Freeze the inventory before anyone moves URLs
You cannot map redirects from memory. Export the current indexable URL set from crawls, sitemaps, and Search Console top pages. Add URLs that earn links or conversions even if they look ugly. This inventory is the contract between old and new architecture.
- Crawl the live site for indexable templates and parameter variants you intentionally keep.
- Pull top landing pages by clicks and revenue for at least the last 12 months where seasonality matters.
- Include known bookmarks and campaign URLs that still attract visits.
- Label each row with template type and whether it must remain a 200 page or may redirect.
If the redesign removes whole sections, decide the successor intent early. A deleted guide with links and traffic needs a redirect to the closest living equivalent, not a homepage catch-all.
Build and test the redirect map like engineering work
Redirects are the migration’s spine. One-to-one maps beat fuzzy “we will handle it in the new IA” promises. Prefer 301s for permanent moves. Avoid chains. Avoid hop-through vanity URLs that exist only because the CMS likes clean slugs.
| Test | Pass criteria | Failure example |
|---|---|---|
| Top URL sample | Old URL returns single 301 to correct new URL | 301 to homepage for non-equivalent intent |
| Parameter handling | Known campaign params preserve or land correctly | UTM URLs 404 because rules are too strict |
| Trailing slash and case | Normalised according to new site rules without loops | Slash pair flips forever between hosts |
| HTTP to HTTPS / host | One hop to final https canonical host | http → www http → https chain of three |
| Removed content | 410 or redirect to nearest equivalent by policy | Soft 404 HTML with status 200 |
Spot-check redirect targets from a CSV of old URLs
# old-urls.txt contains one absolute URL per line
while read -r OLD; do
FINAL=$(curl -sI -L -o /dev/null -w '%{http_code} %{url_effective}' "$OLD")
echo "$OLD -> $FINAL"
done < old-urls.txtAutomate as much as you can, then manually review money URLs and oddly shaped legacy paths. Automation catches volume. Humans catch intent mismatches.
Confirm canonical, robots, and sitemap parity
On staging and in pre-prod, verify that each key template emits the canonical you expect for production hostnames. Staging should remain noindexed. Production should not inherit staging robots rules after cutover. This sounds obvious and still causes incidents every year.
- Compare old versus new self-canonicals for equivalent templates.
- Ensure noindex is present on staging and absent on production indexables.
- Generate new XML sitemaps that list only canonical production URLs.
- Prepare Search Console sitemap submission steps for launch day.
- Check that pagination, facets, and private areas follow the same index policy as before, or a deliberately improved one.
If index bloat was already a problem, migration is a chance to stop shipping waste into the new world. Do not blindly recreate every old tag archive. Align with the technical priorities in technical SEO audit checks that matter.
Preserve hreflang and international continuity
International sites lose organic visibility when locale URLs move and hreflang still points at the old tree. Build a locale matrix: each old locale URL maps to a new locale URL, and reciprocal hreflang entries update together.
Test return tags, x-default behaviour, and canonical agreement inside each locale. A canonical to the wrong country version can undo careful hreflang work. Sample with URL Inspection after launch for a handful of revenue locales, not only the default market.
Content and template parity on money pages
Design teams sometimes “simplify” category copy, FAQs, and product modules that were carrying rankings. Pre-launch, compare old and new rendered content for the templates that earn organic revenue. You do not need identical HTML. You need equivalent or better unique substance and internal links.
- Main heading and primary copy still present and crawlable.
- Product specs and availability visible without depending on fragile client-only calls.
- Internal links to child categories or related products still exist in HTML.
- Structured data equivalent where it previously supported rich results you care about.
If the migration includes a large content prune, run keep/merge/kill decisions before cutover so redirects have destinations. The editorial method in keep, refresh, or kill prevents homepage dumping.
Tracking, Search Console, and launch-day controls
If analytics breaks, you will misread a successful migration as a failure, or miss a real failure while celebrating vanity metrics. Verify tag management, consent mode behaviour, ecommerce events, and channel annotations before DNS flips.
In Search Console, confirm property coverage for the new host, prepare sitemap submission, and note export baselines for clicks, impressions, and coverage. Keep the old property accessible during transition if hostnames change.
Launch day is for executing a rehearsed checklist. It is not the moment to invent redirect rules under pressure.
Minimum launch-day SEO checklist
- DNS and TLS resolve to the intended production host.
- Staging remains noindexed; production indexables are indexable.
- Redirect sample for top URLs passes.
- Homepage, category, and PDP templates render primary content.
- Sitemaps live and submitted.
- Analytics real-time checks show expected pageviews on key templates.
Plan the first two weeks of verification
Pre-launch excellence still needs post-launch monitoring. Watch coverage spikes for 404s, soft 404s, and unexpected noindex detections. Compare organic landing-page cohorts against the pre-launch baseline. Spot-check backlinks to old URLs to confirm they resolve cleanly.
When issues appear, triage with the same prioritisation discipline you would use on any audit backlog. Start with broken money paths and redirect gaps. Save cosmetic template polish for later. If you need a scoring method for the cleanup queue, use how to prioritise SEO audit findings.
Migrations are temporary projects with permanent consequences. The pre-launch audit is how you convert a redesign calendar into a continuity plan. Teams that skip it are not brave. They are volunteering for a forensic cleanup while revenue pages flicker.
