{"id":301280,"date":"2026-04-23T22:39:40","date_gmt":"2026-04-23T22:39:40","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/honesthosting-site-migrator\/"},"modified":"2026-05-05T23:45:59","modified_gmt":"2026-05-05T23:45:59","slug":"honest-hosting-site-migrator","status":"publish","type":"plugin","link":"https:\/\/gl.wordpress.org\/plugins\/honest-hosting-site-migrator\/","author":23208641,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.0.11","stable_tag":"0.0.11","tested":"6.9.4","requires":"6.7","requires_php":"8.0","requires_plugins":null,"header_name":"HonestHosting Site Migrator","header_author":"HonestHosting","header_description":"Migrate WordPress sites to HonestHosting via streamed, chunked, resumable exports.","assets_banners_color":"","last_updated":"2026-05-05 23:45:59","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/honest-hosting\/honest-hosting-site-migrator","header_author_uri":"https:\/\/honesthosting.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":145,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.0.10":{"tag":"0.0.10","author":"mywp459","date":"2026-04-25 21:35:42"},"0.0.11":{"tag":"0.0.11","author":"mywp459","date":"2026-05-05 23:45:59"},"0.0.9":{"tag":"0.0.9","author":"mywp459","date":"2026-04-23 23:05:53"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3515476,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3515476,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.0.10","0.0.11","0.0.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3515476,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3515476,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"Plugin setup, validate import key, fetch metadata","2":"Run migration, view logs and status"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1859,1456,87,4155,260959],"plugin_category":[59],"plugin_contributors":[260960],"plugin_business_model":[],"class_list":["post-301280","plugin","type-plugin","status-publish","hentry","plugin_tags-export","plugin_tags-hosting","plugin_tags-import","plugin_tags-migration","plugin_tags-site-migrator","plugin_category-utilities-and-tools","plugin_contributors-mywp459","plugin_committers-mywp459"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/honest-hosting-site-migrator\/assets\/icon-128x128.png?rev=3515476","icon_2x":"https:\/\/ps.w.org\/honest-hosting-site-migrator\/assets\/icon-256x256.png?rev=3515476","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/honest-hosting-site-migrator\/assets\/screenshot-1.png?rev=3515476","caption":"Plugin setup, validate import key, fetch metadata"},{"src":"https:\/\/ps.w.org\/honest-hosting-site-migrator\/assets\/screenshot-2.png?rev=3515476","caption":"Run migration, view logs and status"}],"raw_content":"<!--section=description-->\n<p>This plugin is installed on an external source WordPress site and handles:<\/p>\n\n<ul>\n<li>Configuration and destination site selection<\/li>\n<li>Source-side validation and preflight checks<\/li>\n<li>Scanning source files and database<\/li>\n<li>Exporting data in streamed, memory-bounded chunks<\/li>\n<li>Uploading chunks directly to S3 via presigned URLs<\/li>\n<li>Notifying the HonestHosting backend when the import is ready<\/li>\n<li>Resuming interrupted migrations<\/li>\n<li>Optional scheduled incremental sync via WP-Cron<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin relies on two third-party services to perform site migrations to HonestHosting. Both are only contacted after the site administrator explicitly configures an import key and initiates a migration action from the plugin admin UI.<\/p>\n\n<h4>HonestHosting API (api.honesthosting.io)<\/h4>\n\n<p>The plugin communicates with the HonestHosting backend API at <code>https:\/\/api.honesthosting.io<\/code> to authenticate the site administrator's import key, enumerate eligible destination sites, obtain presigned S3 upload URLs, submit preflight estimates, and signal that the destination is ready to import.<\/p>\n\n<p>What data is sent and when:<\/p>\n\n<ul>\n<li>When the administrator validates an import key or loads the migration UI: the import key and source site URL.<\/li>\n<li>During preflight: source PHP version, estimated <code>wp-content<\/code> total size and file count, database table summaries (table names, estimated row counts and byte sizes, engine types), and detected hosting-environment capabilities.<\/li>\n<li>During export: session identifiers, chunk manifests, file paths and sizes, database table progress, and hash values used to validate uploaded chunks.<\/li>\n<li>When upload completes: an import-ready signal containing the session metadata and destination site identifier.<\/li>\n<\/ul>\n\n<p>The import key is sent in the <code>X-HH-Site-Import-Key<\/code> request header over HTTPS.<\/p>\n\n<p>This service is provided by HonestHosting:<\/p>\n\n<ul>\n<li>Terms and Conditions: https:\/\/www.honesthosting.io\/terms-and-conditions\/<\/li>\n<li>Privacy Policy: https:\/\/www.honesthosting.io\/privacy-policy\/<\/li>\n<\/ul>\n\n<h4>Amazon S3 (presigned upload URLs)<\/h4>\n\n<p>The plugin uploads file and database export chunks directly to Amazon S3 using presigned <code>PUT<\/code> URLs issued by the HonestHosting backend. Payloads are not proxied through the HonestHosting API; they are transmitted straight from the source site to S3 over HTTPS.<\/p>\n\n<p>What data is sent and when:<\/p>\n\n<ul>\n<li>During export: each chunk body is <code>PUT<\/code> to the presigned S3 URL. File chunks contain raw file bytes from <code>wp-content\/<\/code>; database chunks contain SQL INSERT statements generated from the site's database tables. Requests carry only <code>Content-Type<\/code> and <code>Content-Length<\/code> headers \u2014 authentication is embedded in the presigned URL itself, so no account credentials or import keys are sent to S3.<\/li>\n<\/ul>\n\n<p>The S3 buckets used for migration storage are operated by HonestHosting on Amazon Web Services. AWS terms and privacy documents apply to the underlying transport and storage:<\/p>\n\n<ul>\n<li>AWS Service Terms: https:\/\/aws.amazon.com\/service-terms\/<\/li>\n<li>AWS Privacy Notice: https:\/\/aws.amazon.com\/privacy\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Download or build the plugin zip.<\/li>\n<li>Upload to <code>wp-content\/plugins\/honest-hosting-site-migrator\/<\/code>.<\/li>\n<li>Activate via WordPress admin.<\/li>\n<li>Navigate to <strong>Tools &gt; HH Site Migrator<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20hosting%20environments%20are%20supported%3F\"><h3>What hosting environments are supported?<\/h3><\/dt>\n<dd><p>The plugin works on standard WordPress installations including shared hosting environments with limited PHP resources. No shell access or external binaries are required.<\/p><\/dd>\n<dt id=\"can%20i%20resume%20an%20interrupted%20migration%3F\"><h3>Can I resume an interrupted migration?<\/h3><\/dt>\n<dd><p>Yes. All progress is persisted in local state files. Click \"Resume Migration\" to continue from the last checkpoint.<\/p><\/dd>\n<dt id=\"does%20this%20support%20wordpress%20multisite%3F\"><h3>Does this support WordPress multisite?<\/h3><\/dt>\n<dd><p>Yes. Each site in a multisite network must individually activate the plugin and configure its own import key and destination.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.0.11<\/h4>\n\n<ul>\n<li>Add <code>table_prefix<\/code> for custom tablenames in source sites.<\/li>\n<\/ul>\n\n<h4>0.0.10<\/h4>\n\n<ul>\n<li>Add screenshot &amp; icons.<\/li>\n<\/ul>\n\n<h4>0.0.9<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Migrate WordPress sites to HonestHosting via streamed, chunked, resumable exports.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/301280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=301280"}],"author":[{"embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mywp459"}],"wp:attachment":[{"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=301280"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=301280"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=301280"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=301280"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=301280"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=301280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}