=== Blog Porter – Migrate to WordPress ===
Contributors: blogporter
Tags: migration, importer, wix, blogger, medium
Requires at least: 6.4
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 0.3.51
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Move posts, categories, tags, and images from supported blogs directly into WordPress.

== Description ==

Blog Porter helps you move a public blog into WordPress without manually handling a large XML file. It imports posts, categories, tags, inline images, and featured images in small resumable batches, so an interrupted import can continue where it stopped.

Blog Porter supports migrations from Wix, Blogger, Medium, Squarespace, Webflow, and HubSpot when those platforms are enabled by the Blog Porter service. Medium exports can also be supplied as the ZIP archive provided by Medium. A Blog Porter migration is required before content can be imported.

== External service and privacy ==

This plugin connects to the Blog Porter service at https://blogporter.com to analyze a blog, prepare a migration, process payment, and deliver migration content to WordPress. The remote service performs the source-platform analysis and conversion; the plugin only provides the WordPress administrator interface and imports the resulting migration content.

The plugin does not contact Blog Porter when an administrator merely opens its WordPress admin page. Before the first analysis, the administrator must confirm that they own the blog content and accept the Terms and Conditions. When an administrator explicitly analyzes a blog, starts checkout, connects an existing export, checks migration status, starts conversion, or imports content, the plugin sends only the information needed for that action. Depending on the action, this can include the selected source platform, source blog URL, export or migration ID, email address selected for export updates, WordPress site URL, plugin version, and a temporary connection token. For Medium, the administrator uploads the ZIP archive supplied by Medium; the archive is stored privately by Blog Porter so its posts can be converted. The plugin receives the selected migration content from Blog Porter and stores limited import progress and connection data in the WordPress installation.

Blog Porter is a paid, pay-as-you-go service and does not require an account. Payment is processed by Polar. Service terms and data handling details are available here:

* Privacy Policy: https://blogporter.com/privacy
* Terms and Conditions: https://blogporter.com/terms

== Installation ==

1. Install and activate the plugin.
2. Open Blog Porter from the WordPress admin sidebar.
3. Review the external-service and privacy information shown in the plugin.
4. Analyze a supported public blog and complete checkout, or enter an existing Blog Porter export ID.
5. Let Blog Porter check for existing posts, then start the import or choose whether existing posts should be updated.

== Frequently Asked Questions ==

= Do I need to upload an XML file? =

No. The plugin downloads small batches directly from Blog Porter.

= Does it copy images? =

Yes. The initial version copies inline and featured images into the WordPress Media Library when the source server allows them to be downloaded.

= Can I pause or retry an import? =

Yes. Imports can be paused after the current post and resumed later. Posts or media with errors can be retried without duplicating successfully imported posts or attachments.

== Screenshots ==

1. Select the source platform, enter a public blog address, confirm ownership and terms, then review the migration.
2. Review import progress, including posts and copied media, in the WordPress admin.

== Trademarks ==

WordPress is a trademark of the WordPress Foundation. Wix, Blogger, Medium, Squarespace, Webflow, HubSpot, and Polar are trademarks or registered trademarks of their respective owners. Their names are used solely to identify supported services and do not imply endorsement or affiliation.

== Changelog ==

= 0.3.51 =
* Remove the local testing payment-bypass link from the migration review interface.

= 0.3.50 =
* Hide migration controls when the installed plugin is below the required version and provide a direct update action.
* Refresh compatibility information immediately after installing a different plugin version.

= 0.3.48 =
* Centre the hero and align the Blog Porter icon with its title.

= 0.3.47 =
* Add the Blog Porter icon before the plugin hero title.

= 0.3.46 =
* Align the plugin hero and menu icon with the Blog Porter website, while keeping the display font exclusive to the main title.

= 0.3.45 =
* Improve the WordPress admin interface with Blog Porter typography and a clearer migration summary after import.

= 0.3.44 =
* Add a clear post-import migration summary and a concise after-migration checklist.

= 0.3.43 =
* Show a contextual manual-update link when a newer Blog Porter plugin release is available.

= 0.3.42 =
* Keep the posts selected at checkout when starting the migration and reduce background status polling.

= 0.3.41 =
* Keep the post selection when skipping payment during testing.

= 0.3.40 =
* Keep capability tooltips inside the review panel.

= 0.3.39 =
* Let customers choose individual detected posts for every supported platform.

= 0.3.38 =
* Celebrate a completed WordPress migration with the same confetti effect as the export site.

= 0.3.37 =
* Use the same filled and outlined capability icons as the export site.

= 0.3.36 =
* Align the post-review UI with the export page: Webflow titles, selectable grey rows, chevrons, capability status icons, and hover explanations.

= 0.3.35 =
* Show the 10-post requirement only when the selected export is below the limit.

= 0.3.34 =
* Require at least 10 posts before checkout, with the minimum shown while reviewing Webflow URLs.

= 0.3.33 =
* Let Webflow customers review detected URLs, exclude non-post pages, and export a smaller selected batch.

= 0.3.32 =
* Blend workflow illustrations into their card background without a visible white canvas.

= 0.3.31 =
* Remove the white background baked into the workflow SVG illustrations.

= 0.3.30 =
* Replace generic migration-state icons with the matching Blog Porter workflow illustrations.

= 0.3.29 =
* Throttle Wix conversion requests and classify unavailable source pages correctly.
* Make the plugin interface ready for WordPress translations, including dynamic admin updates.

= 0.3.28 =
* Restore the compact conversion loading indicator size.

= 0.3.27 =
* Improve migration status indicators and report unavailable source posts during conversion.

= 0.3.26 =
* Show the local testing payment bypass for a returned pending checkout.

= 0.3.25 =
* Permit a local WordPress configuration to enable the testing-only payment bypass.

= 0.3.24 =
* Keep the cancelled-checkout review benefits in sync with the original analysis.

= 0.3.23 =
* Restore the original feed-review presentation after a cancelled checkout.

= 0.3.22 =
* Show loading spinners consistently during checkout actions and restore review benefits after a cancelled checkout.

= 0.3.21 =
* Place the payment-confirmation note below checkout with an 8px gap.

= 0.3.20 =
* Align the checkout button and payment-confirmation note in one centered row.

= 0.3.19 =
* Normalize the text size across source-platform cards.

= 0.3.18 =
* Restore the source-platform cards with text-only labels and no third-party logos.
* Use the administrator's platform selection for analysis instead of URL auto-detection.

= 0.3.17 =
* Detect a supported blog platform from its public URL instead of asking the administrator to select it.
* Require acknowledgement of content ownership and the Terms and Conditions before the first Blog Porter request.
* Remove third-party platform logo assets from the distributed plugin.

= 0.3.16 =
* Refine migration and email copy, add directional button icons, and use a stable in-place loading indicator.
* Show migration notices and errors before the Blog Porter heading.

= 0.3.15 =
* Keep exactly one post in the importing state while the worker or cron is active.
* Keep the import activity log collapsed until the administrator opens it.

= 0.3.14 =
* Show the post currently being imported directly in the results table, with a loading spinner in its status badge.
* Keep import activity open directly below the progress bar and refresh it while media downloads are in progress.

= 0.3.13 =
* Show a clear green confirmation icon when matching posts are found.
* Skip all existing posts immediately when the keep-existing option is selected, without starting the import worker when nothing remains to import.
* Clarify that the alternate action re-imports and updates every post and its media.

= 0.3.12 =
* Show a spinner while a source analysis is running.
* Use compact, left-aligned primary actions in the feed-review flow.
* Separate a new migration from connecting an existing one with an OR divider.

= 0.3.11 =
* Allow source analysis to use up to two minutes before WordPress reports a timeout.

= 0.3.10 =
* Do not block new migrations when the optional compatibility lookup is unavailable.

= 0.3.9 =
* Let Medium migrations upload the ZIP archive supplied by Medium instead of asking for a blog URL.
* Store the archive privately, count its stories before checkout, and reuse it for the WordPress migration.

= 0.3.8 =
* Keep the import summary in its own card, with controls and post results below it.
* Left-align post, media, and expanded-media details for easier scanning.
* Keep a paused import paused until an administrator explicitly resumes it.

= 0.3.7 =
* Package the background-conversion update as a production plugin release.
* Remove the testing-only payment-bypass control from the distributable plugin.

= 0.3.6 =
* Start paid and testing-bypassed conversions from Blog Porter's background queue without requiring the plugin page to remain open.
* Show queued/background conversion status without using page loads to initiate scraping.

= 0.3.5 =
* Fix authorization for WordPress-initiated Polar checkout creation.
* Create the WordPress export record after a successful analysis and reuse it at checkout.
* Record plugin analyses in the export funnel without creating duplicate checkout exports.

= 0.3.4 =
* Show URL validation and source-analysis errors directly beside the blog form.
* Use the same platform-specific validation guidance as BlogPorter.com.
* Replace the technical disconnect button with a centered cancel-export link and friendlier confirmation copy.

= 0.3.3 =
* Show a neutral export-verification state while refreshing migration details.
* Prevent checkout controls from appearing before the current payment status is known.

= 0.3.2 =
* Check automatically for posts already present in WordPress before import.
* Start new migrations with one clear import action when no existing posts are found.
* Only show skip or update choices when posts from the migration already exist.

= 0.3.1 =
* Simplify the feed review layout with a focused summary card, a prominent checkout action, and unboxed migration details.

= 0.3.0 =
* Add a per-post import review with media discovered, downloaded, reused, external, and failed counts.
* Detect posts already imported by Blog Porter and skip them by default.
* Add an explicit option to re-import and update all existing posts.
* Add pause, resume, and retry controls with idempotent post and attachment handling.
* Add an atomic import lock, administrator-only controls, private-network URL checks, and bounded media downloads.

= 0.2.2 =
* Document the Blog Porter external service, data exchanges, and plugin privacy behavior.
* Add the GPL-2.0-or-later license text and third-party trademark notices.

= 0.2.1 =
* Refresh supported platforms whenever the Blog Porter admin page opens.
* Use the last known configuration only when the remote service is temporarily unavailable.

= 0.2.0 =
* Verify compatibility with Blog Porter before starting a new migration.
* Keep supported source platforms in sync with the Blog Porter service.
* Show required and recommended update notices in the WordPress admin.

= 0.1.1 =
* Add an editable export-update email field, prefilled from the current WordPress user.
* Identify migrations started from the WordPress plugin in Blog Porter.

= 0.1.0 =
* Initial release with direct checkout, resumable imports, media copying, taxonomy, and revocable migration connections.
