How to Migrate from Ghost to WordPress
How to Migrate from Ghost to WordPress

Key Takeaways
- Businesses leave Ghost for WordPress to gain plugins, e-commerce, custom content types, and design flexibility that Ghost's minimalist platform does not offer.
- Ghost exports content as JSON with Lexical/Mobiledoc cards, which must be converted to WordPress WXR XML, so Ghost-specific cards and the Handlebars theme need manual recreation.
- Set WordPress permalinks to Post name (/%postname%/) and migrate images from /content/images/ into the media library so slugs stay consistent and images do not 404.
- A complete one-to-one 301 redirect map, especially for /tag/, /category/, and /author/ paths, is the single most important step for preserving rankings and link equity.
- Timeline runs from 1-2 weeks for a small blog to 6-12+ weeks for a membership or e-commerce site, with cost driven mainly by redesign, feature rebuilds, and redirect QA.
Ghost is a fast, focused publishing platform built around clean writing and paid newsletters. But as a site grows, teams often outgrow it. You might need a membership plugin Ghost does not support, an e-commerce store, custom post types, form integrations, or a specific SEO toolset like Yoast or Rank Math. When that happens, WordPress becomes the natural destination: it powers roughly 40% of the web, has a plugin for nearly everything, and gives you full control over hosting, themes, and functionality.
The catch is that Ghost and WordPress structure content very differently. Ghost stores posts as portable JSON with a Mobiledoc/Lexical body; WordPress expects WXR (WordPress eXtended RSS) XML with HTML content, categories, tags, and its own URL patterns. A careless migration can mangle formatting, drop images, break your permalinks, and tank the organic traffic you spent years earning. This guide walks through the full move, from why teams switch to how to preserve every ranking with a clean 301 redirect map.
Below is the exact process a professional team follows, plus a realistic look at what breaks, what timeline to expect, and where the budget goes.
Why businesses move from Ghost to WordPress
Ghost is deliberately minimal, and that minimalism is what eventually pushes many businesses to leave. The most common reasons we see for a Ghost-to-WordPress migration:
- Extensibility. Ghost has integrations but no true plugin ecosystem. WordPress has over 59,000 free plugins for SEO, forms, memberships, LMS courses, booking, and more.
- E-commerce. Ghost handles paid subscriptions well but is not built for selling physical products. WooCommerce on WordPress is a full store.
- Design flexibility. Ghost themes use the Handlebars templating language and require developer knowledge to customize deeply. WordPress offers thousands of themes plus visual builders like Elementor and the native Block Editor.
- Complex content models. Custom post types, custom fields (ACF), and relational content are native to WordPress but absent in Ghost.
- Team and role control. WordPress offers granular user roles and countless workflow/editorial plugins.
- Ownership and hosting choice. WordPress is self-hostable anywhere, avoiding Ghost(Pro) subscription tiers as membership counts grow.
If your reason for moving is a custom application or integrated business system rather than just publishing, it may be worth scoping a custom website and CRM development approach alongside the WordPress build so the migration and the new functionality happen together.
What changes and what breaks
Understanding what does not survive a raw export is half the battle. Here is what to expect when moving Ghost content into WordPress:
- Content body. Ghost's Lexical/Mobiledoc cards (bookmarks, embeds, buttons, product cards, email-only content) have no direct WordPress equivalent. Standard text, headings, images, and code blocks convert cleanly; Ghost-specific cards often need manual recreation as blocks or shortcodes.
- URLs. Ghost defaults to /post-slug/ at the root and uses /tag/ and /author/ archives. WordPress commonly defaults to /category/ and dated permalinks. Unless you set WordPress permalinks to /%postname%/, every URL changes and every backlink breaks.
- Design. Your Ghost Handlebars theme does not transfer. You will rebuild the design on a WordPress theme, which is an opportunity to modernize but is real work.
- Members and subscriptions. Ghost's native membership, Stripe billing, and email newsletter (via Mailgun) do not map to WordPress. You will need a membership plugin (e.g., MemberPress or Paid Memberships Pro) and a newsletter service, and paid subscribers must be migrated carefully through Stripe.
- Images. Ghost stores images under /content/images/. These must be pulled into the WordPress /wp-content/uploads/ media library and every in-body reference rewritten, or images will 404.
- SEO metadata. Meta titles, descriptions, and canonical/OG tags set in Ghost need to be re-imported into your WordPress SEO plugin, not left to defaults.
Step 1: Export your content from Ghost
Start in Ghost Admin → Settings → Migration (Labs/Export). Click Export your content to download a single JSON file containing all posts, pages, tags, authors, and metadata. Separately, download your images: use the Export content option or pull the full /content/images/ directory over SFTP if you self-host, or request a full export from Ghost(Pro) support. If you run paid memberships, export your members CSV from the Members screen and coordinate a Stripe data migration with Stripe support so billing continuity is preserved. Keep this export as your source of truth and do not touch the live Ghost site until the new site is verified.
Step 2: Set up WordPress
Provision WordPress on quality managed hosting (Kinsta, WP Engine, SiteGround, or Cloudways are common choices) and install it on a staging domain or subdomain so the live site stays untouched. Then:
- Set Settings → Permalinks to Post name so URLs read as /post-slug/ and can match Ghost's structure.
- Install and configure an SEO plugin (Yoast or Rank Math) and generate an XML sitemap.
- Choose a theme and rebuild your Ghost design, or start fresh. If you want a modernized result rather than a like-for-like copy, this is the moment for a proper website development plan.
- Install supporting plugins: a redirect manager (Redirection or Rank Math's built-in tool), a caching plugin, and any membership/e-commerce plugins you need.
Because Ghost's underlying data model is so different, a specialized converter matters. Teams handling this regularly rely on a WordPress development company to script the JSON-to-WXR conversion so nothing is lost in translation.
Step 3: Import and recreate content
The cleanest path uses a Ghost-to-WordPress converter that transforms Ghost's export JSON into a WordPress-compatible WXR XML file, then imports it via Tools → Import → WordPress. The official Ghost importer plugin and community scripts handle the bulk of posts, tags (mapped to WordPress categories or tags), authors, and publish dates. After the import:
- Run the media import so images from /content/images/ are downloaded into the WordPress media library and in-body URLs are rewritten (the Auto Upload Images plugin helps here).
- Spot-check 20-30 posts for formatting: fix any broken Ghost cards, embeds, buttons, and code blocks.
- Recreate Ghost-specific pages (membership, sign-up, account) using WordPress equivalents.
- Re-enter SEO titles and meta descriptions if the importer did not carry them over.
- Rebuild navigation menus, and re-link your internal links to the new structure.
Step 4: Map 301 redirects to preserve SEO
This is the single most important step for protecting rankings. Even if you keep the same slugs, edge cases will differ: Ghost /tag/name/ vs WordPress /category/name/ (or /tag/name/), /author/name/ paths, pagination, AMP URLs, and any changed slugs. Every old URL that changes needs a permanent 301 redirect to its new counterpart so link equity and Google's index transfer over.
- Crawl the live Ghost site with Screaming Frog to capture a complete list of live URLs, and pull top pages from Google Search Console and your analytics.
- Build a spreadsheet mapping every old URL to its exact new URL, one row per page. Our 301 redirect map guide shows how to structure this so nothing slips through.
- Implement the redirects with the Redirection plugin or, for large sites, directly in the server config (.htaccess or Nginx rules) for speed.
- Redirect at the pattern level where possible (e.g., /tag/* to /category/*) and add one-to-one rules for exceptions. Never point everything to the homepage; that is treated as a soft 404 and loses rankings.
Follow a full website migration SEO checklist to be sure metadata, sitemaps, structured data, and canonicals all move with the content.
Step 5: DNS, launch, and post-launch testing
When staging is verified, point your domain's DNS to the new host (or promote staging to production). Then work the launch checklist:
- Confirm WordPress permalinks match the intended structure before going live.
- Submit the new XML sitemap in Google Search Console and use the URL Inspection tool to request re-crawling of key pages.
- Test a sample of your 301 redirects with a redirect checker to confirm each returns a single 301 (no chains or loops) to a live 200 page.
- Crawl the new site for broken internal links and missing images.
- Verify analytics (GA4) and any conversion tracking fire on the new site.
- Keep the old Ghost export archived and leave redirects in place permanently.
Monitor Search Console coverage and rankings closely for 4-8 weeks. A short dip during re-crawl is normal; with clean redirects, traffic typically recovers and stabilizes. If handling this in-house feels risky, professional website migration services handle the conversion, redirect mapping, and monitoring so nothing breaks.
Timeline and cost
A realistic Ghost-to-WordPress migration depends almost entirely on content volume and how much design and functionality you are rebuilding.
- Small blog (under ~50 posts), like-for-like design: roughly 1-2 weeks, largely export, import, redirect, and QA.
- Mid-size site (hundreds of posts) with a redesign: typically 3-6 weeks, including theme build and manual content cleanup.
- Large or membership/e-commerce site: 6-12+ weeks, driven by Stripe/member migration, custom functionality, and heavy redirect mapping.
On cost, at a rate of $80/hour, a straightforward migration commonly lands in the low four figures, while a redesign plus membership or store rebuild scales into the mid four figures and up. The biggest cost drivers are custom design, recreating Ghost-specific features as WordPress plugins, and the redirect/QA work that protects your SEO. Spending on a clean redirect map and thorough testing is always cheaper than recovering lost organic traffic later.
Frequently Asked Questions
Will I lose my Google rankings when migrating from Ghost to WordPress?
Can I keep my exact same URLs after moving to WordPress?
How do I move my Ghost paid members and subscriptions?
What happens to my Ghost theme and design?
How long does a Ghost to WordPress migration take?
Get a FREE GEO/AEO/SEO Audit
We'll analyze your site's SEO, GEO, AEO & CRO — completely free — and show you exactly how to get found across Google and AI answers.
Don't have a site yet? Get in touch →






