Migrating a high-traffic WordPress site for an agency client is often met with dread. One wrong DNS edit or uncoordinated TTL drop can cause hours of downtime, lost WooCommerce orders, or broken MX records that stop agency client emails.
Having spent years in web hosting and server management across the UK, I have developed a repeatable, zero-downtime cutover strategy designed for site owners and web agencies.
Why Traditional WordPress Migrations Fail
Most migration failures come down to three fundamental mistakes:
- Migrating directly on the production host: Modifying files or running search-replace scripts on live servers without an isolated staging step. Refer to the WordPress.org Migration Guide for recommended staging setups.
- Ignoring DNS TTL propagation: Changing A records when TTL is set to 86400 seconds (24 hours), causing visitors to hit both old and new servers simultaneously. Review Cloudflare DNS Documentation for propagation timing.
- Overlooking WooCommerce & dynamic data: Failing to put the database into read-only or maintenance mode during cutover, resulting in lost order data.
+------------------+ +-------------------+ +-------------------+
| Old Host (Live) | ---> | Staging Sandbox | ---> | New Host (Cutover)|
| TTL = 300s | | Agency Review | | Auto-renew TLS |
+------------------+ +-------------------+ +-------------------+
The 4-Step Zero-Downtime Agency Workflow
Step 1: Pre-Flight Audit & DNS TTL Lowering
At least 48 to 72 hours before the planned migration window:
- Inspect current DNS TTL (Time To Live) settings for
@,www, and mail records (MX,SPF,DKIM). - Lower A-record TTLs to 300 seconds (5 minutes). This ensures that when cutover occurs, global DNS caches clear rapidly.
- Take full raw backups (cPanel cpmove, Plesk dump, or server-level
mysqldump+tar.gz).
Step 2: Staging Server Build & URL Isolation
Never cut over to a live target server without an agency review stage:
- Replicate the site on a dedicated staging environment (e.g.
client-staging.askharrison.co.uk). - Update
wp-config.phpdatabase credentials and runwp search-replaceto match the temporary staging URL. - Ensure PHP versions and MySQL/MariaDB collation settings on the new target match or exceed current specs.
| Migration Phase | Common Flaw | Professional Standard | Outcome |
|---|---|---|---|
| Pre-Flight | High DNS TTL (24h) | Lower TTL to 300s 48h prior | Rapid DNS cutover |
| Testing | Live server edits | Staging URL testing pass | Zero production bugs |
| Cutover | Missing delta sync | Out-of-hours delta DB sync | Zero lost WooCommerce orders |
Step 3: Out-of-Hours Cutover Execution
Schedule cutovers during low-traffic windows (typically 10:00 PM to Midnight UK time):
- Place old site into temporary maintenance mode (or read-only DB mode).
- Perform a final delta sync of
wp-content/uploads/and a final database import. - Update A and AAAA records at the DNS provider to point to the new IP.
- Issue Let’s Encrypt or ZeroSSL TLS certificates instantly using ACME HTTP-01 validation.
# Example delta rsync command for wp-content/uploads
rsync -avz -e "ssh -p 22" user@oldserver:/var/www/html/wp-content/uploads/ /var/www/html/wp-content/uploads/
Step 4: 14-Day Dual-Host Hold & Post-Migration Audit
Keep the old hosting environment active for 14 days post-cutover. This acts as a safety cushion for lingering DNS caches, legacy cron jobs, or third-party webhooks.
Need White-Label Migration Support for Your Agency?
If your agency handles multiple WordPress sites and would prefer to outsource the server layer to a specialist, explore my fixed-price Site Migration Service starting at £450 with a 30-day fix-free warranty.
Need expert help with your WordPress site?
I specialize in fixed-price WordPress migrations, PHP upgrades, and emergency hacked site recoveries for site owners and web agencies.