How to move from WordPress to Ghost: posts, members, themes and redirects
SwitchTo HQ · Updated 18 October 2026 · Websites, analytics and code · How we write
Ghost has a WordPress migrator built into its admin area. For a typical blog it can bring your posts and pages across in a few steps. What it doesn't do is move your theme, plugins, subscribers or URL structure, so a complete switch involves a few more tasks. This guide follows Ghost's WordPress migration documentation and related Ghost help pages.
Check that your site fits the built-in migrator
Ghost lists what its WordPress migrator supports:
| Supported | Not supported |
|---|---|
| XML export files up to 100 MB | Custom post types |
| Up to 2,500 posts | Most uncommon shortcodes |
Some shortcodes, such as [caption], [audio] and [code], plus most [vc_] and [et_] page-builder shortcodes | Plugins that change access to content |
If your site is bigger or more complex, for example a shop, a membership plugin or thousands of posts, Ghost says its Migrations team can help Ghost(Pro) customers. Developers and self-hosters can use Ghost's open-source migration tools instead.
Also list what your WordPress plugins do for you, such as contact forms, SEO settings, galleries and comments. Each one will need a Ghost equivalent, an integration, or a decision to drop it.
Step 1: Export from WordPress
WordPress's export tool is under Tools, then Export in the dashboard. According to the WordPress documentation, choosing All content creates an XML file (in WordPress eXtended RSS, or WXR, format) containing your posts, pages, comments, custom fields, categories, tags and navigation menus.
Ghost's migrator links you straight to this screen, so it helps to be logged in to WordPress before you start.
Step 2: Run the Ghost migrator
In Ghost Admin, go to Settings, then Advanced, then Import/Export, and choose the WordPress migrator.
- Enter your WordPress URL and click Continue.
- Export content. Click Open WordPress Settings, select All content and click Download Export File.
- Upload content. Back in Ghost, upload the XML file and click Continue.
- Review. Ghost shows how many posts and pages it will import. Click Import content. After a few moments you will see a confirmation message.
Step 3: Check how your content arrived
Ghost notes that WordPress categories are converted to tags, and a post's first category becomes its primary tag. If you used both categories and tags in WordPress, review your tag list afterwards and merge or rename any duplicates.
Then check a sample of posts:
- Formatting, headings and embedded media.
- Images, including whether they are being served from Ghost or still loading from your old WordPress host.
- Any shortcodes that weren't supported, which may appear as raw text.
- Authors, publication dates and featured images.
Step 4: Bring your subscribers across
If you have email subscribers, for example from a WordPress newsletter plugin or Mailchimp, Ghost can import them from a CSV file. Only email is required. Optional fields include name, note, subscribed_to_emails, labels, created_at and stripe_customer_id. The Stripe field lets you link existing paid subscribers to your connected Stripe account. Ghost also has dedicated migration guides for platforms such as Mailchimp, Substack and Kit.
Ghost recommends cleaning your data before you import. Only import people who agreed to receive your emails.
Step 5: Choose a theme
WordPress themes don't work in Ghost. Pick a theme from Ghost's marketplace, or have one built using Ghost's theme documentation. Check your navigation menus as well, and recreate them in Ghost's settings.
Step 6: Set up redirects
This is the step most likely to cost you search traffic if you skip it. Ghost's URL structure may not match your old WordPress permalinks. For example, WordPress sites often use dates in post URLs or a /category/ prefix, which Ghost doesn't use by default. Ghost's migration guide says you may need redirects so that backlinks keep working.
Ghost handles redirects with a redirects.yaml file. According to Ghost's redirects tutorial:
- Download the file from Ghost Admin (in the Labs settings), or create a new one.
- Add rules under
301(permanent) or302(temporary). Regular expressions are supported, so one rule can cover a whole date-based pattern. - Upload the edited file.
Ghost advises against using redirects.yaml for www or HTTP-to-HTTPS rules, which belong with your DNS provider. It also doesn't need rules for trailing slashes, because Ghost adds them automatically.
After uploading, test a selection of your old URLs, especially your most-linked posts. Use 301 redirects for content that has moved permanently.
Step 7: Switch the domain and keep a backup
When you are ready, point your domain to Ghost by following your Ghost host's instructions. Keep the WordPress export file and a full backup of your WordPress site, including its media library and database, until you are sure nothing is missing.
Checklist
- Check your site is within 100 MB and 2,500 posts, with no custom post types.
- Export All content from WordPress and run the Ghost migrator.
- Review tags, images and unsupported shortcodes.
- Import subscribers from a cleaned CSV.
- Choose a Ghost theme and rebuild your menus.
- Write and test 301 redirects for your old URLs.
- Keep a full WordPress backup until the move is complete.
Sources
- Ghost: Migrating from WordPress
- Ghost: Implementing redirects
- Ghost: Import members
- Ghost: Themes documentation
- WordPress: Tools Export screen