How to Migrate from Substack to Ghost

Move your Substack publication to Ghost without losing subscribers. Step-by-step guide covering content, paid members, Stripe, and what to watch for.

Why Publishers Leave Substack

Substack takes 10% of your subscription revenue plus Stripe fees. On Ghost, the platform fee is 0%.

At $5,000/month in revenue, Substack takes $500 every month. On Ghost, that $500 stays in your account. Over a year, that is $6,000 in savings — enough to cover Ghost(Pro) Publisher for over 17 years.

Beyond the fee, publishers migrate for design control (Substack’s design is uniform for everyone), SEO tools (Substack offers minimal SEO control), and data ownership (your subscribers, your platform, your terms).

This guide covers every step of migrating from Substack to Ghost while preserving your content, subscribers, and — critically — your paid memberships.

What Transfers

Ghost has official Substack migration support. The import tool handles:

ContentTransfers?Notes
PostsYesAll published and draft posts
ImagesYesInline images from posts
Free subscribersYesEmail addresses and names
Paid subscribersYesVia shared Stripe account (see below)
Post datesYesOriginal publication dates preserved
Post URLsYesSlugs preserved to maintain links

What Does NOT Transfer

ContentWhy Not
Substack NotesNotes are Substack-specific social features with no Ghost equivalent
Substack ChatChat history stays on Substack
Subscriber activity dataOpen rates, click history from Substack are not exported
Recommendation listsYour Substack recommendation network does not migrate
Custom subdomainYour .substack.com URL stays with Substack
Profile customizationsBio, avatar, and profile settings need to be recreated

The Stripe Connection: Key to Paid Migration

The most important part of this migration is handling your Stripe account correctly. Both Substack and Ghost use Stripe for payments. This shared infrastructure makes it possible to migrate paid subscribers without forcing them to re-subscribe.

How It Works

  1. Substack connected to your Stripe account when you set up paid subscriptions
  2. Ghost connects to the same Stripe account
  3. Ghost matches Substack subscribers to their Stripe customer IDs
  4. Existing subscriptions continue billing through Ghost instead of Substack

The Critical Step: Disconnect Substack from Stripe

After connecting Ghost to your Stripe account, you must disconnect Substack. If you do not:

  • Substack continues receiving its 10% fee on existing subscriptions
  • You may have two platforms trying to manage the same Stripe subscriptions
  • Subscribers could be double-billed

Contact Substack support to request disconnection from your Stripe account. This is not self-service — you need Substack to disconnect on their end.

Statement Descriptor

After migration, check your Stripe public details settings. The bank statement descriptor might still say “Substack” from the original setup. Update it to your publication name so subscribers see the correct name on their credit card statements.

Step-by-Step Migration

Step 1: Set Up Ghost

Before migrating, have your Ghost site ready:

  1. Sign up for Ghost(Pro) Publisher ($29/month) or set up a self-hosted instance
  2. Choose and install your Ghost theme
  3. Configure basic settings (site title, description, navigation)
  4. Connect your Stripe account to Ghost (Settings → Membership → Connect to Stripe)

Use the same Stripe account that is connected to your Substack. This is essential for paid subscriber continuity.

Step 2: Export From Substack

  1. In Substack, go to Settings → Export Data
  2. Download your content export (posts and subscriber data)
  3. Also download your subscriber CSV from the Subscribers tab

Note: Substack’s CSV exports can be inconsistent. Some exports are missing Stripe customer IDs for paid subscribers. Ghost’s import tool handles this by matching subscribers through the shared Stripe account, but verify your paid subscriber count after import.

Step 3: Import Into Ghost

  1. In Ghost Admin, go to Settings → Advanced → Labs
  2. Under Import content, select Substack
  3. Upload your Substack export file
  4. Ghost processes the import and matches paid subscribers to Stripe

Ghost’s Substack importer is purpose-built. It handles the content conversion, subscriber matching, and Stripe reconciliation in one step.

Step 4: Verify Content

After import, check:

  • Open 5-10 posts and verify content, images, and formatting
  • Verify post dates are correct
  • Check that post slugs match your Substack URLs (they should)
  • Confirm all images load properly

Step 5: Verify Subscribers

In Ghost Admin, check the Members section:

  • Total members: Should match your Substack subscriber count
  • Paid members: Should match your Substack paid subscriber count
  • Stripe connection: Verify paid members show correct Stripe subscription status

If paid subscriber counts do not match, check your Stripe Dashboard for subscriptions that may not have been matched. Ghost support can help resolve discrepancies.

Step 6: Set Up Your Newsletter

Configure your Ghost newsletter settings:

  1. Go to Settings → Newsletters
  2. Set your sender name and email
  3. Configure email design (header image, fonts, colors)
  4. On Publisher plan: set up a custom sending domain

Step 7: Disconnect Substack from Stripe

This is the step you cannot skip:

  1. Contact Substack support requesting disconnection from your Stripe account
  2. Verify in your Stripe Dashboard that Substack’s application is no longer connected
  3. Confirm Ghost is the only platform connected to your Stripe subscriptions

Step 8: Redirect Your Domain

If you were using a custom domain on Substack:

  1. Update DNS to point to your Ghost site
  2. Remove the domain from Substack’s settings

If you were on a .substack.com URL:

  1. There is no way to redirect from your Substack URL
  2. Publish a final post on Substack pointing readers to your new Ghost URL
  3. Consider keeping the Substack profile page active with a link to your new site

Step 9: Notify Your Subscribers

Send a newsletter through Ghost to all subscribers announcing the move:

  • Explain what changed (new platform, same content)
  • Note that their subscription is unaffected (billing continues normally)
  • Highlight any new features (archive on your domain, improved design)
  • Ask them to update any bookmarks to your new URL

Common Issues and Solutions

Some Paid Subscribers Not Matched

If Ghost cannot match a paid subscriber to their Stripe customer:

  1. Check the Stripe Dashboard for the subscription
  2. Manually add the member in Ghost Admin with the correct email
  3. Link them to their Stripe subscription

Substack Content Formatting Issues

Substack’s content format is simpler than Ghost’s. Some formatting may not convert perfectly:

  • Buttons: Substack subscribe buttons become text links
  • Embeds: Some third-party embeds may need to be re-added
  • Image captions: May need reformatting

Email Deliverability After Migration

Your first few Ghost sends may have lower deliverability as email providers learn your new sending infrastructure. To improve:

  • Set up SPF, DKIM, and DMARC records for your custom sending domain
  • Start with your most engaged subscribers
  • Monitor open rates and check for spam folder placement
  • Gradually increase send volume

After Migration

Set Up SEO

Your Substack posts had minimal SEO optimization. Now on Ghost, you can:

  • Add custom meta titles and descriptions to your most important posts
  • Verify your sitemap at yourdomain.com/sitemap.xml
  • Submit your sitemap to Google Search Console
  • Set up proper canonical URLs

Every post is now a permanent, indexable web page on your domain — building search traffic that Substack never provided.

The Revenue Math

Calculate your annual savings:

Monthly RevenueSubstack Fee (10%)Ghost(Pro) PublisherAnnual Savings
$1,000$100/mo$29/mo$852/year
$3,000$300/mo$29/mo$3,252/year
$5,000$500/mo$63/mo$5,244/year
$10,000$1,000/mo$88/mo$10,944/year

The savings grow with your revenue. Ghost’s fixed pricing means success is not punished with higher platform fees.

Your New Publication Identity

The most visible change after migration is design. Every Substack looks the same. Your Ghost publication looks like yours.

Rune Ghost theme with dark mode and featured post highlights

Our themes are built for publishers migrating from Substack who want their brand to stand out. Starting at $69, with dark mode, 46 language translations, and membership pages.

Browse Ghost themes →

For the complete Ghost vs Substack comparison, see our detailed analysis.