# Migrate from Ghost: Export, Import, Redirects and What to Check After
Author: Sai Krishna
Author URL: https://superblog.ai/blog/author/sai-krishna/
Published: 2026-11-04
Category: Migration
Category URL: https://superblog.ai/blog/category/migration/
Meta Title: How to Migrate from Ghost (2026 Guide) | Superblog
Meta Description: Migrate from Ghost without losing rankings: what to export, how the import works, how to map old URLs to /blog, and the checks to run after cutover.
Tags: blogging, SEO, subdirectory, migration, managed blog
Tag URLs: blogging (https://superblog.ai/blog/tag/blogging/), SEO (https://superblog.ai/blog/tag/seo/), subdirectory (https://superblog.ai/blog/tag/subdirectory/), migration (https://superblog.ai/blog/tag/migration/), managed blog (https://superblog.ai/blog/tag/managed-blog/)
URL: https://superblog.ai/blog/migrate-from-ghost/

To migrate from Ghost cleanly, you need three things in the right order: a full backup of your Ghost site, an import that keeps your post slugs, and a redirect plan for every URL that changes. This guide covers all three for Ghost(Pro) and self-hosted Ghost, plus the checks to run in the week after cutover.

It is written for companies whose Ghost blog exists to bring in search traffic and leads. If your Ghost site is a paid newsletter business, read the "Stay on Ghost" section near the end first. It may save you a move.

## Before you migrate from Ghost, split the product into parts

Ghost is several products sharing one admin: a blog, a member database, a newsletter sender and a paywall. A migration goes smoothly when you decide up front where each part lands. Most teams that leave are keeping only the first one.

Ghost componentWhat it holdsWhere it usually goesPostsArticles, tags, featured imagesYour new blog platformPagesAbout, contact, landing pagesYour main website, or rebuilt by handMembersEmail list, labels, paid statusYour email or CRM tool, via Ghost's CSV exportNewslettersScheduled email sendsYour email toolPaid tiersStripe subscriptionsStays on Ghost, or endsTheme and code injectionDesign, scripts, tracking tagsRebuilt on the new platform

Three questions settle the plan:

1. **Where will the blog live?** On the same domain ( `yoursite.com`), on a subdirectory ( `yoursite.com/blog`), or on a subdomain ( `blog.yoursite.com`). This decides how many URLs change. Our [subdomain vs subdirectory breakdown](https://superblog.ai/blog/subdomain-vs-subdirectory/) covers the SEO side.
2. **Who owns the member list after the move?** Export it before you cancel anything.
3. **Do any posts earn revenue behind a paywall?** Those need a decision of their own, not a default.

## Step one: take a complete backup out of Ghost

Do this even if your new platform pulls content directly. The backup is your rollback and your source of truth for redirects.

In Ghost Admin, open **Settings → Advanced → Import/Export**, switch to the **Export** tab and choose **All data**. As of November 2026, Ghost's [export help page](https://ghost.org/help/exports/) lists these options:

- **Content and settings:** posts, pages, tags, tiers and settings, as one JSON file.
- **Members:** every member with their labels and subscription status, as a CSV.
- **Post analytics:** sends, opens, clicks and conversions per post, as a CSV.
- **Themes:** every installed theme as its own zip, custom code included.
- **Redirects and routes:** your `routes.yaml` and `redirects.yaml` files.
- **Media files:** images, video and audio. Ghost marks this one "Available on Ghost(Pro)".

On Ghost(Pro), the export is built in the background and Ghost emails you a download link. Ghost's page says "The link is valid for 7 days." On a self-hosted install, the zip downloads in the browser, and media is not in it: you copy images from your server instead.

Keep `redirects.yaml` somewhere safe. Any redirects you already run on Ghost have to be recreated on the new setup, or links that currently work will start returning 404s.

Also save a copy of your live sitemap. Ghost serves a sitemap index at `/sitemap.xml` that points to separate files for posts, pages, tags and authors. That list of URLs becomes your redirect checklist later.

## Three ways out of Ghost

### 1\. Superblog: direct import over Ghost's Content API

Superblog pulls your posts straight from your running Ghost site. There is no file to export, convert or upload for the posts themselves.

**What you enter.** In Superblog, open **Dashboard → Data** and choose Ghost. The import form asks for three things:

1. **Ghost blog address.** Use the API URL Ghost shows you on the integration screen (next step). Ghost's own [Content API docs](https://docs.ghost.org/content-api) warn: "Your admin domain can be different to your site domain." On Ghost(Pro), the admin domain is your `*.ghost.io` address.
2. **Content API key.** Ghost's docs explain where it comes from: "Obtain the Content API URL and key by creating a new `Custom Integration` under the **Integrations** screen in Ghost Admin." The key is read-only.
3. **API version.** Leave it on the default the form preselects.

One plan check before you start. As of November 2026, Ghost's [pricing page](https://ghost.org/pricing/) marks custom integrations as not included on the Starter plan, while listing Content API access on every plan. If your Ghost Admin will not let you add a custom integration, sort that out on the Ghost side before you begin.

The import then runs in the background and Superblog emails you when it finishes. One run handles up to 20,000 posts.

**What comes across:**

- Every published post with its title. Public posts arrive with their HTML body. Members-only and paid posts need the extra step described below.
- **The original slug.** Each post keeps the `slug` value Ghost stored for it, so `/onboarding-emails-that-convert/` stays `/onboarding-emails-that-convert/`.
- All tags on each post. Ghost's primary tag also becomes the post's category in Superblog.
- The featured image and the images inside each post, downloaded and re-served from Superblog's CDN when the site has a paid plan (more on that below).
- A post date from Ghost, not the import date. The importer uses the timestamp Ghost recorded when each post was created. If a post sat in drafts for weeks before it went live, its date in Superblog will be the earlier one, so check your long-drafted posts.
- Public posts arrive published. Posts set to members-only or paid visibility arrive as **drafts**, so nothing gated goes public by accident. Their bodies come across empty, or cut off where the public preview ends. Ghost's Content API serves gated content only to logged-in members, and the importer connects with a key, not as a member. Copy the full text of each gated post from Ghost Admin before you publish it.
- Public posts that contain individual members-only content blocks arrive without those blocks, for the same reason. Check any post where you gated a section.

**What stays behind:**

- **Drafts and scheduled posts.** Ghost's Content API, in Ghost's words, "delivers published content to the world." Unpublished and scheduled posts are not part of it. Copy them into Superblog by hand.
- **Pages.** Only posts are imported. Rebuild your About or landing pages on your main site.
- **Meta titles and meta descriptions.** The Ghost importer does not map these fields today. Re-enter them for your top traffic posts first.
- **Authors.** Imported posts all carry the byline of whoever started the import. If several people wrote for your Ghost blog, reassign each post to its writer.
- **Members, newsletters, paid tiers, comments, theme and code injection.** None of these are blog content, and none of them move.

**Run the import on a paid plan.** Image copying only happens on an active subscription. On a trial, imported posts keep loading images from your old Ghost site, which looks fine until that site is switched off. Re-running the import later does not fix it, because a re-run skips any post whose slug already exists. The dashboard warns you about this before a trial import starts. Pro is $49/month and holds up to 1,000 posts; Super is $99/month for larger archives. You are covered by a 30-day money-back guarantee.

What you get after the move: the blog served from `yoursite.com/blog` on every paid plan, JSON-LD schemas, XML sitemaps, IndexNow pings on publish, an llms.txt file plus a markdown copy of every post, and pages that score 90+ on Lighthouse. Nothing to patch or update. If you are still weighing the platforms side by side, the [Superblog vs Ghost comparison](https://superblog.ai/compare/superblog-vs-ghost) lays out pricing and features, and the [Ghost alternative for business blogs](https://superblog.ai/ghost-alternative-blog) covers the switch from the blog side.

### 2\. WordPress: convert the JSON export

Moving to WordPress starts from the content JSON in your Ghost backup. WordPress does not read that file as is, so the usual route is a conversion tool or plugin that turns Ghost's JSON into something WordPress can import, followed by a separate pass to bring images across.

This path suits teams that want WordPress's plugin and theme catalog and have someone to run it. You take on hosting, updates, security patches and an SEO plugin stack. Slug continuity depends on the converter you choose, so test it on a handful of posts before running the full archive.

### 3\. A static site generator or headless setup

Developers sometimes convert the Ghost JSON into Markdown files for Hugo, Jekyll or Astro, or move the content into a headless CMS. You get full control of the code. You also take on the build pipeline, hosting, image handling, sitemaps and structured data yourself, and every future post goes through a deploy.

### How the three routes compare

SuperblogWordPressStatic generator / headlessImport methodContent API key, no fileConvert JSON, then importConvert JSON to MarkdownPost slugsKept from Ghost's `slug` fieldDepends on the converterDepends on your scriptImagesCopied to CDN on a paid planSeparate stepSeparate step`yoursite.com/blog`Every paid plan, with one rewrite rule generated for your stackReverse proxy you configureReverse proxy you configureOngoing maintenanceNoneUpdates, plugins, hostingBuilds, hosting, dependencies

For more options, including newsletter-first platforms, see our [Ghost alternatives roundup](https://superblog.ai/blog/best-ghost-alternatives/).

## Mapping old Ghost URLs to the new blog

Ghost's default routing puts every post at the root of the site. Ghost's [routing docs](https://docs.ghost.org/themes/routing) show the default collection with `permalink: /{slug}/`. Tag archives live at `/tag/{slug}/`, author archives at `/author/{slug}/`, and feeds are reached by adding `/rss/` to a collection URL.

How much redirect work you face depends on where the blog lands.

### Case A: the whole domain moves to the new platform

If `yoursite.com` was Ghost and becomes Superblog, post URLs line up because the slugs carry over. Superblog also uses `/tag/{slug}/` for tag archives. You only need redirects for the items below. Superblog serves the whole domain in this case, so these go in its redirect manager (covered below).

- Ghost pages you rebuilt elsewhere ( `/about/` and similar).
- Author archives, since author slugs are set fresh after import.
- The feed: point `/rss/` at Superblog's `/rss.xml`.
- Anything already listed in your old `redirects.yaml`.

### Case B: the blog moves from the root to /blog

This happens when your main website takes over the root of the domain and the blog moves under it. It changes every post URL.

Old Ghost URLNew URL`yoursite.com/onboarding-emails-that-convert/``yoursite.com/blog/onboarding-emails-that-convert/``yoursite.com/tag/pricing/``yoursite.com/blog/tag/pricing/``yoursite.com/rss/``yoursite.com/blog/rss.xml`

Because the slugs survive the import, one pattern rule covers the posts: 301 any old post path to the same slug under `/blog/`. Write that rule where the root of your domain is served, which is your main site's host or your CDN, not the blog platform. A rule that only matches paths in your saved post sitemap is safer than a catch-all, since a catch-all would also capture your new homepage routes.

The [subdirectory hosting guide](https://superblog.ai/blog/subdirectory-blog-hosting/) shows how to route `/blog` on Next.js, Vercel, Nginx, Cloudflare and Netlify.

### Case C: blog.yoursite.com moves to yoursite.com/blog

This is the move that brings the blog's links and traffic onto the main domain. Keep the subdomain's DNS alive after the move and 301 every path on it to the matching `/blog/` URL. If the subdomain stops resolving, the redirects stop too, and the authority those links earned goes with them.

Run these 301s on something that outlives Ghost. Use a redirect rule at your DNS provider or CDN (Cloudflare, for example, offers [Single Redirects](https://developers.cloudflare.com/rules/url-forwarding/single-redirects/) for pattern rules and [Bulk Redirects](https://developers.cloudflare.com/rules/url-forwarding/bulk-redirects/) for long lists), or a server you keep. Redirects set inside Ghost stop working the day you cancel Ghost. Superblog's redirect manager only covers paths on the domain Superblog serves, so it cannot redirect the old subdomain.

### Redirects inside the blog

For changes inside the blog itself, such as a slug you rename during cleanup, Superblog has a redirect manager under its advanced settings that creates 301s from an old path to a new URL.

## First-week checks after a Ghost cutover

Work through these in the first week after cutover:

01. **Test old URLs from your saved sitemap.** Every post URL should return one 301 to its new address, then a 200. Fix chains and 404s first.
02. **Re-enter meta titles and descriptions** on your highest-traffic posts. They do not come across from Ghost.
03. **Rebuild the drafts that were members-only posts.** Their bodies arrived empty or cut off at the public preview. Paste the full text from Ghost Admin, then publish, rewrite or retire each one.
04. **Spot-check dates** on posts that sat in drafts for a long time before publishing.
05. **Reassign authors** if your Ghost blog had more than one writer.
06. **Confirm images load from the new CDN,** not from your old Ghost domain. If they still point at Ghost, the import ran before your plan was active.
07. **Fix internal links in post bodies.** Links between your own posts still point at the old Ghost URLs. Redirects catch them, but direct links are faster for readers and crawlers.
08. **Submit the new sitemap in Google Search Console** and watch the Pages report for the next few weeks. Superblog builds the sitemap on every deploy and pings IndexNow when you publish. Our [IndexNow explainer](https://superblog.ai/blog/indexnow-for-blogs/) explains which search engines that reaches.
09. **Re-add tracking scripts** from Ghost's code injection to the new platform's header settings.
10. **Keep Ghost running until the checks pass.** Cancel Ghost(Pro) or shut down the server only after the old URLs redirect correctly and your images live on the new CDN.

## Stay on Ghost if your members are the business

Ghost does some things Superblog does not do, and you should not leave for a blog platform if those things pay your bills.

**Stay on Ghost if:**

- **Paid subscriptions are your revenue.** Ghost runs paid tiers and member billing through its Stripe integration. Superblog does not charge readers.
- **Your newsletter is the product.** As of November 2026, Ghost's pricing page states: "All plans include unlimited email sends with no restrictions." Superblog does not send newsletters.
- **You manage members inside Ghost.** Labels, tiers, member-only posts and gift links are built into Ghost's admin.

**What Superblog offers instead** is lead capture for a business blog. You can place a form under each post, in the post sidebar, or in an exit-intent popup that appears only on post pages. Each one asks readers for an email address or a phone number. You get an email notification for each lead. On Super, webhooks and Zapier push each signup into the email or CRM tool you already use.

Our [Ghost blog SEO guide](https://superblog.ai/ghost-blog-seo) covers what to tune if you decide to stay.

## FAQ

### Do I need to export a file from Ghost to import into Superblog?

No. Superblog reads your posts over Ghost's Content API using a key from a custom integration. Take the Ghost export anyway as a backup and for your member list.

### Will my Ghost post URLs stay the same?

The slugs stay the same. The full URL only changes if the blog's location changes, for example from `yoursite.com/post/` to `yoursite.com/blog/post/`. In that case, 301 each old URL to its new address.

### Does the import work for self-hosted Ghost?

The importer talks to Ghost's Content API, which self-hosted installs also expose. Create a custom integration in your Ghost Admin and use its API URL and key.

### Can I bring my Ghost members to Superblog?

No. Superblog has no member database. Export members as a CSV from Ghost and load them into your email tool.

### How long does a Ghost import take?

Usually 10 minutes or less. An archive with lots of images can run to half an hour, because each image is copied to the CDN. You get an email when it is done.

## Plan the move, then start the import

Take the full backup, decide where the blog will live, and save your sitemap. After that, the import itself is a URL and a key. [Compare plans](https://superblog.ai/pricing), and use the 7-day free trial to set up your design. Subscribe before you connect `yoursite.com/blog` and run the Ghost import: trial sites cannot connect a subdirectory, and images only move to Superblog's CDN on an active paid plan.


---
This blog is powered by Superblog. Visit https://superblog.ai to know more.
---

