Platform Migrations · · 5 min read

Migrating from WordPress to Ghost in a Weekend

We migrated our entire website from WordPress to Ghost in just one weekend—135 blog posts, 32 custom pages, and a fully redesigned homepage. Here's how we did it, what we customized, and why Ghost is a better (though not perfect) fit for our team.

three wireframe drawings of a website
Photo by Hal Gatewood / Unsplash

After a decade of running the FireOak website on WordPress, we were ready for a change. The plugins, the patches, the creeping bloat—it all added up. We wanted something faster, more streamlined, and easier to maintain. So, in a single weekend, we migrated our entire site from WordPress to Ghost.

Here’s how we did it, what worked well, what didn’t, and why we still think the trade was worth it.


Why Move at All?

Our WordPress setup had become a bloated, slow mess. Every improvement seemed to require another plugin or paid subscription: Elementor for page building, Gravity Forms for forms, WordFence for security, and the list kept growing. Between the plugin overhead, constant updates, and performance issues, the site was more of a burden than a tool.

We wanted a platform that was faster, simpler, and didn't nickel-and-dime us for every core feature. Ghost gave us that.


How We Pulled Off a Full Migration in a Weekend

We divided the work between two people:

While blog posts were imported programmatically, Abby (intentionally) recreated all of our static pages by hand, using Ghost’s editor to rebuild them with fresh layouts and updated content.


Ghost Isn’t Really Designed for Company Websites

Here’s something we wish we had known going in: Ghost is really good at blogs and newsletters. It's not so great at static websites.

Specifically:

To make Ghost work for our needs, we had to get creative. Our homepage is a hybrid: part dynamic content controlled through the admin panel, part custom-built layout using a heavily edited template from the Flair theme. It was more work than we expected, but we’re happy (enough) with the result.


Theme Setup & Routing

We used the premium Flair theme as our base – not because it was flashy, but because it was clean and had some homepage customization, plus native support for drop-down menus and larger footers. We uploaded a custom routes.yaml file to get proper routing for pages like the home page, and we created a separate routing for a blog page.


The Homepage

To make the homepage work the way we wanted, we had to dig into the theme’s template files and customize them—especially to blend static content blocks with dynamic post feeds. That kind of control was necessary to make the site feel more like a company website than a personal blog.

We made extensive style updates to the homepage. While the Flair theme gave us a solid foundation, we heavily customized fonts, layout spacing, button styles, and homepage sections to match our brand. The homepage, in particular, involved blending Flair’s native homepage configuration with custom HTML and CSS injected through Ghost's code injector. We also adjusted color schemes, added subtle animations, and fine-tuned the mobile experience. Almost every visible element—from the hero section to the footer—was restyled in some way to create a site that feels uniquely ours.

As much as possible we tried to make customization in the code injector to protect the changes as the theme is updated. However, we did have to directly edit a few theme files. We have recorded what changes were made so when the theme is updated, we know what edits we need to make.


Automating Content Migration with Make.com

Manual migration of 135 blog posts wasn’t an option. We used Make.com with their new AI Agent modules to develop automation scenarios to:

  1. Scrape content from WordPress, including slugs and tags
  2. Strip out all of the WordPress-related CSS and HTML
  3. Re-encode the posts in clean HTML
  4. Push the cleaned-up version of each post directly into our new Ghost instance

It saved us a massive amount of time and let us focus on higher-value tasks like rewriting pages, adding new content, and refining the site’s design.


The Real Win: More Time for Content

One of the biggest benefits of switching to Ghost is something simple: we can finally focus on publishing again.

In WordPress, creating a blog post often meant navigating a slow, overloaded admin panel, dealing with clunky blocks, and dodging plugin errors. It was such a hassle that we barely posted at all.

Now, with Ghost’s fast editor and intuitive workflows, we’re excited to get back to writing. No distractions, no updates to manage—just content.


What We Like About Ghost (Still)

Even with its quirks, Ghost is a breath of fresh air:

It does one thing—content—and it does it well.


What We Don’t Love

Ghost isn’t perfect. A few things we’d caution others about:

That said, we’d still rather deal with these constraints than go back to patching plugins and dodging security vulnerabilities every week.


Final Thoughts

This project was fast, but not easy. We sprinted through content migration, page rebuilding, template editing, and visual polish in just a few days. The end result? A cleaner, faster, easier-to-maintain site that better reflects how we work today.

Ghost isn’t for everyone. But if your site is content-driven, and you’re comfortable customizing a theme or two, it’s absolutely worth considering.

We’re glad we made the switch—and even more excited to finally get back to blogging.

Read next

CTA