Migrate a site to a new host: the wizard step by step
From choosing a backup to the final DNS change: every screen of the migration wizard, what it asks for, and what to expect in each of the six steps.
The migration wizard walks you through six steps: Backup → New host → Checks → Confirm → Migrate → DNS & finish. Only the first four need you at the keyboard; the copy runs in the background and the last step is a single DNS change. Read Before you start first if you have not yet.
Where to find the wizard
- Open the WP Safer dashboard and go to Sites.
- Open the site you want to move and switch to the Backups tab.
- Click Migrate to a new host. While a migration is open, the same button shows its state instead (for example "Migration · Waiting for DNS") and brings you back to the wizard.
If the wizard opens with a yellow "Migration is not available for this site right now" card, the reasons are listed under it: the plan is monthly or free, the site is not connected yet, or a restore is running. The card offers the annual plans and the concierge service as alternatives.
Step 1 — Backup
Choose which backup should be copied to the new host. The list shows your recent backups with their date, type (full or incremental) and size.
- Any backup works. An incremental backup is resolved to its full chain automatically; the "Archives to transfer" count on the confirmation page tells you how many archives that is.
- For the freshest copy click Take a full backup now. The backup runs in the background and can take a few minutes; keep the page open. When it lands, the wizard selects it and shows "Fresh full backup is ready and selected".
- A site with no backups yet shows "Take a full backup first; the wizard continues as soon as it lands".
Click Continue.
Step 2 — New host
Domain
- Same domain — the site keeps its address; at the end you point the domain's DNS at the new server.
- New domain — enter the New site address as
https://new-domain.com. Links and settings inside the site are rewritten to this address during the copy.
New host access (SFTP or FTPS)
- Protocol: SFTP (SSH, port 22) or FTPS (FTP over TLS, port 21). Plain FTP is refused.
- Server host or IP: the new server's own address, for example
203.0.113.10orserver12.newhost.com. Do not enter your domain name here — it still points at the old host. - Port, Username, Password: as given by the new host.
- Folder (web root of the new site): for example
public_html. Leave it empty to use the folder the login lands in.
Credentials are stored encrypted for at most 7 days and deleted as soon as the migration finishes or is cancelled.
Click Test connection & inspect. Two things happen in a row, usually within 10–30 seconds:
- Connecting to the new host, scanning the folder and uploading the helper script… — the wizard logs in, decides whether the folder is empty, holds WordPress, or holds something else (see the three scenarios), and uploads a small helper script named
wpsafer-migrate-….php. The helper is the part that later receives and unpacks your site; it deletes itself when the migration ends and expires after 48 hours in any case. - Inspecting the new host: PHP, disk space, database and the folder contents… — the helper is called over HTTP and reports the server's PHP version, extensions, free space and, in scenario A, the existing site's database.
If the connection test fails, the message tells you which part failed (login, folder, write permission, or the folder not being reachable over the web). Fix it and try again — the form keeps your entries except the password.
Step 3 — Checks
The pre-flight report lists everything the helper found, each line marked as passed, warning or failed:
- Target folder and Site in that folder — scenario and, for scenario A, the name and post count of the site that will be replaced.
- Write access, Free disk space, PHP on the new host, max_execution_time, PHP extensions.
- Table prefix, wp-config.php, Multisite, Same site?, WooCommerce, WP Safer agent on target.
Warnings (tight disk space, older PHP than the current site, a low execution time limit, a drop-in in wp-content) let you continue. Failed items block the migration: fix them on the new host and click Inspect again — the helper is already uploaded, so you do not re-enter credentials — or use Change host details to go back to step 2. Under every blocking problem the wizard also offers the concierge service.
Depending on the scenario, the step asks for one more thing:
A. WordPress is already installed — confirm the replacement
The card "This folder currently holds …" shows the existing site's name, address and number of posts, followed by "It will be COMPLETELY REPLACED. Type the site name to confirm." Type the name exactly as shown (its address is accepted too). Without it the migration cannot start. If the wizard could not read the existing site's wp-config.php, it also asks for that site's database details here.
B. Empty folder — database on the new host
Fill in DB host, DB name, DB user and DB password of the empty database you created on the new host, then click Test database. The test runs on the new server itself and, when it succeeds, shows "Database connection verified" with the table count and server version. This is required before you can continue. If the backup carries no manifest, a Table prefix field appears: enter your current site's prefix (usually wp_).
Click Continue.
Step 4 — Confirm
The summary shows the backup, From (current address), To (new address), the Target folder with its scenario ("Existing WordPress — replaced" or "Empty — fresh install") and the number of archives to transfer. Below it, four reminders of what will happen:
- The current site keeps running untouched; visitors notice nothing until you change DNS.
- The copy runs in the background and can take from minutes to a few hours depending on size.
- After the copy, ten pages are opened on the new server and compared with the current site.
- You then change one DNS A record; WP Safer detects the switch and completes the migration by itself.
If WooCommerce is active on the site, a notice explains that orders, customers and stock changes made after the selected backup are not carried over, and you must tick "I understand that orders and stock changes after the backup will not be migrated automatically".
Click Start migration (empty folder) or the red Replace and migrate (existing WordPress). The wizard answers "Migration queued. It starts within two minutes; you can leave this page and come back."
Step 5 — Migrate
The page now shows the migration's state and refreshes every few seconds. You can close it at any time; the Backups tab button brings you back.
- Queued — waiting for the background worker (at most two minutes).
- Migrating — the archives are downloaded by the helper on the new host, unpacked, the database is imported, addresses and paths are rewritten and, in scenario A, the previous files and tables are set aside for the 24-hour undo window. The current site is not touched.
- Migrated — checking — ten pages are opened on the new server and compared with the current site. The result appears as "10/10 pages opened on the new server".
When all checks pass, the helper finalizes the new site automatically — the WP Safer plugin on it receives its new key, the helper removes itself — and the state becomes Waiting for DNS with the note "Copied and verified — the last step is a DNS change". You also get an e-mail with the DNS record.
If some pages answered differently, the state stays at Migrated — checking and the card "The automatic check did not pass — your decision" appears. Look at the new host yourself (its IP is shown), then either Finalize anyway to continue to the DNS step, or Cancel migration: the new host is rolled back to its previous state within the undo window.
If the copy fails, the state becomes Failed with the reason, and "Nothing was changed on the current site" — see After the migration for retrying.
Step 6 — DNS & finish
The card "Last step: point your domain at the new server" shows the one record to change:
- Host — your domain (or the new domain).
- Type — A.
- Value — the new server's IP address.
Change it where your domain is managed: the registrar, Cloudflare, or the old host's DNS panel. Nothing else to click — WP Safer checks every few minutes whether the domain already reaches the new server and shows "Checked N× — last at …" under the card. When it does, the migration is completed automatically.
- Behind a CDN or proxy (Cloudflare proxied record, Sucuri, etc.)? Set its origin to the same IP. WP Safer detects the switch through the site itself, not the A record.
- New domain? Point the new domain at this IP. The old domain keeps working on the old host until you decide otherwise. The new site is added to your sites list right away, marked inactive until WP Safer reaches it with the new key.
Final sync — content changed since the backup?
While the migration waits for DNS, the current site keeps changing: new posts, comments, orders. Right before you change the DNS record, click Final sync. WP Safer takes a fresh full backup of the current site and updates the new host with it automatically; the page shows "Final sync requested…" and returns to the DNS card when done. The fresh backup must land within six hours and the stored credentials must still be valid (7 days from step 2); otherwise the request is dropped and you can simply switch DNS with the copy you have. For WooCommerce shops this step is strongly recommended.
Completed
Once the domain reaches the new server the state becomes Completed: "The domain now reaches the new server and WP Safer manages the site there." You get a confirmation e-mail, and a reminder after seven days that the old host can be closed. The old host was left untouched: verify the new site, take a backup there, then cancel the old hosting plan.