
MigrateMate moves a WordPress site, or any part of one, to another WordPress site. You pick what to move, click once, and it arrives on the other side complete: images downloaded and re-attached, post IDs remapped, internal links rewritten to the new domain, and every relationship intact.
Because both ends are WordPress, there is no field mapping to configure. ACF repeaters, WooCommerce variations, taxonomy hierarchies, navigation menus and SEO meta all map themselves.
Full Site Migration
One bundle carries the whole site:
- Every post of the selected type(s) — pages, posts, products, and any custom post type
- All media referenced by that content, deduplicated across the bundle
- Navigation menus, with items re-linked on the destination
- The complete taxonomy and term tree, including terms not currently in use
- ACF Options Page fields (site-wide and global data)
- Site settings: title, tagline, front page and posts page, permalink structure, reading, discussion, media and date settings
- Widgets: every widget instance and its sidebar placement
Each of those is a separate opt-in checkbox at import time, so you can take the content and leave the settings, or vice versa.
Bulk bundle export
- Export any number of posts into one ZIP — 10 or 10,000
- “Export ALL as Bundle” — an entire post type in one click
- Staged processing with live progress: a few items per request, so no request ever runs long enough to time out
- Media deduplicated across the whole bundle — a shared image is stored once
Bulk bundle import
- Upload a bundle ZIP and see every item listed, with a conflict check, before anything is written
- Three import modes: override existing (update in place, matched by slug or SKU), skip existing, or always create new
- One item per request — no timeouts on large imports
- Per-item live results: imported, updated, skipped or failed, each with a link to the result
Direct site-to-site migration
- No ZIP needed — content moves server to server over an authenticated REST endpoint
- Bulk queue with per-item retry
- Conflict preflight before anything is written
CSV export and import & Cross-Platform Migration
- Migrate blog content from any CMS or platform: Import CSV exports directly from Shopify, Wix, Squarespace, Ghost, Medium, Webflow, Blogger, or custom CMS platforms straight into WordPress posts or CPTs.
- Auto-Header Matching: Automatically detects platform headers (
Handle,Body,HTML,Cover Image,Tags,Categories,Author,Date, etc.) and maps them to WordPress fields. - Featured Image Auto-Sideloading: Featured Image URLs in CSVs are automatically downloaded, saved to the Media Library, and attached to imported posts.
- Spreadsheet-style bulk editing: Export posts, pages, or custom post types to CSV for quick bulk updates in Excel or Google Sheets.
- Column picker & suggested mapping: Select standard fields, taxonomies, ACF fields, or any plugin meta, with suggested mapping on import.
- Correct CSV escaping throughout, and formula-injection protection on export.
What travels with every post
- Full content, excerpt, status, hierarchy (parent resolved by slug), menu order, publish date and author
- Every image: content images, galleries, featured image, srcset variants, Gutenberg block IDs
- ACF: field groups and values — repeaters, flexible content, galleries, relationships
- WooCommerce: pricing, stock, attributes, variations, product gallery, SKU matching
- All taxonomies, with parent and child hierarchy preserved
- SEO meta: Yoast, Rank Math, SEOPress and AIOSEO, including OG and Twitter image remapping
- The page-template assignment
- Automatic old-URL to new-URL replacement in content and in every meta value
What MigrateMate deliberately does not do
Being explicit about the boundaries, because they are design decisions rather than gaps:
- It does not write files into your theme or plugins. Page-template assignments migrate; template files do not. A template file is executable PHP owned by your theme, and anything a plugin writes into a theme folder is lost on the next theme update. If the destination theme lacks a template, the import still succeeds and the report names the file to add.
- It does not change your active theme, or install themes or plugins. A theme difference between the two sites is reported, never forced.
- It does not copy credentials. API keys, licence keys, SMTP passwords and payment gateway secrets are excluded from every export, so they never end up inside a bundle ZIP.
- It does not touch your site address or admin email, which would take the destination site offline or lock you out.
- It is not a backup tool. It does not copy the database wholesale or move the WordPress installation itself.
Built to your host’s limits, not around them
MigrateMate never changes your server’s PHP configuration. It does not raise memory_limit, does not extend max_execution_time, and does not alter output compression. Instead every long operation is split into small batches driven one request at a time, so a site with modest PHP limits can still migrate tens of thousands of items.
Where MigrateMate stores files
Temporary bundles and CSV files are written to a single folder inside your uploads directory, resolved at runtime with wp_upload_dir() — never a hard-coded path, and never inside wp-content, the plugin folder, a theme, or WordPress core. The folder denies direct HTTP access, downloads are served through an authenticated and nonce-checked endpoint, and files are deleted once delivered. Deleting the plugin removes the folder and every option it created.
WP-CLI
wp migratemate export --all [--type=product] [--output=/tmp/site.zip]wp migratemate export --ids=12,15,88wp migratemate import bundle.zip [--mode=new|override|skip] [--menus] [--no-sideload]
Safety
- Nothing is overwritten without an explicit opt-in
- Migration reports log every image, field and mapping for every run
- API key authentication using
hash_equals(), and header-only auth so a key cannot leak through access logs - SSRF protection on every outbound request: a destination host that resolves to a private or reserved address is refused
- Uploaded bundles are validated entry by entry against the expected layout — an archive containing a PHP file, a traversal path, or an unexpected folder is rejected rather than extracted
- Meta blocklist prevents sensitive capability keys from being imported
Screenshots

Bulk Export Dashboard — filter posts, pages, custom post types, WooCommerce products & ACF fields with one-click ZIP bundle export.

Bundle Import & Conflict Preflight — item preview with pre-import conflict checking, slug matching, and three configurable import modes (Override, Skip, Create New).

CSV Import/Export & Cross-Platform Migration — auto-header matching for Shopify, Wix, Squarespace, Ghost, Medium, Webflow, Blogger, and custom CMS.