Developer docs

Migrating from Substack

Migrate from Substack and import your content to Ghost with this guide

The Ghost Concierge team, at your service

Let us handle the Substack migration for you! This migration is included when you make an annual payment on the Ghost(Pro) Creator, Team, or Business plans. Send an email to to learn more and get started.

Exporting your subscribers

To get started, export your current Total Email List in CSV format. This exports your entire Subscriber list from Substack:

substack export

If you’re also migrating paid subscribers, you’ll need to export the Stripe ID’s of your customers by exporting the Subscribers list, which downloads a separate CSV with this information included.

Now you’ll have all of the the email subscriber and customer data required to migrate from Substack to Ghost.

Import subscribers to Ghost

We recommend preparing the data in your CSV using our guide on importing members in Ghost. Alternatively, we can do this work for you with any Ghost(Pro) Basic Annual plan.

Once you’re happy that you subscriber data is complete, under the Ghost Admin members settings, select the import option from the settings menu.

import members

Upload your CSV file to Ghost, and map each of the fields contained in your CSV to the corresponding fields in Ghost. The email field is required in order to create members in Ghost, while the other fields are optional.

Importing paid members

To import paid members with an existing Stripe subscription, you must import their Stripe customer ID.

import members

Once the import has completed, all your subscribers will be migrated to Ghost.

Importing subscribers with a comp or gift plan

If you’ve provided any of your subscribers with a free or gifted paid access to premium content in Substack, you can also give them free access to paid content in Ghost by importing their email address with the Complimentary Plan column flagged as true in your CSV import.

This provides these members with unlimited free access to premium content on your Ghost publication with an access level of paid-members only. If you’d like your members complimentary access to expire after a specific date, the easiest way to do this is to edit the complimentary subscription directly in Stripe and schedule the date the subscription should be cancelled.

import members

Removing Substack fees

Because of how Stripe works, disconnecting will not prevent Substack from continuing to take a 10% commission on all existing subscriptions. Substack have an official policy that you can contact them before leaving to have these fees removed.

Once fees have been removed, and you have completed your migration, you should disconnect Substack from Stripe - to prevent subscriptions from getting out-of-sync in future. You can do this by going to — and clicking on Revoke Access.

disconnect substack from stripe

Migrating Content

If you’re a developer, self-hosting Ghost, you can migrate content from Substack to Ghost using our migration CLI tools here.