We just moved our site to a new domain, and while the process was a pain, it's done now and with no major issues. Here is how we did it -- and if I missed something, I hope you'll let me know!
1: Prepare for the Worst
Take a complete backup of your site. Make sure you have administrator access as well as the username and password to your hosting account, e-mail admin account and your content management system. Take screenshots of your site configuration pages -- on your CMS as well as your hosting provider. Check the customer support process and availability of your hosting provider.
2: Point New URL to Existing Site
We host both the sites on BlueHost, so we made the new URL the primary domain and made it point to the same content as the old site. So for a while, both URLs were pointing to the same content -- which meant no downtime for the site (yet) but all internal URLs were of the old domain.
3: Update URLs
After new URL was set to the existing site content, we used this plugin to update all URLs in the content to the new domain. It was quick and easy, but it requires you to access your site through FTP and it did cause a few issues.
4: Test Links and Widgets
By changing all URLs in the new site, we also accidentally changed URLs that shouldn't have been changed -- our email addresses, social media links, and so on. We searched and replaced those (as many as we could catch, anyway), and manually tested the widgets and social media plugins to make sure they worked okay.
5: Submit the URL to Google
Once we were (reasonably) confident the site was working okay, we notified Google about the URL change.
6: Redirect URLs
BlueHost makes it easy to redirect the main site URL to the new site. We had to get on a support call to get all pages redirected, but it got done in half an hour. (Whew.)
7: Update/Change Google Analytics Profile
You might also need to create a new profile on Google Analytics (or KissMetrics or whatever you use to track website stats) to make sure the new domain is being tracked.
8. Check Your Email
We changed our older domain to an add-on domain that redirects to the new domain. Our emails are based on the older domain, so while we made these changes, the email settings (called MX records) got deleted. We had to go the email service provider (Google Apps in our case) to check what those settings should be and then manually make those changes on Bluehost.
9: Update Links to Your Site
Of course, we couldn't update all links to our site, but we updated what we could: on our social media profiles (both business and personal), my profiles on sites I guest blog at, and so on.
10: Tell Your Customers
Once the changes were done, we let our customers and followers know, through announcements on our blog and on social media. We also waited on sending out our monthly newsletter until the change was done so that we could announce it.
Of course, we're not out of the woods yet: now to write some good guest posts and continue with all our marketing activities so our site slowly climbs back up the SEO tree! But we did it in a few days, with no help (neither my partner nor I are SEO or web design people) except from the BlueHost people, online forums, and tips from a couple of friends. And nothing's broken.
The best part: in the two weeks since our change, our site stats have been going upwards, not downwards!
Now tell me: what did we do wrong? How do you -- or would you -- manage a domain change?