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:
| Content | Transfers? | Notes |
|---|---|---|
| Posts | Yes | Standard posts with content, title, slug, status |
| Pages | Yes | Static pages |
| Images | Yes | Inline and featured images are transferred |
| Tags | Yes | WordPress tags are preserved |
| Categories | Partial | Converted to tags; first category becomes primary tag |
| Authors | Yes | Author names and attributions preserved |
| Post dates | Yes | Published and created dates maintained |
| Post status | Yes | Published and draft states preserved |
| Excerpts | Yes | Custom excerpts transfer |
What Does NOT Transfer
This is the critical list. Plan for these gaps before starting:
| Content | Why Not |
|---|---|
| Comments | Ghost does not import WordPress comments. Use Ghost’s native comments (Ghost 5.0+) or migrate to Disqus/Cove separately. |
| Custom fields / meta | WordPress custom fields and post meta are not included in the export. |
| Shortcodes | WordPress shortcodes ([gallery], [embed], Visual Composer codes) are not rendered in Ghost. They will appear as raw text. |
| Plugins / widgets | Plugin functionality does not transfer. Find Ghost alternatives or use code injection. |
| Theme / design | WordPress themes cannot be ported. Choose a Ghost theme or build a custom one in Handlebars. |
| Custom post types | WordPress CPTs are not exported by the migration tool. |
| PDFs / audio / non-image files | Only images transfer. Move other media manually. |
| Forms | WordPress forms (Gravity Forms, Contact Form 7, etc.) must be recreated using TypeForm, Google Forms, or similar. |
| User passwords | User accounts transfer but passwords do not. All users must set new passwords in Ghost. |
| E-commerce data | WooCommerce products, orders, and customer data do not transfer. |
| Scheduled posts | Transfer 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:
- Go to Plugins → Add New
- Search for “Ghost”
- Install and activate the Ghost plugin (by Ghost Foundation)
Step 2: Export Your Content
- Go to Tools → Export to Ghost
- Click Download Ghost File
- The plugin generates a
.jsonfile in Ghost’s import format
This process converts your WordPress posts, pages, tags, and authors into Ghost-compatible JSON.
Step 3: Import Into Ghost
- In Ghost Admin, go to Settings → Advanced → Labs
- Under Import content, click Import
- Select the
.jsonfile from Step 2 - 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:
- Linked images: If your WordPress images are hosted externally, they continue to load from the original source
- 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 URL | Ghost URL | Redirect |
|---|---|---|
/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.):
- Export subscribers as CSV from your email tool
- In Ghost Admin, go to Members → Import
- Upload the CSV with email addresses
- 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
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:
- Submit your new Ghost sitemap URL
- Monitor indexing over the following weeks
- Check for “Crawled - currently not indexed” pages that may need attention
Test Newsletter Sending
If you plan to use Ghost’s newsletter:
- Send a test email to yourself
- Verify formatting and image rendering in the email
- 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.
For a detailed comparison of the two platforms, see our Ghost vs WordPress comparison.
Recommended Themes
These themes excel at the features discussed in this article.
Luxe Themes
