Comes across
- Posts and pages, through the JSON export
- Tags, authors and publish dates
- Excerpts, feature images and canonical URLs
- Post URLs, which are flat on both sides
Ghost has a clean JSON export, so the writing is the easy part. Members, paid subscriptions and the theme are the project, and they are the three things the export does not carry.
Most migration disputes come from this list being assumed rather than agreed. So we agree it first.
The CSV gives you email addresses and tiers. The subscriptions behind them sit in Stripe attached to the Ghost integration, so they have to be re-mapped onto the new accounts deliberately. On a paid publication that is the migration, not a detail of it.
The export is content only. Image files live separately and the JSON refers to them by path, so importing the JSON on its own produces posts full of broken images. Files move first, then the references get rewritten.
Posts are stored as structured documents, so bookmarks, galleries, toggles and embeds are cards rather than markup. A naive import flattens them into plain paragraphs or drops them entirely. Each card type gets mapped to a block instead.
Every URL currently indexed, exported to a sheet. This becomes the redirect map and the definition of done.
What the platform gives us, compared against what the crawl found. The difference is the rebuild, and it gets priced before we start.
The new site goes up somewhere private, with real content imported, so you review the actual thing rather than a mockup.
Old URL to new URL, one row at a time, tested as 301s on staging before anything points at production.
DNS moves, then we monitor crawl errors and traffic for the fortnight that follows, because that is when problems surface.
Something not covered here? Ask us directly and an engineer will answer.
Ask a questionFrom Ghost we can bring over: posts and pages, through the JSON export; tags, authors and publish dates; excerpts, feature images and canonical URLs; post URLs, which are flat on both sides. Everything else on the site has to be rebuilt, and we agree which is which before quoting.
The parts with no equivalent on the other side: the theme, because Handlebars templates have no WordPress equivalent; members, tiers and the Stripe connection behind them; newsletters, and whatever was sending them; custom routing from routes.yaml, and any collections it defines. This is where the cost sits, so it is priced up front rather than discovered halfway through.
Not if the redirects are done properly. We crawl every URL that is currently indexed, map each one to its new address, and test those as 301s on staging before anything points at production. Then we watch crawl errors and traffic for the fortnight after cutover.
The CSV gives you email addresses and tiers. The subscriptions behind them sit in Stripe attached to the Ghost integration, so they have to be re-mapped onto the new accounts deliberately. On a paid publication that is the migration, not a detail of it.
The export is content only. Image files live separately and the JSON refers to them by path, so importing the JSON on its own produces posts full of broken images. Files move first, then the references get rewritten.
We will crawl it, work out what the export actually gives us, and come back with a fixed price and the redirect map included.
A free audit first
We'll look at your site and tell you straight what needs doing.
Fixed scope, fixed price
Agreed in writing before any work starts. No hidden fees.
A real engineer on the call
You talk to the people who do the work, not a sales script.
Ask anything you’d like cleared up: how we work, what we build, or the projects we have delivered.
Popular questions