{"id":292879,"date":"2026-03-30T21:16:49","date_gmt":"2026-03-30T21:16:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/hostney-migration\/"},"modified":"2026-08-26T05:55:17","modified_gmt":"2026-08-26T05:55:17","slug":"hostney-migration","status":"publish","type":"plugin","link":"https:\/\/sk.wordpress.org\/plugins\/hostney-migration\/","author":23470131,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Hostney Migration","header_author":"Hostney","header_description":"Migrate your WordPress site to Hostney hosting. Paste your migration token and the Hostney worker will pull your data automatically.","assets_banners_color":"","last_updated":"2026-08-26 05:55:17","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.hostney.com","rating":0,"author_block_rating":0,"active_installs":10,"downloads":432,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"hostney","date":"2026-03-30 21:15:17"},"1.0.1":{"tag":"1.0.1","author":"hostney","date":"2026-05-21 12:33:56"},"1.0.2":{"tag":"1.0.2","author":"hostney","date":"2026-08-24 23:14:43"},"1.0.3":{"tag":"1.0.3","author":"hostney","date":"2026-08-26 05:55:17"}},"upgrade_notice":{"1.0.3":"<p>Fixes migrations of larger sites failing with a &quot;Too many requests&quot; error partway through the database export. Recommended for all users.<\/p>","1.0.2":"<p>Confirmed compatible with WordPress 7.1.<\/p>","1.0.1":"<p>Confirmed compatible with WordPress 7.0.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[1456,87,4155,6060,10745],"plugin_category":[59],"plugin_contributors":[259052],"plugin_business_model":[],"class_list":["post-292879","plugin","type-plugin","status-publish","hentry","plugin_tags-hosting","plugin_tags-import","plugin_tags-migration","plugin_tags-move","plugin_tags-transfer","plugin_category-utilities-and-tools","plugin_contributors-hostney","plugin_committers-hostney"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/hostney-migration.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Hostney Migration connects your WordPress site to the Hostney hosting platform so the Hostney worker can pull your database and files automatically. No SSH access, FTP credentials, or manual exports required. Your source site stays fully operational throughout the process.<\/p>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<ol>\n<li>Generate a migration token in your <a href=\"https:\/\/www.hostney.com\">Hostney control panel<\/a><\/li>\n<li>Install this plugin on your source WordPress site<\/li>\n<li>Go to Tools &gt; Hostney Migration and paste the token<\/li>\n<li>Click \"Start migration\" in the Hostney control panel<\/li>\n<li>The worker pulls your database and files automatically<\/li>\n<\/ol>\n\n<p><strong>What gets migrated:<\/strong><\/p>\n\n<ul>\n<li>All database tables (exported row-by-row with primary key pagination)<\/li>\n<li>All WordPress files (transferred in chunks with checksum verification)<\/li>\n<li>File permissions and directory structure<\/li>\n<\/ul>\n\n<p><strong>What gets excluded automatically:<\/strong><\/p>\n\n<ul>\n<li>Cache directories<\/li>\n<li>Log files<\/li>\n<li>Backup plugin directories (UpdraftPlus, All-in-One WP Migration, etc.)<\/li>\n<li>Node modules and .git directories<\/li>\n<\/ul>\n\n<p><strong>Security:<\/strong><\/p>\n\n<p>All requests from the Hostney worker are authenticated using HMAC-SHA256 signatures with timestamp validation and replay protection. Tokens are cleared automatically when the plugin is deactivated.<\/p>\n\n<h3>Privacy Policy<\/h3>\n\n<p>This plugin sends the following data to Hostney servers (api.hostney.com) when you click Connect:<\/p>\n\n<ul>\n<li>Your site URL and REST API URL<\/li>\n<li>WordPress version<\/li>\n<li>PHP version<\/li>\n<li>Number of database tables and total database size<\/li>\n<li>Number of files and total file size<\/li>\n<li>Active theme name and active plugin count<\/li>\n<\/ul>\n\n<p>This data is used solely to register and plan the migration. No file contents, database rows, passwords, or personal data are transmitted during the connection step.<\/p>\n\n<p>During an active migration (initiated from the Hostney control panel), the Hostney worker connects to your site's REST API endpoints to read database tables and files. All requests are authenticated with HMAC-SHA256 signatures. Data is transferred over HTTPS.<\/p>\n\n<p>For more information, see the <a href=\"https:\/\/www.hostney.com\/documents\/privacy-policy\">Hostney Privacy Policy<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In your WordPress admin go to Plugins &gt; Add New &gt; Upload Plugin<\/li>\n<li>Upload the ZIP file and activate the plugin<\/li>\n<li>Go to Tools &gt; Hostney Migration<\/li>\n<li>Paste your migration token from the Hostney control panel and click Connect<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20ssh%20or%20ftp%20access%20on%20my%20current%20host%3F\"><h3>Do I need SSH or FTP access on my current host?<\/h3><\/dt>\n<dd><p>No. The plugin exposes authenticated REST API endpoints that the Hostney worker calls over HTTPS. No server-level access is needed on the source site.<\/p><\/dd>\n<dt id=\"will%20my%20site%20go%20down%20during%20migration%3F\"><h3>Will my site go down during migration?<\/h3><\/dt>\n<dd><p>No. The plugin only reads data \u2014 it does not modify anything on your source site. Your site continues to operate normally throughout the migration.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20to%20hostney%20when%20i%20connect%3F\"><h3>What data is sent to Hostney when I connect?<\/h3><\/dt>\n<dd><p>When you click Connect, the plugin sends your site URL, WordPress version, PHP version, and database\/file size estimates to Hostney servers to register the migration. No file contents or database data are sent during this step. The actual data transfer only happens when you start the migration from the Hostney control panel, and it flows through authenticated REST API endpoints.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20with%20multisite%3F\"><h3>Does this plugin work with multisite?<\/h3><\/dt>\n<dd><p>No. WordPress multisite installations are not supported. The plugin will show a warning if multisite is detected.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20the%20token%20when%20i%20deactivate%20the%20plugin%3F\"><h3>What happens to the token when I deactivate the plugin?<\/h3><\/dt>\n<dd><p>The migration token and connection status are automatically deleted from the database when the plugin is deactivated.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20plugin%20with%20a%20waf%20%28modsecurity%2C%20wordfence%2C%20imunify%2C%20cloudflare%29%3F\"><h3>Can I use this plugin with a WAF (ModSecurity, Wordfence, Imunify, Cloudflare)?<\/h3><\/dt>\n<dd><p>Yes. The plugin supports optional base64 encoding of request and response bodies to prevent WAF false positives on SQL or PHP content in migration data. This is handled automatically by the Hostney worker.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed: the per-IP rate limiter refreshed its own expiry on every request, so the\n60-second window never elapsed during a migration and the limit behaved as a\none-time cap of 900 requests. Large sites were rejected with HTTP 429 partway\nthrough the database export.<\/li>\n<li>Added: a Retry-After header on rate-limited responses, so the caller knows exactly\nhow long to wait instead of guessing.<\/li>\n<li>Changed: the request rate limit now applies only to authenticated requests.\nUnauthenticated traffic is handled by a separate failed-authentication throttle and\ncan no longer consume a running migration's request budget.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Confirmed compatibility with WordPress 7.1<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Confirmed compatibility with WordPress 7.0<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Database export with primary key pagination and adaptive batch sizing<\/li>\n<li>Filesystem export with chunked transfers and MD5 checksum verification<\/li>\n<li>HMAC-SHA256 authentication with timestamp validation<\/li>\n<li>WAF-compatible base64 encoding for request and response bodies<\/li>\n<li>Path traversal protection with realpath validation<\/li>\n<li>Admin UI with system requirement checks<\/li>\n<\/ul>","raw_excerpt":"Migrate your WordPress site to Hostney hosting. Paste your migration token and Hostney handles the rest automatically.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/292879","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=292879"}],"author":[{"embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/hostney"}],"wp:attachment":[{"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=292879"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=292879"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=292879"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=292879"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=292879"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=292879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}