Most WordPress migrations fail quietly — broken redirects, orphaned media, corrupted post content — and the damage shows up in your search rankings weeks later. I’ve run these migrations at national-newspaper scale. I know where the holes are before we start.
Recent work: Postmedia national newspaper network (multi-publication WordPress migration under live editorial operations)
Practitioner context: On WordPress since 2007; senior developer working across host-to-host, platform-to-WordPress, and multi-site migrations for Canadian and US clients
A WordPress migration is not a copy-paste operation. The content moves, but the assumptions your old environment was built on — PHP version, MySQL collation, upload paths, permalink structure, cached URLs baked into post content — don’t automatically transfer. When those gaps stay unresolved, rankings that took years to build can evaporate in a crawl cycle. I’ve been doing this work long enough to have a documented list of what goes wrong, and a process that prevents each one.
Who this is for
- ✅ You’re moving to a new host and need the migration done cleanly, not just “close enough.”
- ✅ You’re migrating from another CMS (Drupal, Joomla, a custom platform) to WordPress and the content is messy.
- ✅ You have years of SEO equity in your URL structure and cannot afford redirect gaps.
- ✅ You’re running a multi-site network or a high-post-count publication where batch failures compound.
- ✅ You’ve already had a migration go wrong and need someone to diagnose and recover the damage.
- ✅ You need the cutover to happen during a maintenance window without disrupting live editorial operations.
- ❌ You need a $99 migration plugin run and you’re comfortable owning the result.
- ❌ You have a brand-new site with no content history to carry forward.
What the migration covers
- Content audit: post count, post types, taxonomies, custom fields — documented before a single file moves.
- Redirect map: every URL that changes gets a 301; the map is built from crawl data and cross-checked against your top-traffic pages in GSC before cutover.
- Database migration and serialized-data repair: proper search-replace on serialized PHP strings, not a naive find-replace that breaks object integrity.
- Media library audit: verify attachment records match physical files; identify and re-upload orphaned or missing media before launch.
- Plugin audit: flag plugins that won’t survive the PHP/MySQL version change on the new host; identify replacements or required updates.
- Post content integrity check: scan
post_contentfor hardcoded URLs, absolute upload paths, and old domain references that a search-replace will miss if run in the wrong order. - DNS cutover plan: TTL reduction schedule, propagation timing, rollback window — written out step by step before you change a record.
- Post-launch verification: crawl the new environment, spot-check redirect chains, confirm no 404s on high-value URLs, verify media loads and forms submit.
What it costs
I bill at $275 an hour. Every migration gets a scoped estimate after a discovery call — I don’t quote blind because the range between a clean 200-post blog and a 50,000-post publication with a decade of permalink history is not a rounding error.
| Migration type | Typical hours | Estimate range (CAD) |
|---|---|---|
| Small site — under 500 posts, single host, clean permalink structure | 5–10 hrs | $1,375–$2,750 |
| Mid-size — 500–5,000 posts, complex redirect map, media library reconciliation | 10–30 hrs | $2,750–$8,250 |
| Large / complex — 5,000+ posts, multi-site, or platform-to-WordPress conversion | 30–80 hrs | $8,250–$22,000 |
What goes wrong in WordPress migrations, and how I prevent it
The most common failure is an incomplete redirect map — someone exports the old URLs, maps the obvious ones, and ships. What gets missed are the parameter-based URLs, paginated archive pages, and category paths that changed when the new site reorganized its taxonomy. Each one is a 404 that Google has a crawl budget entry for. I build the redirect map from a full crawl of the live site, not from a database export, and I cross-reference it against Search Console’s top-traffic URLs before any DNS record changes.
The second failure is post_content corruption from a poorly ordered search-replace. When you run wp search-replace against serialized data without the --precise flag, PHP’s serialized string lengths break and object deserialization fails silently. The post saves fine in the database; it just renders garbage on the front end. I run the search-replace in a staging clone first, verify byte counts on a sample of serialized rows, and only promote to the live database after the output passes.
DNS timing is where otherwise-clean migrations go sideways at the last hour. I write the cutover sequence as a timed checklist — SSL verification, then DNS change, then old-server redirect rule active, then cache warm — with a documented rollback step at each stage. There is no “we’ll figure it out during the window.”
The pre-migration audit that comes with the engagement
Every migration starts with audit work — content inventory, redirect mapping, serialized-data integrity check, plugin compatibility, DNS cutover planning. The depth scales to the size of the migration:
- Small site ($1,375–$2,750) — includes pre-check level audit work covering the content inventory, redirect map, and cutover plan. Under 500 posts, clean permalink structure.
- Mid-size ($2,750–$8,250) — includes mid-tier audit work: full content audit, redirect map cross-referenced against Search Console top-traffic URLs, media reconciliation, plugin compatibility under the new PHP/MySQL versions.
- Large or complex ($8,250–$22,000) — includes deep-dive audit work covering multi-site governance, archive-content integrity, taxonomy reorganisation, and the staged cutover sequence with documented rollback at every step.
The audit doubles as the scoping document. If the pre-migration work shows the site needs more than a migration — rebuilding on a new architecture, retiring substantial content, or changing CMS entirely — the report routes the engagement to a build tier and audit hours credit forward.
What comes alongside the migration work
Migrations are operational events as much as technical ones. The training piece covers the new environment, the redirect map, and the operator handover so the team is running the new platform confidently from day one.
- A compressed WordPress 101 session delivered with the migration when the source platform is not WordPress — covering the dashboard, the publishing flow, and the maintenance routine on the new install.
- A post-migration walkthrough at the close of the engagement covering the redirect map, the analytics and Core Web Vitals verification on the new environment, the new hosting and DNS surface, and the operator handover for ongoing publishing.
- A redirect-and-coverage check at 30 days post-launch verifying the high-traffic URLs are still landing, the 404 report is clean, and no SEO equity is leaking.
- Email Q&A access for the first 30 days post-migration on anything related to the work, no per-ticket limit.
Audit credit and scope flex
WordPress training classes delivered as part of this package
The training surface above is built around the WordPress training catalogue. The specific classes delivered as part of this engagement:
- WordPress Training 101 — compressed session for the new admin team when migrating from a non-WordPress platform — covered with the migration delivery rather than as a separate engagement.
- Bespoke workshop on top of the catalogue. A post-migration platform walkthrough covering the redirect map, the analytics and Core Web Vitals verification, and the operator handover for the new environment.
Each course in the WordPress training catalogue has its own public-cohort schedule and pricing if your team wants the catalogue cohort outside an engagement. Within an engagement the delivery is tailored to your specific build — same curriculum, your context, your dashboard.