Published on Jan 19, 2026 | Updated on Jan 19, 2026

How to Migrate from Ghost CMS to WordPress in 2026

12 Min Read
Facebook Icon Twitter Icon LinkedIn Icon
How to Migrate from Ghost CMS to WordPress in 2026 featured image

Introduction

Moving your site from Ghost to WordPress can seem complex, but the process is actually much simpler than it appears. If you’re planning to make the switch, you’re in the right place. 

In this step-by-step blog, you’ll learn exactly how to migrate your Ghost site to WordPress safely and quickly. 

We’ll cover everything from exporting data, converting Ghost’s JSON to WordPress-compatible CSV, importing content, preserving SEO settings, and launching your new site without losing traffic. And if you’d prefer expert help, our Ghost to WordPress migration service takes care of everything delivering a smooth, safe move with no downtime or data loss.

Why Migrate from Ghost to WordPress?

Ghost is popular for being simple, fast, and clean, perfect for writers and small blogs. But, as your site grows and you need more advanced features, Ghost’s minimalist approach can start to feel restrictive.

That’s where WordPress stands out, a flexible, open-source CMS offering unmatched control over design, functionality, and long-term scalability. You can build anything from a simple blog to a full-scale business or enterprise website with ease.

With tools like Yoast SEO and Rank Math, you can optimize your content to rank in search results. And because it supports advanced content types, custom workflows, and tons of integrations, it’s a platform that’s truly built for the future.

You also gain the advantage of a massive global community, helpful documentation, and experts who can step in whenever you need support.

So if Ghost’s minimalist setup is starting to hold you back and you want more creative freedom, powerful features, and full ownership of your site, migrating to WordPress is a smart move for your growth. 

Prerequisites and Preparation

Before you begin migrating your site from Ghost to WordPress, make sure you have everything ready to ensure a smooth transition:

1. Choose the Right WordPress Hosting

Choose a reliable WordPress hosting provider that offers fast performance, strong security, and daily backups. Managed WordPress hosts like Kinsta or SiteGround handle speed, backups, and security automatically.

If you prefer more control, you can also choose VPS hosting.

2. Install WordPress

Install WordPress, and after it’s done, here are the next steps:

  • Log in to Your WordPress Dashboard: Access your site admin by visiting mynewwebsite.com/wp-admin and entering your credentials.
  • Choose a Simple Default Theme for Testing: To get started, activate a default WordPress theme such as Twenty Twenty-Four (the latest official default theme).

3. Optional: Create a Staging Environment

If you want to preview your migrated content before launch, set up a staging site. Many hosting providers include this feature, or you can use plugins like WP Staging. This allows you to:

  • Test the import process safely
  • Adjust design and functionality
  • Fix any issues before live

Export Content from Ghost

The first step in migrating from Ghost to WordPress is to export all your existing Ghost content, including posts, tags, and authors.

  • Log in to your Ghost Admin Dashboard.
  • Go to Settings → Import/Export.

Screenshot 1: Settings → Import/Export

  • Click Export your content.

Screenshot 2: Export Content

  • Ghost will generate a JSON file that contains all your posts, pages, and metadata.
  • Download and save this file safely; you’ll need it in the next step.

Convert Ghost Export for WordPress

WordPress does not directly import Ghost’s JSON format, so you’ll need to convert it into a CSV file.

Clean the Ghost JSON File

Ghost exports the entire database, not just your posts. This means it also includes a lot of Ghost-specific system data, such as:

  • Theme configuration and design settings
  • Memberships, newsletters, and subscription products
  • Roles, permissions, and internal integrations
  • Site settings, API keys, and system metadata

These are not supported by WordPress and can cause unwanted clutter or errors during CSV conversion and import.

Before converting the file to CSV, open the .json file in a JSON formatter (eg. https://jsonformatter.org/) and remove the following sections:

  • meta
  • custom_theme_settings
  • newsletters
  • products, offers, and billing data
  • roles, roles_users
  • settings
  • Authentication keys and internal system records

Screenshot 3: JSON Formatter

Note: This cleanup does not affect your posts or pages; it only removes Ghost-specific system data that WordPress cannot use.

Convert JSON to CSV

Once the JSON file has been cleaned:

Screenshot 4: JSON to CSV Converter

  • Before you convert, review and adjust the settings before converting to ensure the CSV is WordPress-friendly.

Screenshot 5: Choose output options

Enable – Include header in first row and Pivot data down instead of flattening.

Note: These settings prevent formatting issues and generate a CSV that imports cleanly into WordPress.
  • Convert the file directly to CSV
  • Download the generated CSV file

Screenshot 6: Download CSV file

Ghost saves content in nested JSON objects. When converting, these nested structures are flattened into long, path-based column names, like: db/data/posts/0/title

Since WordPress import tools do not recognize Ghost’s internal data structure, these column headers must be renamed to WordPress-compatible fields.

Ghost to WordPress Column Mapping

Ghost CSV ColumnWordPress Field
db/data/posts/0/titlepost_title
db/data/posts/0/slugslug
db/data/posts/0/htmlpost_content
db/data/posts/0/feature_imagefeatured_image
db/data/posts/0/typepost_type
db/data/posts/0/statuspost_status
db/data/posts/0/published_atpost_date

After downloading the CSV file:

  • Upload the CSV file to Google Sheets
  • Open the file and review the first row (column headers)
  • Rename Ghost-specific, path-based column names to WordPress-compatible fields.
  • Save the changes and download the file again as a CSV

This step makes it easier to review, edit, and validate column names before import.

Changing column names won’t affect your content; it just helps map the data correctly for a smooth, error-free WordPress import.

Prepare Author Column in CSV

Before importing posts, ensure the CSV file includes an author-related column (for example, post_author) containing the intended author username.

If authors do not yet exist in WordPress, posts can still be imported and will be assigned to a default user. Once authors are created, posts can be reassigned or re-imported with correct author mapping.

Import Content into WordPress

There are multiple ways to move content from Ghost to WordPress. You can use the built-in WordPress importer for XML/WXR files, rely on WP-CLI or command-line tools if you’re a developer, or use import plugins for CSV files.

We’ll use the WP Import Export Lite plugin because it offers an easy, non-technical way to import Ghost CSV files while properly managing HTML content, images, authors, and duplicate posts.

1. Install the WordPress Importer Exporter Lite plugin and activate it.

2. Go to WP Imp Exp → New Import

Open the WP Import Export Lite plugin from the WordPress admin menu and click New Import.

3. Upload Your Converted Ghost CSV

Upload your CSV file containing Ghost data (converted from JSON → CSV).

Screenshot 7: New Import

Click Continue to Step 2.

4. Select “Post” as the Import Type

Screenshot 8: Select Post

In the dropdown, choose: Post

Select the option: Import new items only and Skip existing items.”
(This ensures no duplicates if you re-run the import.)

Click Continue to Step 3.

5. Map Your Ghost Fields to WordPress Fields

Post Title, Content, and Excerpt

  • Map post_title to {post_title[1]}
  • Map Post Content to {post_content[1]}
  • Map Post Excerpt to {post_excerpt[1]}

Enable: Search image through content and import images wrapped in <img> tags.

Screenshot 9: Map Title and Content

Note: Ghost’s Mobiledoc is an internal editor format and is not always included in exports. WordPress cannot read Mobiledoc data. For this reason, always use the HTML content field, which is fully rendered and universally supported for WordPress imports.

Import Images

Your converted CSV includes a featured image column, so you can map it directly during import. In WP Import Export Lite, map the featured image field (e.g., _feature_image) to WordPress’s _thumbnail_id. 

Enable: Download images hosted elsewhere

This enables image downloading so that WordPress imports the image into the Media Library.

Image Options

  • Enable: Search through content and import images wrapped in <img> tags
  • Enable: Set the first image as the Featured Image (_thumbnail_id)

Screenshot 10: Map Featured Image

Map the Publish Date and the Slug

  • In Other Post Options→Post Dates → As specified, enter: {post_date[1]}
    • This uses Ghost’s original publish date. 
    • The date field must use a format supported by WordPress. Example: 2024-11-10 13:00:00 (YYYY-MM-DD HH:MM: SS)
  • Scroll down to Post Slug and map: {slug[1]}

Screenshot 11: Map Publish Date and Slug

Map Ghost Roles to WordPress Roles

Ghost RoleWordpress RoleNotes
AdministratoradministratorFull access to content and settings
EditoreditorCan publish/manage posts, including others’ content
AuthorauthorCan publish/manage own post only
ContributorcontributorCan write/manage own posts, but cannot publish
Owneradministrator (closest match)Closest match for full permissions
Super EditoreditorLimited to editorial capabilities
Note: Ghost exports may include entries such as Blog Owner, Admin Integration, Ghost Explore Integration, Self-Serve Migration Integration, DB Backup Integration, and Scheduler Integration. These are system accounts and internal integrations, not real users. WordPress handles them through plugins, APIs, and WP-Cron, so they aren’t transferred as users.

When importing posts from Ghost, WordPress does not automatically create users. To ensure posts are assigned correctly and authors have proper permissions, manually add each author. 

Add Authors Manually

  • In WordPress, go to: Users → Add New

Screenshot 12: Add New User

  • Fill in the author details:
    • Username → unique login name 
    • Email → author’s email
    • First and Last Name → optional
    • Display Name → author’s public name
    • Password → set manually or let WordPress generate
    • Role → assign according to the mapping table above
    • Bio → optional, adds extra author info
  • Click Add New User. Repeat for each author.
  • Map Author in Post Import: When importing posts, map the author field to {post_author[1]} so each post is assigned to the correct user.

Screenshot 13: Map Post Author

6. Choose How to Handle Existing Items

  • In Search Existing Item, select the field you want to use for detecting duplicates.
  • Choose Slug because each slug is unique.
  • In the input box, map the slug column from your CSV: Eg: {slug[1]}
  • This ensures posts with the same slug will be updated, not duplicated.

Screenshot 14: Search Existing Item

7. Update Existing Items Fields

  • Choose which parts of your content to update, or choose ‘update all’ if you want.
    • Post status
    • Title
    • Author
    • Slug
    • Content / Description
    • Excerpt / Short Description
    • Dates
    • Menu order
    • Parent post
    • Post type
    • Comment status
    • Ping Status
    • Post Password
    • Attachments
    • Images
    • Custom Fields
    • Taxonomies (incl. Categories and Tags)
  • For your first import, you’ll need to select at least one field, as the plugin requires it.
    • Check Title, Content, and Images as these are essential fields and safe to include.
  • Keep other fields unchecked to avoid overwriting titles, slugs, images, etc.

Screenshot 15: Update Existing Items Fields

8. Configure Advanced Options

  • Enable Iterative, Piece-by-Piece Processing.
  • Set the number of records to process in each iteration.
    • For example: 5 records per iteration (as shown in the screenshot).
    • This helps avoid server timeout issues during heavy imports.
  • Click Continue to move to the next step.

Screenshot 16: Configure Advanced Options

9. Run the Import

  • Click Continue and start the import.
  • The plugin will process the records in batches (e.g., 5 at a time).

Screenshot 17: Run the Import

10. Verify Results

  • Go to Posts → All Posts.
  • Check if:
    • Existing posts were updated correctly.
    • New posts were created as expected.
    • No duplicates were generated.
  • Open individual posts to confirm the content has been updated (only the fields you selected).

Update URLs and Permalinks

To maintain SEO rankings and prevent broken links, it’s crucial to match your old Ghost URLs with your new WordPress permalinks.

  • Go to Settings → Permalinks in your WordPress dashboard.
  • Choose a structure similar to your Ghost URLs, such as:
    /blog/postname/ 
  • Save changes.

Screenshot 18: Set Permalinks

Point Your Domain to WordPress

Once everything is imported and tested, it’s time to make your WordPress site live.

If You Used a Ghost Subdomain

If your old site was hosted on a Ghost-provided subdomain, you can’t directly redirect that domain to your new WordPress site.
Instead, update your Ghost site’s homepage with a banner notifying visitors that your website has moved to a new address.

If You Used a Custom Domain

If your Ghost site uses a custom domain like mynewwebsite.com, you can easily point it to your new WordPress hosting provider by updating the DNS settings.

Steps to Point Your Domain:

  • Log in to your domain registrar (GoDaddy, Namecheap, Google Domains, etc.).
  • Remove existing Ghost DNS/Nameserver records.
  • Add your new WordPress host’s nameservers or A record.
  • Wait for DNS to propagate (up to 24 hours).
  • Confirm your domain loads your WordPress site.

SEO, Plugins, and Final Checks

It’s time to fine-tune your new WordPress site for performance, visibility, and consistency.

1. Install Essential SEO Plugins

Ghost handles basic SEO, but WordPress gives you far more control.
Install a plugin like Yoast SEO or Rank Math to manage:

  • Meta titles and descriptions
  • XML sitemaps
  • Canonical URLs
  • Schema markup and social tags

If you’ve imported metadata from Ghost using WP All Import, verify that it appears correctly in your SEO plugin.

2. Check Internal Links and Redirects

Ensure all internal links point to the correct WordPress URLs.
Use a plugin like Better Search Replace to update any old Ghost URLs within posts.
Then, set up 301 redirects (using the Redirection plugin or your .htaccess file) to preserve SEO value from old Ghost links.

3. Reinstall Analytics and Tracking

Reconnect Google Analytics, Search Console, and any marketing or tracking scripts that were active on your Ghost site.

4. Optimize Speed and Performance

  • Install caching and optimization plugins like WP Rocket, LiteSpeed Cache, or W3 Total Cache.
  • Compress and serve images via Smush, EWWW Image Optimizer, or a CDN such as Cloudflare.

5. Test Responsiveness and Design

Check every page on mobile, tablet, and desktop to ensure layout, typography, and navigation look perfect.

Potential Challenges and How to Solve Them

  1. Content Structure Differences: Ghost uses a minimalist content model focused mostly on simple posts and tags, while WordPress supports complex content types, categories, and custom taxonomies. Mapping Ghost content properly during migration and using converter tools that maintain relationships helps avoid lost or miscategorized content.
  2. Broken URLs: Ghost’s permalink structure might differ from WordPress’s. Without proper 301 redirects, users risk broken links. Setting WordPress permalinks to reflect the original URLs and using redirection plugins like Redirection ensures SEO value is preserved.
  3. Theme and Design Differences: Ghost themes cannot be used in WordPress, and replicating your Ghost site’s look may require customization. Choose a modern WordPress block theme or page builder (like Gutenberg or Elementor) to recreate the layout.

See how we helped CARS24 Australia overcome migration challenges and preserve SEO in our Ghost CMS to WordPress migration case study.

Conclusion

Migrating from Ghost to WordPress isn’t just shifting your content; it’s leveling up to a platform built to grow with you. 

With a smooth import process, your posts, media, and SEO value come over cleanly, and WordPress gives you far more freedom to customize and expand your site. Whether you’re introducing new functionality or enhancing your digital presence, 

WordPress provides the freedom and control to shape your website exactly the way you want. You’re now set up on a platform that’s ready for the future.


Published on Jan 19, 2026 | Updated on Jan 19, 2026

Author

Anamika Kumari

Author

|

Reviewer

Author

Anamika Kumari

Author

|

Reviewer

If you have reached here. Hop onboard!

And get ready to do more with your website. Just click the button below and someone from our team shall get in touch with you.