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:
| Content | Transfers? | Notes |
|---|---|---|
| Posts | Yes | All published and draft posts |
| Images | Yes | Inline images from posts |
| Free subscribers | Yes | Email addresses and names |
| Paid subscribers | Yes | Via shared Stripe account (see below) |
| Post dates | Yes | Original publication dates preserved |
| Post URLs | Yes | Slugs preserved to maintain links |
What Does NOT Transfer
| Content | Why Not |
|---|---|
| Substack Notes | Notes are Substack-specific social features with no Ghost equivalent |
| Substack Chat | Chat history stays on Substack |
| Subscriber activity data | Open rates, click history from Substack are not exported |
| Recommendation lists | Your Substack recommendation network does not migrate |
| Custom subdomain | Your .substack.com URL stays with Substack |
| Profile customizations | Bio, 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
- Substack connected to your Stripe account when you set up paid subscriptions
- Ghost connects to the same Stripe account
- Ghost matches Substack subscribers to their Stripe customer IDs
- 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:
- Sign up for Ghost(Pro) Publisher ($29/month) or set up a self-hosted instance
- Choose and install your Ghost theme
- Configure basic settings (site title, description, navigation)
- 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
- In Substack, go to Settings → Export Data
- Download your content export (posts and subscriber data)
- 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
- In Ghost Admin, go to Settings → Advanced → Labs
- Under Import content, select Substack
- Upload your Substack export file
- 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:
- Go to Settings → Newsletters
- Set your sender name and email
- Configure email design (header image, fonts, colors)
- On Publisher plan: set up a custom sending domain
Step 7: Disconnect Substack from Stripe
This is the step you cannot skip:
- Contact Substack support requesting disconnection from your Stripe account
- Verify in your Stripe Dashboard that Substack’s application is no longer connected
- 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:
- Update DNS to point to your Ghost site
- Remove the domain from Substack’s settings
If you were on a .substack.com URL:
- There is no way to redirect from your Substack URL
- Publish a final post on Substack pointing readers to your new Ghost URL
- 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:
- Check the Stripe Dashboard for the subscription
- Manually add the member in Ghost Admin with the correct email
- 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 Revenue | Substack Fee (10%) | Ghost(Pro) Publisher | Annual 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.

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.
For the complete Ghost vs Substack comparison, see our detailed analysis.
Recommended Themes
These themes excel at the features discussed in this article.
Luxe Themes
