Migrate from Ghost when you need more than a blog
Ghost is built for publishing, and it shows. When the site around the publication needs to grow, we rebuild it in Astro or Next.js with Sanity or Payload: your posts moved by API, your members and newsletter kept in a tool you choose, every URL kept or redirected.
Yegparian PLLC (opens in a new tab)Signs your site has outgrown Ghost
For a newsletter or a pure blog, Ghost is hard to beat. These are the moments teams tell us it stopped fitting the rest of the site.
The site needs more than posts
Product pages, case studies, events or a team directory end up as pages full of HTML cards, because the theme was built for articles.
The content model stops at posts and pages
Posts and pages, grouped by tags and authors. There are no custom fields, so structured content like prices, dates or locations lives in the body text.
The bill grows with your list
Ghost(Pro) plans are priced by member count. Custom themes, paid subscriptions and the Admin API start from the Publisher plan, and more staff seats from Business.
Every layout change is theme work
Ghost themes are Handlebars templates, uploaded as a zip. Editors can’t build a new kind of page without a developer changing the theme.
Self-hosting is more work than it looks
Leaving Ghost(Pro) means running Node and MySQL 8 yourself, and newsletters need a Mailgun account for bulk email.
What happens to your Ghost features
Pick what your site uses today. Each feature becomes part of the site itself, moves to a service you choose, or stays where it works.
- Posts and pagesDocuments in Sanity or PayloadEvery post and page moves by script through the Ghost Admin API or the JSON export, with images re-uploaded and internal links rewritten.
- Tags and authorsTaxonomies and author profilesTags, primary tags and authors keep their slugs, so archive URLs stay where they are.
- Content cardsStructured blocksGalleries, bookmarks, callouts, embeds and buttons become blocks your editors can reuse in any document.
- ThemeA component library in codeHandlebars templates become typed components. The same design, or a refresh, with new page types added as you need them.
- NewsletterYour own email platformSubscribers move by CSV to the email tool you choose, with sign-up forms built into the site. We scope this per project.
- Members and paid subscriptionsA membership tool you choosePaid members already sit in your own Stripe account. Logins and gated posts move to the membership or auth tool you pick.
- Native commentsA comments tool you chooseMember comments move to a hosted comments service, or are archived if the new site doesn’t need them.
- Webhooks and integrationsWebhooks from the CMSSanity and Payload send webhooks too, so Zapier, Make and your own automations keep working.
- routes.yaml and redirects.yamlRedirects in the configCustom routes and every old URL are mapped to their new home in the hosting config, versioned with the code.
What changes when you leave Ghost
Astro and Next.js decide how pages are built. Sanity and Payload are where your team edits. We recommend a pair after the audit, or tell you to stay.
| Feature | Astro + Sanity | Next.js + Payload | Ghost |
|---|---|---|---|
| Ownership | |||
| Code you own and can host anywhere | Open source, self-hostable | ||
| Full export of your content | |||
| Pricing tied to your member count | On Ghost(Pro) | ||
| Content | |||
| Custom content types and fields | Posts and pages | ||
| New page types without theme changes | |||
| Live preview while editing | |||
| Distraction-free writing editor | Rich text in the Studio | Rich text in the admin | |
| Publishing | |||
| Newsletter sending built in | Tool of your choice | Tool of your choice | |
| Paid memberships built in | Tool of your choice | Built in your app | |
| Custom server logic and APIs | Webhooks and integrations | ||
Sites we've already moved
Different stacks for different jobs: a law firm on Next.js and Payload, a residential launch and our own studio on Astro and Sanity.
Yegparian PLLC
WordPressNext.js + Payload
An Austin trial litigation firm. Practice areas, matters and insights are Payload collections, and every page is pre-rendered and served from the edge.
yegparianpllc.com (opens in a new tab)25 Cuba
WordPressAstro + Sanity
A new residential address in Canary Wharf. Apartments, amenities and galleries are edited in Sanity, and the site ships as static Astro pages.
25cuba.com (opens in a new tab)Celerart
WebflowAstro + Sanity
Our own studio site. Every one of the 164 old URLs was carried over or redirected, and all content is now edited in Sanity.
celerart.com (opens in a new tab)
How we move a Ghost site
Your Ghost site stays live until the new one is ready. The switch is a DNS change, not a weekend of downtime.
Audit
Audit
We crawl every URL, list every content card, route, integration and member feature, and export your rankings. If Ghost still fits, we say so.
Content model
Content model
Posts, pages, tags and authors become a clean schema in Sanity or Payload, plus the content types Ghost could not hold.
Content import
Content import
Posts and pages move by script through the Ghost Admin API or the JSON export. Cards become structured blocks, images are re-uploaded and internal links rewritten.
Front end
Front end
We rebuild the design in Astro or Next.js: the same look, or a refresh if one is due. Every template is checked against the live site.
Members, redirects and launch
Members, redirects and launch
Members move by CSV to the tools you chose. Every old URL gets a permanent redirect, and metadata, feeds and sitemaps are compared before the DNS switch.
Handover
Handover
Your team gets a walkthrough of the new editor. Then the Ghost(Pro) plan or your Ghost server can be retired.
Questions about leaving Ghost
Not always. If the site is a newsletter and a blog, Ghost does that very well, and a migration would cost more than it saves. We recommend moving when the site needs page types, content or logic that Ghost wasn’t built for. The audit will say which side you are on.
Not if the move is planned. Every URL keeps its address or gets a permanent one-hop redirect, including tag and author archives, and titles, descriptions, social images and structured data are carried over and checked before launch.
By script. Ghost exports content and settings as JSON, and the Admin API returns every post and page. We convert the cards into structured blocks, re-upload images and rewrite internal links.
Ghost exports members as a CSV with their labels and subscription status, and paid subscriptions already run through your own Stripe account. We move them to the newsletter and membership tools you choose, and plan the switch so nobody is charged twice or cut off.
Yes. Ghost has a read-only Content API, so the new site can show your posts while writers keep publishing and sending in Ghost. It is a good first step, and we scope it like any other migration.
Yes. Writers get a rich text editor with live preview, and in Sanity they can click any text on the preview to edit it. Editors also build new pages from approved blocks, without waiting for a theme change.
It depends on the number of posts, page types and member features. After the audit you get a fixed scope and timeline, and the Ghost site stays live until launch day.


