How to Migrate from WordPress to Ghost

Step-by-step WordPress to Ghost migration. What transfers, what does not, how to handle images, redirects, and subscriber lists.

Moving From WordPress to Ghost

WordPress to Ghost is the most common CMS migration path. Ghost provides an official WordPress plugin and import tool that handles the bulk of the transition. But not everything transfers automatically, and understanding the gaps before you start prevents unpleasant surprises mid-migration.

This guide covers the complete process: what migrates, what does not, and how to handle each step.

What Transfers

The official Ghost WordPress export plugin converts your WordPress content into Ghost’s JSON import format. Here is what comes across:

ContentTransfers?Notes
PostsYesStandard posts with content, title, slug, status
PagesYesStatic pages
ImagesYesInline and featured images are transferred
TagsYesWordPress tags are preserved
CategoriesPartialConverted to tags; first category becomes primary tag
AuthorsYesAuthor names and attributions preserved
Post datesYesPublished and created dates maintained
Post statusYesPublished and draft states preserved
ExcerptsYesCustom excerpts transfer

What Does NOT Transfer

This is the critical list. Plan for these gaps before starting:

ContentWhy Not
CommentsGhost does not import WordPress comments. Use Ghost’s native comments (Ghost 5.0+) or migrate to Disqus/Cove separately.
Custom fields / metaWordPress custom fields and post meta are not included in the export.
ShortcodesWordPress shortcodes ([gallery], [embed], Visual Composer codes) are not rendered in Ghost. They will appear as raw text.
Plugins / widgetsPlugin functionality does not transfer. Find Ghost alternatives or use code injection.
Theme / designWordPress themes cannot be ported. Choose a Ghost theme or build a custom one in Handlebars.
Custom post typesWordPress CPTs are not exported by the migration tool.
PDFs / audio / non-image filesOnly images transfer. Move other media manually.
FormsWordPress forms (Gravity Forms, Contact Form 7, etc.) must be recreated using TypeForm, Google Forms, or similar.
User passwordsUser accounts transfer but passwords do not. All users must set new passwords in Ghost.
E-commerce dataWooCommerce products, orders, and customer data do not transfer.
Scheduled postsTransfer but may need verification — Ghost handles scheduling differently.

Pre-Migration Checklist

Before starting the migration:

1. Audit Your Content

Review your WordPress content for:

  • Shortcodes: Search your posts for [ to find shortcodes that need manual conversion
  • Custom fields: Identify any post meta used in your theme display
  • Plugin-dependent content: Content generated by plugins (tablepress tables, gallery plugins, etc.) will not render
  • Categories vs tags: WordPress categories become Ghost tags — decide if this structure works or reorganize before export

2. Clean Up WordPress

A cleaner source produces a cleaner migration:

  • Delete spam, draft, and low-quality posts you no longer want
  • Convert important categories to tags (since categories become tags in Ghost anyway)
  • Update broken internal links
  • Remove plugin-generated content from posts where possible

3. Choose Your Ghost Setup

Decide between Ghost(Pro) and self-hosted before migrating:

  • Ghost(Pro): Publisher plan ($29/month) minimum for custom themes and memberships
  • Self-hosted: VPS ($4-6/month) + Mailgun for email delivery

4. Choose a Ghost Theme

Have your theme ready before importing content. This lets you verify how your migrated content looks immediately after import.

Step-by-Step Migration

Step 1: Install the Ghost WordPress Plugin

In your WordPress dashboard:

  1. Go to Plugins → Add New
  2. Search for “Ghost”
  3. Install and activate the Ghost plugin (by Ghost Foundation)

Step 2: Export Your Content

  1. Go to Tools → Export to Ghost
  2. Click Download Ghost File
  3. The plugin generates a .json file in Ghost’s import format

This process converts your WordPress posts, pages, tags, and authors into Ghost-compatible JSON.

Step 3: Import Into Ghost

  1. In Ghost Admin, go to Settings → Advanced → Labs
  2. Under Import content, click Import
  3. Select the .json file from Step 2
  4. Ghost processes the import and displays a summary

Review the import summary for any errors or skipped items. Common issues:

  • Duplicate slugs: If a post and page share the same slug, one will be renamed
  • Image references: Inline images should transfer, but verify they load correctly
  • Date formatting: Dates should preserve but verify a few posts

Step 4: Verify Your Content

After importing, check:

  • Open 5-10 posts and verify content renders correctly
  • Check that images load (both inline and featured)
  • Verify author attributions are correct
  • Confirm tags are assigned properly
  • Check that post dates are accurate

Step 5: Handle Images

The Ghost import tool can handle images in two ways:

  1. Linked images: If your WordPress images are hosted externally, they continue to load from the original source
  2. Embedded images: Images hosted on your WordPress installation should transfer during import

If images reference your WordPress domain (yourolddomain.com/wp-content/uploads/...), you have two options:

  • Keep the old domain alive and serving images (temporary solution)
  • Re-upload images to Ghost and update references (permanent solution)

For self-hosted Ghost, you can transfer the WordPress wp-content/uploads directory to Ghost’s content/images directory and update image paths.

Step 6: Set Up Redirects

If your URL structure changes between WordPress and Ghost, set up 301 redirects to preserve SEO value and prevent broken links.

Ghost supports redirects via redirects.yaml (uploaded through Settings → Advanced → Labs):

301:
/old-wordpress-url/: /new-ghost-url/
/category/news/: /tag/news/
/wp-content/uploads/: /content/images/

Common redirect patterns for WordPress to Ghost:

WordPress URLGhost URLRedirect
/category/news//tag/news/301
/?p=123/post-slug/301
/author/username//author/username/May not need redirect

Step 7: Update DNS

Point your domain from your WordPress host to Ghost:

  • Ghost(Pro): Update DNS records as instructed in Ghost Admin
  • Self-hosted: Update DNS A record to your new server’s IP

Step 8: Import Subscribers

If you had an email list on WordPress (via Mailchimp, ConvertKit, etc.):

  1. Export subscribers as CSV from your email tool
  2. In Ghost Admin, go to Members → Import
  3. Upload the CSV with email addresses
  4. Free subscribers import directly; paid subscribers must re-subscribe through Ghost’s Stripe integration

Handling Specific Content Types

Gutenberg Blocks

WordPress Gutenberg blocks convert reasonably well to Ghost’s content format for standard blocks (paragraphs, headings, images, lists, quotes). Custom blocks and third-party block plugins may not convert cleanly — review these posts manually.

Yoast SEO Data

Yoast custom meta titles and descriptions do not transfer. In Ghost, set meta titles and descriptions for your most important posts manually via the post settings sidebar.

Internal links in your WordPress content will still point to your WordPress URL structure. If your URL structure changes, either:

  • Set up redirects (recommended for external links)
  • Bulk find-and-replace old URLs in the Ghost JSON file before import
  • Update links manually in Ghost’s editor for high-priority posts

After Migration

Verify SEO

After migration, check:

  • Sitemap generates correctly at yourdomain.com/sitemap.xml
  • Google Search Console does not show new 404 errors
  • Important pages maintain their search rankings
  • Structured data renders correctly (check via Google’s Rich Results Test)

Submit Updated Sitemap

In Google Search Console:

  1. Submit your new Ghost sitemap URL
  2. Monitor indexing over the following weeks
  3. Check for “Crawled - currently not indexed” pages that may need attention

Test Newsletter Sending

If you plan to use Ghost’s newsletter:

  1. Send a test email to yourself
  2. Verify formatting and image rendering in the email
  3. Test with multiple email clients (Gmail, Apple Mail, Outlook)

Start Fresh With the Right Theme

Migration is the perfect time to upgrade your publication’s design. Instead of trying to recreate your WordPress theme in Ghost, choose a purpose-built Ghost theme that takes advantage of native features.

Our themes include dark mode, membership pages, and multiple post layouts — features that would have required plugins on WordPress. Starting at $69.

Browse Ghost themes →

For a detailed comparison of the two platforms, see our Ghost vs WordPress comparison.