← All topic guides

Topic Guide

Migrating Thousands of Domains Without Breaking a Live Customer

Moving thousands of customer domains to a new edge layer is really two migrations happening at once. One is technical: proxy flags, SSL modes, DoH providers, an off-origin relay for the bare domain a managed edge won't proxy. The other is entirely human: a long tail of customers who each control their own DNS, on their own schedule, some of whom will never see the deadline email. Both migrations can fail independently, and this hub is built from real incidents in both halves.

The technical failures below share a shape: a setting that looked correct and wasn't verified against the live result. A certificate that issued while the page stayed dark, a DoH provider that failed instantly and completely instead of gracefully, a runbook, written by the same person reading it, that named the wrong account for a domain. The human failures are about batching and blast radius: canary batches before a full cutover, a migration board that tracks which domains are actually done instead of which ones were attempted, and a scan that can size the damage of a bad flip in twelve seconds instead of an afternoon.

If you're moving domains at any real scale, the lesson worth taking is that the deadline is never the hard part. The hard part is that every domain is a slightly different case, and the discipline that survives contact with the long tail is verifying live state before you touch anything irreversible, not trusting the plan that got you there.

9 posts in this guide, by DX

Start here

Migrating thousands of customer domains to a layer above the server

The technical part of an edge migration took days. The human part, moving a long tail of customer-managed DNS without breaking anyone's website, is the part that's still going. Canary batches, a migration board, deadline emails, and a relay with a tested restore.

· 3 min read

Before you touch a live domain, verify where it actually lives

SSL, DNS, and the edge you don't control

Naming decisions you can't take back

When the migration itself breaks a live customer

Hitting one of these walls in your own codebase or your own machine? Talk it through with us, or read the rest of the Build Log.