WP Smooth Moves
Atomic WordPress site cloning plugin. Single-archive export, perfect-clone import. Oxygen Builder base64 deep replace. Free, GPLv2.
by Lincoln Tracy · github.com/ltracy86/wp-smooth-moves · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/ltracy86/wp-smooth-moves/releases/download/v0.0.27/wp-smooth-moves-v0.0.27.zipReadme
WP Smooth Moves
Atomic WordPress site cloning. Export any WP site as a single .wpsm.zip and import on a blank install for a perfect, working clone. No manual file copying. No missing plugins. No broken links. No "now go fix the URLs" step.
WP Smooth Moves is a one-file site cloning plugin built around a simple principle: carry everything, replace URLs, done. Source-site CSS caches, font files, plugin files, even Oxygen Builder's base64-encoded layout data are all carried verbatim, then a URL replacement pass walks every text and blob column in every prefixed table (plus on-disk CSS files) to swap source URLs for destination URLs. Serialization-aware, so nested arrays and JSON blobs survive intact.
Why this exists
Every site migration tool I have used demands ten manual fix-up steps after the import "finishes" - copy missing plugin files by hand, re-run search-replace because the first one missed half the URLs, regenerate the CSS cache, deactivate the plugin that started fataling, fix the .htaccess. WPSM carries everything, rewrites everything, and verifies everything. The move should be smooth.
It started as an Oxygen Builder migration tool. Oxygen stores layout data as base64-encoded JSON inside postmeta - which means every other migration plugin's URL replace pass misses ~70% of the URLs your pages actually use. WPSM decodes the base64, replaces inside the decoded content, and re-encodes. The same approach extends to _ct_builder_shortcodes, _ct_builder_json, ct_style_sheets, and ct_components_classes.
Features
- One-archive export. A
.wpsm.zipcontainsdatabase.sql, amanifest.json, and the entirewp-content/tree. Drop it on any blank WP install and import. .wpsm.zipand.wpressimport. Existing AIOWM (All-in-One WP Migration).wpressarchives import directly via the binary header parser. No separate extraction step.- Three upload paths. Browser upload (8 MB chunks, 3 in parallel, retry + ETA), Remote URL (server downloads from a Google Drive share link or direct URL at server bandwidth), and resumable upload across browser reloads via localStorage.
- Background-import mode. Tick the checkbox and the import keeps running on the server via WP-Cron after the upload finishes. Close the tab, come back later, status panel resumes.
- Preserve existing data. Keeps WooCommerce orders, FunnelKit contacts + send history + view counts, Gravity Forms entries, EDD records, MemberPress, LearnDash progress, and 60+ other user-data tables on the destination while everything else gets cloned from the source. For staging-to-live with active transactions.
- Pre-import SQL backup of the destination DB, with a one-click rollback path if the import surfaces issues.
- URL replacement across every WP-prefixed table, every text/char/blob/json column. Includes Oxygen Builder base64 deep replace. Bare-domain variant catches subdomain references (
courses.OLDHOST -> courses.NEWHOST) that protocol-anchored variants miss. - Plugin file restoration when the archive came from a host that drops plugin files (Cloudways is a known offender for Oxygen 4 and Oxygen 6).
- Manage Exports panel with size + mtime, download/delete buttons, total-size summary, and a 24h cron to sweep stale exports.
- Integrity report at the end of every import: source URL replaced everywhere, table row counts vs manifest, theme verification, missing-plugin detection, residual-URL probe, root-relative path warnings for subdir installs.
- Production-grade defenses. mysqli with
multi_querybatching for the SQL phase (50 stmts / 4 MB per batch), defensivedisplay_errors=Offon the SQL handler, foreign keys disabled during import then re-enabled,max_allowed_packetbumped to 256 MB per session, admin auth preserved across the SQL chunk that overwriteswp_users.
Install
- Download the latest
wp-smooth-moves-v*.zipfrom the Releases page. - WordPress admin -> Plugins -> Add New -> Upload Plugin -> pick the zip -> Install Now -> Activate.
- Find the plugin at Tools -> Smooth Moves in the admin sidebar.
Use
Clone a live site locally:
- Install WPSM on the live site. Export tab -> Export Site. Download the
.wpsm.zip. - Create a blank local WP install with WPSM active. Import tab -> upload the zip -> Clone Site.
- Done. Perfect local clone with all URLs rewritten.
Push staging to production:
- Export from staging.
- Import on production with Preserve existing data checked (keeps orders, contacts, etc.).
- URLs rewrite to the production domain automatically.
Recommended before first import: the destination site is overwritten in place. Take a backup outside the plugin first if the destination has anything you cannot recreate. WPSM also makes its own pre-import backup, but a second copy is sound practice.
Why not on the WordPress.org plugin directory?
WPSM is not distributed via WordPress.org. Two reasons:
- The wp.org plugin guidelines forbid "WP" in plugin names and slugs, which would force a full rename across the GitHub repo, every URL, and every reference.
- The wp.org Plugin Check tooling flags WPSM's filesystem operations (it expects
WP_Filesystem, which prompts for FTP credentials on misconfigured hosts and would break unattended imports) and itsmysqli multi_querybatching (which is what gives the SQL phase its 20-40% speedup over per-statement$wpdb->query()). Refactoring these would weaken the migration tool that they are the whole point of.
Self-hosted distribution preserves the architecture that makes WPSM useful. Updates ship as new GitHub Releases - check this page when you want the latest.
License
GPLv2 or later. See LICENSE.
Like the plugin?
It is free and always will be. If it saved you time on a migration, buy me a coffee. Never required, always appreciated.
Author
Built by Lincoln Tracy at Tracy Digital Media.
Read the full README on GitHub →
Releases
| Tag | Published | Asset | Downloads |
|---|---|---|---|
| v0.0.27 | Jun 1, 2026 | wp-smooth-moves-v0.0.27.zip | 0 |