Title: Marathon Migration
Author: marathonhosting
Published: <strong>May 24, 2026</strong>
Last modified: May 24, 2026

---

Search plugins

![](https://ps.w.org/marathon-migration/assets/banner-772x250.png?rev=3546642)

![](https://ps.w.org/marathon-migration/assets/icon-256x256.png?rev=3546642)

# Marathon Migration

 By [marathonhosting](https://profiles.wordpress.org/marathonhosting/)

[Download](https://downloads.wordpress.org/plugin/marathon-migration.3.0.0.zip)

 * [Details](https://wordpress.org/plugins/marathon-migration/#description)
 * [Reviews](https://wordpress.org/plugins/marathon-migration/#reviews)
 *  [Installation](https://wordpress.org/plugins/marathon-migration/#installation)
 * [Development](https://wordpress.org/plugins/marathon-migration/#developers)

 [Support](https://wordpress.org/support/plugin/marathon-migration/)

## Description

Marathon Migration is the official migration plugin for [Marathon Hosting](https://marathonhosting.com).
Once installed, it exposes a small authenticated transfer endpoint on your current
WordPress site that the receiving Marathon server uses to pull your files and database
directly — no shell access, no packaging, no on-disk archives.

**How it works:**

 1. Generate a migration token from your Marathon Hosting client portal
 2. Install and activate this plugin on your current WordPress site
 3. Go to **Marathon Migration** in your WordPress admin and paste the token
 4. Click **Start Migration** — the plugin handles the rest

When you start a migration the plugin (1) validates your token with the Marathon
Hosting Gateway, (2) generates a one-time signing secret unique to this migration,
and (3) tells the Gateway the URL of your site and that signing secret. The receiving
Marathon server then connects to your site and pulls many files and database rows
per request over a single high-throughput streaming endpoint — exactly the same 
architectural pattern used by other well-known migration plugins. URLs are automatically
rewritten on the destination, file permissions are set, and the Marathon Hosting
plugin is deployed — all without you lifting a finger.

**What gets transferred:**

 * Your complete database
 * All WordPress core files (exact version — no forced upgrades)
 * All themes, plugins, uploads, and media
 * Must-use plugins (mu-plugins)

**What gets left behind:**

 * Server-specific configuration (`wp-config.php`, `.htaccess` — the receiving server
   provides its own)
 * Dropin replacements (`wp-content/object-cache.php`, `wp-content/advanced-cache.
   php`, `wp-content/db.php` — Marathon Hosting provides its own)
 * Cache plugin output directories (`wp-content/cache/`, `wp-content/uploads/cache/`,
   W3 Total Cache config, WP Rocket config)
 * Host-specific platform code (WP Engine’s `wpe-common` mu-plugins, Kinsta’s `kinsta-
   mu-plugins`, Cloudways and SiteGround migrator helpers — these are part of the
   source host, not your site)
 * Log files (`debug.log`, WooCommerce `wc-logs`, `error_log`, `php_errorlog`, anything
   ending in `.log` under uploads)
 * Backup archives from other backup plugins
 * OS and developer junk (`.DS_Store`, `Thumbs.db`, `__MACOSX/`, `.git/`, `.svn/`,`.
   hg/`, `node_modules/`)
 * The migration plugin itself (automatically removed after transfer)

**Security:**

 * All transfers use a one-time token tied to your specific Marathon Hosting account
 * Every request from the Marathon server is signed with a per-migration HMAC-SHA256
   secret that lives only in memory on the receiving server and the `marathon_migration_auth_secret`
   WordPress option on yours
 * The plugin’s transfer endpoint rejects any request without a current, correctly-
   signed signature — the signing secret is wiped from your database the moment 
   the migration completes or fails
 * Multisite installs are detected and refused before any data is transferred (multisite
   migrations are not yet supported)

### External services

This plugin connects to the Marathon Hosting Gateway (the “Service”), operated by
Marathon Hosting, to coordinate site migrations into Marathon Hosting. The Service
is required for the plugin to function — without it the plugin cannot validate a
token, register itself for pull-based transfer, or report progress back to your 
dashboard.

The plugin contacts the Gateway only after you paste a migration token and start
a migration. The base URL of the Gateway is supplied by Marathon Hosting at validation
time and stored in the WordPress option `marathon_migration_gateway_url`.

The following requests are sent to the Gateway:

 1. Token validation — when you paste a token and start a migration, the plugin sends
    the token and the public URL of your current WordPress site (`get_site_url()`) 
    to the Gateway so it can verify the token belongs to your account and learn where
    to pull from.
 2. Ready notification — once the plugin has generated its per-migration signing secret,
    it sends the token, the URL of your WordPress site, the signing secret, and your
    current WordPress and PHP versions to the Gateway so the receiving Marathon server
    can begin pulling.
 3. Status polling — while the migration is in progress, the plugin periodically requests
    the migration status from the Gateway using the token (in the URL).

Once the Gateway has the signing secret, it hands it to the receiving Marathon server.
That Marathon server then connects directly to your site (`<your-site>/?marathon_migration
=1`) and pulls your files and database live over a signed streaming endpoint. **
No database contents, file contents, or database credentials are sent to the Gateway
itself.**

This service is provided by Marathon Hosting:

 * Terms of Service: https://marathonhosting.com/tos.html
 * Privacy Policy: https://marathonhosting.com/pp.html

## Installation

 1. Log in to your Marathon Hosting account and generate a migration token from the
    site’s overview page
 2. In your current WordPress admin, go to **Plugins  Add New  Upload Plugin** and 
    upload `marathon-migration.zip`
 3. Activate the plugin
 4. Go to **Marathon Migration** in the left-hand admin menu
 5. Paste your migration token and click **Start Migration**
 6. Wait for the migration to complete — this typically takes 2–10 minutes depending
    on site size
 7. Once complete, deactivate and delete this plugin from your original site

## FAQ

### Do I need FTP or cPanel access?

No. Everything happens through the WordPress admin. No FTP, no cPanel, no manual
database exports needed.

### Will my WordPress version be upgraded?

No. The migration transfers your exact WordPress core files as-is, so the version
on Marathon Hosting will match your current site. You can upgrade on your own schedule
after going live.

### Will my site go down during the migration?

Your current site stays online throughout the entire process — the plugin only reads
your data, it never modifies anything. Your new Marathon Hosting site will show 
a brief maintenance screen while the import is finalizing (usually under a minute).

### What if my site is large?

The plugin handles large sites. Because the Marathon server pulls data live in batches
instead of downloading one giant archive, very large sites are not just supported,
they are easier to migrate reliably — if a batch fails it is retried in place, and
an interrupted migration can be resumed from where it stopped instead of restarting
from zero.

### Does it support WordPress multisite?

Not yet. If the plugin is activated on a multisite install the receiving Marathon
server will refuse to start the migration with a clear error rather than transferring
a partial network. Please contact Marathon Hosting support if you need to migrate
a multisite install.

### Is my database password exposed?

No. Database credentials are used only by the plugin to read tables when the Marathon
server requests them. They are never transmitted off your server.

### What about must-use plugins (mu-plugins)?

Must-use plugins are included in the transfer. If you use security or performance
mu-plugins such as Patchstack they will be carried over and remain active on Marathon
Hosting.

### What happens to the plugin’s signing secret after transfer?

The per-migration signing secret is removed from your WordPress options as soon 
as the migration completes or fails. After that the plugin’s REST endpoints reject
every request, even with a valid token, until you start a new migration.

### Can I cancel a migration in progress?

Yes. Click **Cancel Migration** on the migration page. The signing secret is immediately
removed from your site and the receiving Marathon server stops pulling data.

### Do I need to keep the browser tab open?

No. Because all transfers happen between your server and the Marathon server directly,
you can close the tab once the status shows “Waiting for Marathon server to start
import”. The plugin will resume polling for status when you come back.

### What WordPress and PHP versions are supported?

WordPress 6.2 or later, PHP 7.4 or later.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Marathon Migration” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ marathonhosting ](https://profiles.wordpress.org/marathonhosting/)

[Translate “Marathon Migration” into your language.](https://translate.wordpress.org/projects/wp-plugins/marathon-migration)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/marathon-migration/),
check out the [SVN repository](https://plugins.svn.wordpress.org/marathon-migration/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/marathon-migration/)
by [RSS](https://plugins.trac.wordpress.org/log/marathon-migration/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 3.0.0

 * Initial public release.

## Meta

 *  Version **3.0.0**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **6.9.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [clone](https://wordpress.org/plugins/tags/clone/)[Hosting](https://wordpress.org/plugins/tags/hosting/)
   [import](https://wordpress.org/plugins/tags/import/)[migration](https://wordpress.org/plugins/tags/migration/)
   [transfer](https://wordpress.org/plugins/tags/transfer/)
 *  [Advanced View](https://wordpress.org/plugins/marathon-migration/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/marathon-migration/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/marathon-migration/reviews/)

## Contributors

 *   [ marathonhosting ](https://profiles.wordpress.org/marathonhosting/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/marathon-migration/)