Website migrations fail less often when they are treated as controlled infrastructure changes rather than one-click moves. This checklist is designed for site owners, developers, and IT admins who need to move hosting, databases, files, and object storage with minimal downtime and minimal guesswork. Use it before a planned migration, during change review, and again when your hosting stack, DNS process, traffic profile, or recovery requirements change.
Overview
If you are moving a website between cloud hosting providers, from shared hosting to managed VPS hosting, from one database server to another, or from local file storage to object storage for websites, the hard part is rarely copying data. The hard part is preserving application behavior while DNS, sessions, caches, database writes, background jobs, and file paths change underneath it.
A reliable website migration checklist should help you answer five questions before you touch production:
- What exactly is moving: web server, database, storage, DNS, CDN, email, background jobs, or all of them?
- What can tolerate a short maintenance window, and what must remain available?
- What data changes during the move, and how will you prevent split-brain writes?
- How will you validate success before traffic is cut over?
- How will you roll back if performance, data integrity, or routing fails?
For most teams, minimal downtime comes from reducing unknowns rather than rushing the cutover. That means documenting the current environment, testing migration steps on a staging target, lowering avoidable DNS risk, freezing nonessential changes, and defining a rollback path before the move begins.
At a high level, most hosting migration projects follow this sequence:
- Inventory the current stack and dependencies.
- Prepare the target environment to match or intentionally improve the source.
- Migrate code, files, databases, and secrets.
- Test the site on the target before public cutover.
- Reduce write activity or enter maintenance mode if needed.
- Perform final data sync.
- Switch traffic using DNS, load balancer, reverse proxy, or CDN origin change.
- Monitor errors, performance, storage, and background jobs.
- Keep rollback available until confidence is high.
- Decommission the old environment only after backups and validation are complete.
This article is organized as a reusable hosting migration guide. It is meant to stay useful even as tooling changes, because the underlying risks stay fairly consistent across cloud hosting platforms.
Checklist by scenario
Use the core checklist first, then apply the scenario-specific checks that match your environment.
Core checklist for any website migration
- Define scope. List every system involved: web app, database, file storage, object storage buckets, cron jobs, queues, CDN, DNS, TLS certificates, firewall rules, monitoring, and third-party integrations.
- Record the current state. Capture software versions, environment variables, runtime settings, PHP or Node versions, database engine and version, storage mounts, cache layer, and scheduled tasks.
- Map dependencies. Identify SMTP providers, payment gateways, API allowlists, webhook endpoints, origin IP restrictions, and identity providers.
- Set migration success criteria. Decide what counts as success: no data loss, acceptable response time, valid TLS, successful checkout flow, healthy background jobs, and no increase in application errors.
- Create backups you can restore. Take fresh backups of databases, files, and configuration. Verify at least one restore path instead of assuming the backup is usable. If you rely on snapshots, review retention and cost behavior ahead of time; our Cloud Snapshot Pricing Guide is useful background here.
- Prepare rollback. Write down the exact trigger for rollback, who can approve it, and how traffic will return to the old environment.
- Freeze changes. Pause deployments, schema changes, plugin installs, and infrastructure edits that are unrelated to the migration.
- Stage the target. Provision compute, storage, network, firewall, TLS, and observability on the target environment before moving production traffic.
- Test with production-like settings. Validate routing, redirects, uploads, sessions, login flows, API calls, and cache behavior in a staging or private preview environment.
- Plan the cutover window. Choose a time with low write traffic if possible, and notify internal stakeholders of expected risks and timing.
Scenario 1: Moving between traditional web hosting or managed VPS hosting
This is the most common business website hosting move: one VM, VPS, or hosting account to another. It is often straightforward, but small differences in runtime and web server config can create hard-to-trace issues.
- Match or intentionally update the web stack: web server, runtime version, extensions, modules, and process manager settings.
- Export virtual host or server block behavior, including redirects, headers, compression, and upload size limits.
- Check filesystem paths, ownership, permissions, and symlink behavior.
- Move TLS certificates or reissue them on the target before cutover.
- Confirm cron jobs, scheduled tasks, and worker processes are recreated exactly once.
- Verify IP-based allowlists and outbound firewall rules for APIs and email relays.
- Load-test key pages if the new environment uses different disk or CPU classes. For storage-bound apps, review how IOPS, throughput, and latency affect performance in our guide to cloud volume specs.
Scenario 2: Database migration checklist
Databases are where downtime risk usually concentrates, because data changes while users are active. Your migration method depends on how write-heavy the application is and whether temporary read-only mode is acceptable.
- Document engine version, collation, character set, extensions, stored procedures, triggers, and scheduled jobs.
- Check application connection strings, users, passwords, and TLS requirements.
- Measure data size and growth rate so you can estimate transfer time.
- Choose a migration pattern: backup and restore, replication-based switchover, logical export/import, or managed service import tools.
- Decide how final writes will be handled: maintenance mode, read-only mode, queued writes, or brief downtime.
- Validate indexes, constraints, auto-increment behavior, and timestamp handling after import.
- Test application queries against the new database before cutover.
- Watch for hidden dependencies such as reporting jobs, admin tools, or analytics connectors pointed at the old host.
- After cutover, monitor slow queries, lock behavior, replication status if applicable, and error rates.
If the database supports replication, many teams reduce downtime by syncing continuously to the target and performing a short final switchover. If it does not, a carefully announced maintenance window may be safer than a rushed live move.
Scenario 3: Website storage migration
Storage moves are often underestimated. A site may appear healthy while media uploads, backups, sessions, or generated assets still point to the old location.
- Identify every storage type in use: local block storage, shared file storage, network mounts, object storage, backup volumes, and temporary scratch disks.
- List what lives where: user uploads, logs, session files, cache, application releases, generated images, and backups.
- Confirm whether the application expects POSIX filesystem semantics or can use object storage directly.
- Preserve file permissions, timestamps, symbolic links, and case sensitivity where they matter.
- Update application paths, bucket names, access keys, and CDN origin settings.
- Check whether object storage URLs are public, signed, proxied through the app, or rewritten by the CDN.
- Run a sample validation across old and new storage: file count, total size, random file checks, and image or document opening tests.
If you are changing storage architecture during the move, not just providers, slow down and document the tradeoff. For example, block storage, file storage, and object storage behave differently in performance and shared access. See Block Storage vs File Storage and Best S3-Compatible Storage Providers for planning context.
Scenario 4: Moving to scalable cloud infrastructure behind a load balancer or CDN
When you move from a single host to more scalable cloud infrastructure, the application may need to stop assuming local state.
- Move sessions out of local disk if multiple app instances will serve requests.
- Store uploads in shared storage or object storage rather than instance-local paths.
- Confirm the application trusts proxy headers correctly for HTTPS, client IP, and host routing.
- Review health checks, readiness behavior, and autoscaling thresholds.
- Warm caches where practical to reduce the performance dip after cutover.
- Update CDN origins, caching rules, and purge strategy to avoid mixed old and new content.
- Verify that rate limiting, WAF rules, and DDoS controls still work after the origin change.
For sites where performance matters as much as uptime, storage class selection can change the result. NVMe-backed volumes may help some workloads, but not every app benefits equally. See NVMe Cloud Storage Explained for a practical way to think about that tradeoff.
Scenario 5: Kubernetes or container-based migration
Container moves often simplify deployment, but stateful parts still need careful handling.
- Separate stateless app deployment from stateful services such as databases, queues, and persistent volumes.
- Confirm image tags, secrets, config maps, ingress rules, service discovery, and resource limits.
- Plan persistent volume migration and storage class behavior.
- Test readiness and liveness probes to avoid false failures during rollout.
- Check job runners, workers, and scheduled tasks so they do not duplicate work after cutover.
- Validate ingress, TLS termination, and external DNS behavior.
If your target uses managed kubernetes hosting, storage design matters as much as compute. Related planning resources include Kubernetes Persistent Storage Guide, Stateful Kubernetes Workloads, and Managed Kubernetes Pricing Comparison.
What to double-check
These are the items that most often cause avoidable downtime or post-migration surprises.
- DNS and TTL assumptions. Lower TTL in advance where practical, but do not assume every resolver honors your timing exactly. Plan for overlap where some users still hit the old origin.
- Write consistency. If the old and new environments both accept writes, you can create drift. Make a deliberate choice about read-only mode, write freeze, or replication switchover.
- Hidden storage references. Search for hard-coded paths, old bucket URLs, and absolute media links in templates, database records, and environment variables.
- Email and transactional flows. Contact forms, password resets, order confirmations, and webhook callbacks are often missed in testing.
- Background processing. Queues, schedulers, cron jobs, image processors, and invoice generators may still run on the old host after traffic moves.
- TLS and redirect chains. Test HTTP to HTTPS behavior, www and non-www redirects, and reverse proxy header handling.
- Observability. Have logs, uptime checks, application error monitoring, and basic resource dashboards in place before cutover, not after.
- Backup retention after the move. Make sure the new environment is covered by your backup policy from day one. If your recovery posture is changing, review broader planning topics like multi-cloud backup strategy and cold vs archive storage.
A good practical test is to walk through the site like a user and like an operator. As a user, log in, submit a form, upload a file, complete a transaction, and receive an email. As an operator, rotate logs, trigger a backup, run a scheduled task, and inspect storage growth. Both perspectives matter.
Common mistakes
Most migration incidents come from ordinary oversights rather than exotic failures. These are the patterns worth watching for.
- Treating migration as a copy task instead of a systems change. Files moved successfully, but DNS, sessions, workers, or object storage settings did not.
- Skipping a rollback plan. Teams often know how to cut over but not how to reverse course cleanly.
- Testing only the homepage. Real failures often show up in checkout, admin panels, uploads, API endpoints, and scheduled jobs.
- Changing too much at once. Moving provider, upgrading runtime, changing database version, redesigning storage, and enabling a new CDN in one maintenance window makes root cause analysis much harder.
- Ignoring storage performance fit. A migration can succeed functionally while still slowing the application. Choose storage based on workload behavior, not product labels alone.
- Leaving the old host active without a clear policy. That can create hidden writes, stale jobs, or unnecessary costs.
- Forgetting stakeholder communication. Support, marketing, sales, and internal admins should know when a maintenance window or brief inconsistency is possible.
If you must make architectural improvements during the move, separate them into layers. First replicate the existing behavior on the new hosting platform. Then optimize performance, storage class, or deployment model once the baseline is stable.
When to revisit
This checklist is worth revisiting any time the assumptions behind your hosting change. Do not wait until the next urgent move.
Review and update your migration runbook:
- Before seasonal traffic peaks or planned maintenance windows.
- When you change hosting providers, managed VPS hosting plans, or cloud regions.
- When you add a CDN, load balancer, or new object storage backend.
- When the application becomes more write-heavy, adds background jobs, or introduces user uploads.
- When database size, storage footprint, or recovery requirements materially change.
- When your team changes deployment tooling, infrastructure as code, or observability workflows.
A practical action plan is simple:
- Keep a current inventory of compute, database, storage, DNS, CDN, and third-party dependencies.
- Maintain one tested backup and one documented rollback path.
- Store a reusable migration checklist in your runbook repository.
- Run a low-risk rehearsal on staging or a noncritical service after major workflow changes.
- After every migration, update the checklist with what actually caused friction.
The best website migration checklist is not the longest one. It is the one your team can follow under pressure, adapt to new hosting platforms, and trust when the goal is to move a website with minimal downtime.