The mistakes that cause the most downtime are incomplete content maps, broken addresses and redirects, and launches without testing or rollback. A CMS migration, the move of pages, files, users, and database records from one publishing platform to another, stalls when teams treat it as a design change instead of a data move.
Downtime usually comes from small gaps that stack. A missing login, an unmoved file folder, or a form tied to the old system can keep a new site offline for hours. Careful inventory and staged testing prevent most of those delays.
Official resources:
- Follow Google's checklist for site moves with URL changes — Prepare the new CMS, map old URLs to new URLs, and monitor traffic to minimize downtime.
- Follow Google's checklist for hosting moves without URL changes — Test the new infrastructure, lower DNS TTL, and monitor traffic before shutting down old hosting.
Table of Contents
- Skipping the complete content inventory
- Why do addresses and redirects break after launch?
- Replacing add-ons and custom fields too late
- Launching without freeze and rollback controls
- Skipping the complete content inventory
- Why do addresses and redirects break after launch?
- Replacing add-ons and custom fields too late
- Launching without freeze and rollback controls
Skipping the complete content inventory
Many teams export pages but forget attachments, user roles, scheduled posts, and private files. The new site then launches with broken downloads, missing images, or staff locked out of editing. A full list before export takes time, but it is shorter than fixing gaps during an outage.
Map each old content type to its new home. A blog post, event listing, product page, and author bio may need different fields in the new system. If a field has no destination, decide before migration whether to drop it, merge it, or rebuild it.
Why do addresses and redirects break after launch?
Every page has an address, the exact path that browsers and bookmarks use to find it. When that path changes without a redirect, the automatic rule that sends visitors from the old path to the new one, visitors hit an error page.
Large migrations can create thousands of changed paths at once. Build a table of old and new addresses before launch. Test it on a private copy of the new site with real clicks, not only a scan.
- Check menus, image paths, PDFs, feeds, and paged archives
- Check login, search, checkout, and contact forms
- Check web addresses used in ads, newsletters, and printed material
Replacing add-ons and custom fields too late
Add-ons for forms, events, membership, translation, and payments rarely transfer directly between platforms. Custom fields, the extra boxes that store dates, prices, or locations, also behave differently in each system. Teams discover the mismatch only when a checkout button or booking calendar stops working.
List every add-on and what job it does. Then assign a replacement, a rebuild, or a removal for each one before moving data. Rebuild payment, login, and form handling first, because those failures force a rollback fastest.
Launching without freeze and rollback controls
Downtime grows when editors keep changing the old site while data moves. New orders or edits made after the final export never reach the new database. The team must then choose between losing updates or taking the site down to move them again.
Set a content freeze for the final transfer window. Lower the DNS TTL, the waiting time that controls how fast address changes spread, a day ahead so the switch happens faster. Keep a tested way back: a full backup, a database snapshot, and clear steps to restore the old site if the new launch fails. Practice the restore once on a test server.
Skipping the complete content inventory
Many teams export pages but forget attachments, user roles, scheduled posts, and private files. The new site then launches with broken downloads, missing images, or staff locked out of editing. A full list before export takes time, but it is shorter than fixing gaps during an outage.
Map each old content type to its new home. A blog post, event listing, product page, and author bio may need different fields in the new system. If a field has no destination, decide before migration whether to drop it, merge it, or rebuild it.
Why do addresses and redirects break after launch?
Every page has an address, the exact path that browsers and bookmarks use to find it. When that path changes without a redirect, the automatic rule that sends visitors from the old path to the new one, visitors hit an error page.
Large migrations can create thousands of changed paths at once. Build a table of old and new addresses before launch. Test it on a private copy of the new site with real clicks, not only a scan.
- Check menus, image paths, PDFs, feeds, and paged archives
- Check login, search, checkout, and contact forms
- Check web addresses used in ads, newsletters, and printed material
Replacing add-ons and custom fields too late
Add-ons for forms, events, membership, translation, and payments rarely transfer directly between platforms. Custom fields, the extra boxes that store dates, prices, or locations, also behave differently in each system. Teams discover the mismatch only when a checkout button or booking calendar stops working.
List every add-on and what job it does. Then assign a replacement, a rebuild, or a removal for each one before moving data. Rebuild payment, login, and form handling first, because those failures force a rollback fastest.
Launching without freeze and rollback controls
Downtime grows when editors keep changing the old site while data moves. New orders or edits made after the final export never reach the new database. The team must then choose between losing updates or taking the site down to move them again.
Set a content freeze for the final transfer window. Lower the DNS TTL, the waiting time that controls how fast address changes spread, a day ahead so the switch happens faster. Keep a tested way back: a full backup, a database snapshot, and clear steps to restore the old site if the new launch fails. Practice the restore once on a test server.




