Frequently Asked Questions
Common questions and errors before and during a migration. Can’t find your answer? Contact us.
Connection & credentials
“Test connection” fails with “Not Found”
Your site’s REST API isn’t reachable at the pretty URL WPMove uses (/wp-json/...). This usually means the site’s permalink rewrite rules aren’t active — common right after installing a new plugin, changing themes, or on a fresh install. Fix: go to Settings → Permalinks on that site and click Save Changes (even without changing anything). This regenerates the rewrite rules. Retest the connection afterwards.
“The target user does not have sufficient permissions”
The target site’s user needs both upload_files and edit_posts capabilities — in practice, a role of Author, Editor, or Administrator. A Subscriber or Contributor account won’t work. Create or use an account with at least the Author role and generate its Application Password from there.
Application Password looks correct but the connection still fails
A few things to check: the Application Password must be generated from Users → Profile → Application Passwords on the site itself (not typed manually) — spaces in the generated password are cosmetic and safe to keep or remove. If the site is protected by an extra layer (HTTP Basic Auth / “Directory Privacy” on some hosts, a firewall rule, or a security plugin blocking REST API or XML-RPC-style requests), WPMove’s connection will be rejected before WordPress even sees it. Temporarily allow REST API access for WPMove, or exempt the /wp-json/ path from that protection.
SSL / certificate errors
Both the source and target sites must be reachable over HTTPS with a valid, trusted certificate. A local development site with a self-signed certificate (e.g. .devel, .local, .test domains) will fail — WPMove doesn’t disable certificate verification for security reasons. Use a staging domain with a real certificate (Let’s Encrypt is fine) instead.
“The request was blocked by a security firewall”
Some hosts place a firewall in front of WordPress that blocks repeated automated requests before WordPress ever sees them. Your credentials are not the problem — the site never received the request. Ask your host to allow requests coming from the other site, or wait a few minutes and try again. If it keeps happening, migrating in smaller batches (fewer posts per run) usually stays under the threshold.
Migration behavior
Custom post types (CPT) don’t appear in “Post types to migrate”
The list is fetched live from your source site once its credentials are saved and “Test connection” succeeds. If a CPT is missing: make sure it’s registered as public and show_in_rest on the source (WPMove can only see and migrate post types exposed through the REST API), and make sure you clicked “Test connection” at least once after saving working source credentials.
Media isn’t migrating even though “Import media” is checked
On the Free plan, media is never migrated regardless of that checkbox — it’s a plan limitation, not a bug. Media migration is available on Starter, Pro and Unlimited plans, each with its own yearly media quota (see the Pricing page).
“Please wait N days before your next migration”
This is the Free plan’s cooldown between migrations. Paid plans (Starter, Pro, Unlimited) have no cooldown and allow unlimited migrations.
A migration seems stuck — no progress for a while
WPMove monitors migrations in the background; if one stops reporting progress for more than ~15 minutes, you’ll automatically receive an email about it (at most one per hour). From the Migrate page, use Restart to resume from where it left off, or Reset to clear it and start over. Migrations run via a queue, so brief pauses of a few minutes between pages are normal and not a sign of being stuck.
Elementor layouts, ACF fields or SEO metadata are missing after migration
WordPress’ REST API only carries the custom fields a plugin has explicitly opened to it — most plugins do not. Elementor layouts, ACF fields and some SEO metadata are therefore left behind, and nothing warns you. To carry them, install the free WPMove Migration Connector on both sites — the one you migrate from and the one you migrate to — then run the migration again. WPMove will transfer every custom field, including the images an ACF field points to. The plugin is free, needs no account, and only answers requests authenticated with the application password you already use here.
Media re-imported with a -1 suffix on the filename
This happens when “Skip already imported media” is unchecked (replace mode) and a file with the same name already exists on the target — WordPress adds a numeric suffix rather than overwrite by default. WPMove’s replace mode deletes the existing file first specifically to avoid this; if you still see suffixed files, they were likely uploaded outside of WPMove (e.g. manually) before the migration ran.
Sync mode migrated everything — or migrated nothing
Sync mode carries only what changed since your last successful migration between the same two sites, so a run that finds nothing to do is usually correct — nothing changed. It deliberately falls back to a full migration in four cases, and the migration log always states which one applies: there is no previous successful migration towards this target; the previous run stopped at your plan’s post limit, so older content is still waiting; you added a content type the previous run did not cover, whose existing content is older than the sync point and would otherwise be skipped for ever; or your earlier migrations predate sync mode and never recorded which content types they covered, so the first sync run cannot tell what a partial one would leave behind. That last case is the one most people meet: one full migration records the scope, and every sync after it is incremental. One limit worth knowing: content deleted on the source is never removed from the target. Sync mode adds and updates — it is not a mirror.
Comments are missing after a migration — or arrived awaiting moderation
Comments only travel when “Import comments” is ticked; it is off by default. When it is on, comments awaiting moderation come across too — and stay awaiting moderation, so nothing appears on your site without your say-so. Spam and trash are deliberately left behind: migrating is a good moment to be rid of them. Threads are rebuilt, with one exception worth knowing — a reply whose parent was not migrated is attached at top level rather than pointed at the wrong comment, and the log says so. Commenters always arrive as guests, identified by name and email: an account id from one site means nothing on another. Re-running a migration never duplicates comments already on the destination.