WordPressJun 02, 202611 min read

Zero-downtime WordPress migrations

After 10+ live US-client migrations with no reported downtime, here is the exact pre-flight, launch and post-launch checklist I run — DNS, SSL, FTP, redirects, tracking, forms, and the small things that break sites at 3am.

Jhastine MacalinoWordPress · Front-End · Technical SEO · Pampanga, PH

A WordPress migration sounds boring until you are the person staring at a wrong DNS record at 11pm on a Friday. Most migrations do not fail because the database export was complex — they fail because someone forgot to renew the SSL, or the redirect map missed a category page, or the form was pointing at a staging endpoint nobody updated.

Here is the exact checklist I run before, during, and after every WordPress migration. It is the result of 10+ live launches across Unique Genius and Collaborate Pros client work, and I have not had a reported downtime incident yet.

The pre-flight checklist

Long before launch day, I lock these down:

The redirect map

If permalinks are changing — even slightly — you need a one-to-one redirect map. Every indexed URL needs a destination. I export the URL list from Screaming Frog and Google Search Console, then build the map in a Google Sheet. Old URL → new URL → status (301, 302, gone).

The redirect map is the document. The .htaccess or plugin entries are just the implementation.

The launch hour

  1. Drop the TTL on the live DNS records 24 hours before launch (so propagation is fast on the day).
  2. Final database export from live, final import to destination.
  3. URL search-and-replace for the staging hostname.
  4. Cut DNS over to the new host. Watch propagation with a tool that polls multiple regions.
  5. Verify SSL is serving on the new host.
  6. Test the homepage, one service page, one blog post, the contact form, and one admin login.

The post-launch pass

This is the step most agencies skip. Within an hour of launch I check:

The pattern is simple: most launches fail in the gap between "the homepage loads" and "everything else works." The checklist exists to close that gap.

— Read next

Elementor without generic templates