Migrate From Ghost to WordPress

If you’ve had about enough of Ghost and want to move to a more robust and often more comfortable blogging platform, here’s how to migrate from Ghost to WordPress, step by step. 🚶‍♂️

Don’t get me wrong – Ghost is a great software solution overall, but it’s also a bit more challenging to get started with – especially if you’re not very code-savvy and/or you’re on a budget.

This guide covers the exact actions to take if you want to move your blog from Ghost to WordPress. Specifically:

What to consider when you migrate from Ghost to WordPress

When moving to a new website platform, you need to take care of a couple of specific elements before you can consider your site fully moved.

Here’s what we’re going to migrate as part of the process:

  • your blog posts from Ghost
  • sub-pages
  • images and media
  • the address of the blog itself

All of the above can be done even if you’re not particularly experienced with website platforms, but Ghost certainly doesn’t make things easy. In fact, there are really no plug-and-play tools to help you with the migration. This does require some improvisation on your part.

But worry not, we take you through the entire process here.

⚠️ Before you begin, you should have a working WordPress install running on your target server – the place you’re going to be moving your Ghost content into. If you need help installing WordPress, follow this guide.

1. Import your blog posts via JSON or RSS

We’re going to start by exporting your blog posts out of Ghost.

You can do this in two ways:

  • either use Ghost’s native export feature to a JSON file, or
  • grab the RSS feed of your blog and use that to migrate from Ghost to WordPress

We’re going to start with the RSS route first, and then show you how to deal with the JSON file.

The reason we’re not talking JSON first is that this type of file is only “kind of” helpful if you attempt to then move it to a WordPress site. WordPress just can’t read a JSON file by default. Making it useful requires some workarounds. That’s why we’re going RSS first.

Alternative (a): How to import your Ghost blog content via RSS

To begin with, you’re going to need a plugin of ours called Feedzy. The pro version of the plugin has a feature called “Feed to post.” It allows you to take any RSS feed from the web and import the content to your site as blog posts.

Once you get your hands on Feedzy, you can install it like any other WordPress plugin (here’s a guide to help you out).

With the plugin installed, go to Feedzy RSS → Import Posts.

New import when you migrate from Ghost to WordPress

Enter your Ghost blog’s RSS feed URL into the box. For most Ghost websites, that URL is: https://YOURDOMAIN.com/rss/

On the next page, make sure you select the following option:

import

(It tells Feedzy to import all content items available.)

Next, assign the individual elements from the feed to their corresponding values in the WordPress database. Here’s a cheatsheet what to select:

import options best settings

At this stage, you can activate the import. Go back to the main Feedzy panel in the WordPress dashboard and click on Run Now to get the import going.

You should see a confirmation like this after a minute or so:

Posts migrated from Ghost to WordPress

This means that the import has been done successfully. Since all content has now been fetched, you can disable the ongoing import by clicking on the green toggle button.

When you now go to the Posts menu in your WordPress dashboard, you should see all the blog posts imported over from Ghost.

Alternative (b): How to import your Ghost blog content via JSON

Note; skip to step no.2 if you’ve already imported your Ghost content using the RSS method described above.

To go the JSON route when you migrate from Ghost to WordPress, you first need to get the export file from Ghost itself.

Log in to your Ghost user panel, and then go into Labs. Click on the Export button next to the Export your content label.

Imports and exports in Ghost

A short moment later, your JSON export file will be saved to your desktop.

To use that file for WordPress import, you first have to convert it to a format that WordPress can understand. Unfortunately, there are no official tools for this from the WordPress crew.

Luckily, there are some great developers in the WordPress community, and one of them, Ahmed Amayem, has come up with a working solution. You can use the latest working version of the converter on Amayem’s website here, or, if you’re interested, you can get the source code from GitHub.

Just paste your JSON file content into the box on Amayem’s website, grab the output from the other box and save it as an XML file.

You can now take this XML file and import it via your WordPress dashboard. While in the dashboard, go to Tools → Import, click on Install Now in the WordPress section. This will install a dedicated WordPress importer plugin. Click on Run Importer.

run importer in WordPress

Choose the XML file from your desktop and click on Upload file and import.

upload your import file

After a couple of seconds, your Ghost blog posts should be imported into your WordPress site.

2. Import your Ghost pages

Apart from blog posts, many users also have pages as part of their Ghost websites. If that’s the case with your site, you will probably want to move those pages to WordPress as well.

Unfortunately, again, there’s no ready-made mechanism you can use to handle this task. To make it happen, we have to get our hands dirty and move the contents of those pages somewhat manually.

We’re going to use an additional tool to do that: Elementor. Elementor is a free WordPress plugin that provides you with an advanced page building interface that’s fully visual and enables drag-and-drop. Read more about Elementor here.

You can install Elementor like any other WordPress plugin.

With Elementor installed, go back to Ghost and go through your pages one by one. Your task is to recreate each page in Elementor. Yes, you’re going to be doing this manually, but it shouldn’t be such a pain since Elementor is really easy to use. You can move most content via simple copy-paste operations, and then rebuild the design of your pages using Elementor’s features.

To help you out, here are some tutorials on using Elementor:

3. Take your images and migrate from Ghost to WordPress

At this stage, we’ve taken care of importing your text content from Ghost to WordPress. The thing to do now is import your images as well.

We’re going to do that with another new plugin: Auto Upload Images.

What this plugin does is simple: whenever you save a blog post, the plugin will scan the image URLs in that post and upload all of the missing images to your server. In other words, it will take the images from your Ghost site and import them to WordPress.

With the plugin installed, go to Settings → Auto Upload Images. Without doing anything else, click on the Save Changes button.

This plugin only does its job upon saving a blog post. This means that we somehow have to trigger it to work and scan through our imported posts.

Go to your Posts section in the WordPress dashboard and select all posts by checking the box on the top of the page:

select all images to migrate from Ghost to WordPress

Click on Bulk Options and choose Edit from the drop-down.

Click on Apply.

You’ll see a bigger panel where all you have to do is click on the Update button.

update all

This will trigger the Auto Upload Images plugin to scan through your posts and import all images.

4. Redirect your Ghost blog to WordPress

The last step is to make sure that when visitors go to your blog on Ghost, they’re going to be automatically redirected to your new setup running on WordPress.

Luckily, this is just a simple tweak to make with your domain registrar. A domain registrar is where you first bought the domain name that’s used by your blog on Ghost.

All you have to do is go to your registrar, log in to your user panel, and redirect that domain name to your new server – the one that runs your WordPress website.

Based on who your registrar is, sometimes you can do this change yourself, but sometimes you’ll have to reach out to the support team so that they can handle the task for you.

With the domain redirected on the registrar level, you now have to make sure that the server that’s hosting your WordPress website is ready to “receive” that domain name.

If you’re hosting your WordPress site on SiteGround, as we recommend, you can do this operation very quickly. Follow this guide. If you host your site elsewhere, search for a similar guide on your host’s website, or reach out to their support team and ask them to assist you.

When you take care of these steps, you’ve basically completed your migration from Ghost to WordPress!

Keep in mind that those server and domain changes need up to 48 hours to propagate, so don’t be alarmed if you can’t see your WordPress blog yet when checking out its website address via the web browser.

Done!

I hope you’ve managed to migrate from Ghost to WordPress smoothly! Since you’re now a member of the WordPress community, you might be interested in learning more about the platform and finding out how to use it effectively.

An excellent place to start is to pick yourself a great-looking theme (design) that will give your blog a fresh new look. Check out this roundup of the best and most popular WordPress themes out there.

Another thing that makes WordPress what it is are plugins (small add-ons that extend the functionality of your WordPress site). Here’s a list of what we consider to be must-have plugins.

Want more? Okay, here’s:

0 Comments
Inline Feedbacks
View all comments

Or start the conversation in our Facebook group for WordPress professionals. Find answers, share tips, and get help from other WordPress experts. Join now (it’s free)!