Domain Migration: Preparation, Checklists, and Only One Late Night
When our client approached us about migrating from .com to .org, I thought "Oh, that's straightforward — just update some DNS records and we're good to go." Reader, I was wrong. Very wrong.
What followed was a journey into the depths of DNS configuration, email routing, and the realization that even a "simple" nonprofit website can have 68 different domain and subdomain combinations. Here's what we learned along the way.
The Setup
The stakes were high on this one. We were working with a nonprofit focused on voter engagement during an election year. Any downtime could mean potential voters missing crucial information.
What seemed like a straightforward domain change quickly revealed itself to be a web of interconnected services:
- A high-traffic nonprofit website during an election year (no pressure!)
- Multiple third-party services (Shopify, Squarespace, AWS, Heroku)
- Complex DNS configurations spread across Cloudflare and Namecheap
- Email routing that couldn't be disrupted
- Numerous redirect rules and domain verifications
Each of these components had its own quirks and requirements. A Shopify store needs different handling than a Squarespace site. AWS has its own way of handling SSL certificates. And don't get me started on email authentication records — one wrong move with those DKIM settings and suddenly your carefully crafted email campaigns are landing in spam folders.
Preparation is Everything
The key to a successful domain migration isn't in the technical complexity — it's in the preparation. In fact, I'd argue that the actual technical work of changing DNS records is the easiest part. The hard part? Knowing exactly which records to change, when to change them, and what might break when you do.
Here's what worked for us:
1. Domain Audit
Remember that moment when you're moving apartments and you start packing, thinking "I don't have that much stuff," only to find yourself surrounded by boxes three days later? That's what our domain audit felt like.
We created a comprehensive spreadsheet tracking every domain and subdomain, including:
- Current DNS configuration
- Where records were managed
- What services were using each domain
- Whether the domain needed to be migrated
- Dependencies and verification requirements
What started as a simple list grew into a sprawling spreadsheet with 68 entries. We found subdomains we'd forgotten about, redirect rules from years ago, and even some services we didn't initially realize were connected to our domain. Each discovery led to more questions: Do we still need this? What depends on it? What breaks if we change it?
The audit revealed all sorts of interesting combinations:
- Main website domains
- API endpoints
- CDN distributions
- Third-party integrations
- Email authentication records
- Marketing subdomains
Each one needed its own migration plan. Some could be moved ahead of time, others had to wait for the maintenance window, and a few (like email configuration) were better left until after the election season.
2. Clear Requirements
Our domain audit gave us a map of our territory. Now we needed to define what success looked like. This wasn't just about moving from .com
to .org
— it was about ensuring everything worked exactly as before, just with a different domain.
We documented exactly what "success" looked like:
- All existing sites/pages should function on both domains
- Embedded tools should continue working without client changes
- Email routing should remain uninterrupted
- All existing redirects must continue functioning
- SSL certificates needed to be valid across the board
Having these requirements written down proved invaluable. When you're in the middle of a migration and someone asks "Should we update this now or later?", having clear requirements helps you make those decisions quickly and confidently.
3. Central Checklist
With our domain audit complete and requirements clear, we faced a decision: create individual tickets for each task, or maintain one unified checklist? We chose the latter, and it was one of our best decisions.
Instead of creating hundreds of individual tickets, we maintained one comprehensive checklist divided into three categories:
- Pre-migration tasks
- During maintenance window tasks
- Post-migration cleanup
This approach gave us a clear view of the entire process while keeping things manageable. It also prevented us from getting lost in ticket management instead of actual migration work. When you're in the middle of a maintenance window at 11 PM, you don't want to be jumping between different tickets trying to figure out what's next.
The Migration
Choosing the maintenance window was its own challenge. We needed a time with minimal traffic but also when our team would be fresh and alert. Sunday night won out — low traffic and we could rest up during the day.
Here's how we structured the actual migration:
- Pre-migration Tasks
We spent weeks preparing everything we could in advance. Think of it like mise en place in cooking — everything in its place before you start. We created and tested DNS records in Cloudflare, prepared SSL certificates, and set up monitoring for the new domains. Every pull request was ready to go, just waiting to be merged during the maintenance window.
- During Migration
The maintenance window itself felt like a carefully choreographed dance. Enable maintenance mode, update primary DNS records, deploy code changes, update redirect rules, run tests, disable maintenance mode. Each step had its own checklist, and we moved through them methodically.
- Post-migration
The work didn't end when we disabled maintenance mode. We spent the next few hours (and days) monitoring everything closely. Error rates, performance metrics, user reports — everything got extra scrutiny. We had a rollback plan ready, just in case, but fortunately never needed it.
Lessons Learned
Like any complex technical project, this migration taught us several valuable lessons. Some we learned the hard way (hello, 11 PM redirect loop debugging), and others reaffirmed best practices we thought we could skip. Here are the key takeaways that we'll carry forward to future migrations:
- Read the Docs (No, Really)
There's a special kind of frustration that comes from hitting a problem at 11 PM, only to find the solution was clearly documented if you'd just read that one extra paragraph in the Cloudflare docs. Sometimes you don't know what documentation you need until you hit a problem, but spending more time with the docs before starting would have helped us avoid some debugging.
- Test Everything, Then Test Again
We created a detailed testing checklist covering every subdomain and integration. This caught several issues before they could impact users. But testing isn't just about finding problems — it's about building confidence. Every successful test meant one less worry during the actual migration.
- Keep It Organized
The complexity wasn't in the technical work — it was in managing all the moving pieces. Our central checklist and domain audit spreadsheet were invaluable. They became our single source of truth, preventing the "Wait, did we update that already?" moments that can plague complex migrations.
- Plan for the Unexpected
We scheduled a 2-hour maintenance window, knowing that we could always roll back to .com
if things went sideways. No one will complain if we finish early, but they will if we finish late. While we discussed extending it to 3-4 hours to be safe, we decided having a solid rollback strategy was a better approach than a longer window.
The Takeaway
In technology, we often say "it's not rocket science" about things that are nevertheless complex and require careful attention. Domain migration falls squarely into this category. It's not difficult in the way that solving differential equations is difficult, but it's complex in the way that conducting an orchestra is complex. Success comes from preparation, coordination, and paying attention to all the little details that make the whole thing work together.
The next time you're facing a domain migration, remember:
- Audit everything
- Document extensively
- Test comprehensively
- Plan for failure
- Keep it organized
And yes, stock up on coffee. Just in case.
Need help with your domain migration? Let's talk about how we can help make your transition smooth and stress-free.
Contact Us