WordPress Migration Services: A Zero-Downtime Migration Plan
- Build and test the new environment before touching production traffic.
- Separate the initial bulk copy from the final delta sync to shorten the cutover window.
- A rollback plan must include writes, DNS and third-party integrations—not only server snapshots.
Start with a migration contract
Agree what success means before moving data. Record the source and target, site size, write-heavy journeys, integrations, DNS owner, acceptable maintenance window, recovery point, rollback trigger and decision-maker. Inventory cron jobs, webhooks, SMTP, payment callbacks, allowlists and hard-coded origin addresses.
The migration should preserve behaviour, not merely files and tables. A visually correct home page can hide broken forms, delayed orders and jobs still running on the old server.
The seven-step sequence
- 01Discover. Measure storage, database, traffic, scheduled work and every external dependency.
- 02Build. Provision networking, security, database, cache, backups, monitoring and staging on the target cloud.
- 03Copy. Move the bulk of files and database while production stays live.
- 04Rehearse. Run the migration automation, measure duration and test the target using a private hostname or hosts-file override.
- 05Quiesce and sync. Pause or queue writes briefly, transfer the final database and media changes, then confirm counts.
- 06Cut over. Change the edge origin or DNS record and watch real journeys.
- 07Hold and retire. Keep the old environment isolated and recoverable until the agreed observation period ends.
Make DNS boring
Lower relevant DNS TTLs ahead of the change if the cutover depends on direct DNS updates. Cloudflare explains that TTL controls how long resolvers cache records; its proxied records default to an automatic five-minute TTL. If an edge proxy is already in front, changing the origin behind it can be faster and more controlled than changing the public address.
Do not promise literal zero downtime across every resolver and browser. Promise a designed window, clear measurement and a rollback that is quicker than improvisation.
WordPress-specific traps
- Use a serialisation-aware tool for URL changes. WP-CLI
search-replacehandles serialised data and supports a dry run. - Check multisite domain mapping and run network-wide replacements deliberately.
- Prevent both environments from sending email, processing cron or accepting payment callbacks at once.
- Warm caches only after the correct content and configuration are in place.
- Confirm file permissions, salts, object-cache prefixes and environment-specific secrets.
- Test admin login, publishing, media, search, forms, checkout, webhooks and scheduled tasks.
Protect search visibility and integrations
A hosting migration should not change public URLs, canonical tags, indexability, structured data or redirect behaviour unless that change is explicitly part of the project. Crawl the source and target, compare response codes and canonicals, and keep the same analytics and consent behaviour. Watch Search Console coverage, crawl errors and organic landing pages after cutover.
External systems also remember the old environment. Confirm payment and form webhooks, API allowlists, SFTP jobs, email authentication, scheduled feeds, image origins and callback URLs. Search for hard-coded domains in code and serialised WordPress data using tools that understand WordPress formats; a raw database replacement can corrupt serialised values.
Design rollback around data
Rolling traffic back is easy until users have written new data to the target. Decide whether writes are paused, replicated or reconciled. State exactly when rollback is allowed and when the safer action is to fix forward.
Watch logs, error rates, queue depth, email delivery, form submissions, orders, performance and editor feedback before destroying the old environment.
The migration ends after a clean observation window
Keep the old environment unavailable to public traffic but recoverable while the new platform proves itself. Compare orders, leads, scheduled tasks, email, logs and analytics across a full business cycle. Confirm backups are now running on the target and complete a small restore test before declaring the move finished.
Only then remove old credentials, workers, cron jobs and infrastructure. Record the final architecture, owners, recovery process and lessons from the rehearsal. A good migration leaves the destination easier to operate than the source—not merely hosted somewhere else.
Questions people ask
Can WordPress be migrated with zero downtime?
Near-zero downtime is achievable for many sites by pre-copying data, rehearsing, briefly controlling writes and cutting traffic through an edge or low-TTL DNS change.
How long should the old server stay available?
Keep it isolated and recoverable through an agreed observation period. The duration depends on traffic cycles, data reconciliation and business risk.
Should we change URLs during the cloud migration?
Avoid combining unrelated changes. If the public domain stays the same, keep it. If URLs must change, use a serialisation-aware process and test redirects and canonical signals separately.
Primary sources
- WP-CLI search-replace command
- Cloudflare DNS TTL documentation
- Google Cloud disaster-recovery guidance
Provider features and prices change. Confirm the current region, service availability and calculator estimate before making a purchase decision.