Moving From Substack to Ghost, Including the Paying Part

MIGRATIONMoving From Substack to Ghost,Including the Paying Part
On this page

The Substack side of this move is genuinely easy. Export your posts, export your subscribers, import both into Ghost, point the domain. An afternoon.

Then you get to the paying subscribers, and the afternoon ends.

Every migration guide covers the first part in detail and treats the second as a footnote. It is not a footnote. It is the entire risk in the move, and it is better understood before you start than discovered in the middle.

What comes across and what does not

Your export gives you the posts and the subscriber list, and the list marks who was paying.

That is a record of a payment relationship. It is not the relationship.

A subscription is an authorisation the reader gave to charge a card, held by whoever took the payment. It lives at the payment processor, attached to the platform’s account, and it is not a field in a CSV. Nobody can hand it over, which is worth stating plainly because it sounds like the kind of thing that ought to be possible.

So the honest version: every paying reader has to start a new subscription with you, deliberately, by entering a card again.

Not all of them will. Planning around that number is the actual work in this migration.

Decide the transition before you touch anything

The technical steps are easy to reverse. This decision is not, because it involves telling readers something.

Run the period out. Keep Substack alive until the last billing period you took money for has ended. Nobody loses access they paid for and nobody asks for a refund. It costs you a month or two of running two things.

Bridge with free access. Import your paying readers into Ghost with complimentary access, give them a defined stretch of it, and ask them to subscribe during that window. This converts best, because you are asking somebody who currently has the thing rather than somebody who has lost it.

Cut over on a date. Cheapest to operate and worst for retention. Only sensible if your paid list is tiny or already lapsing.

Most people should do the first two together: let Substack run out, and comp everyone in Ghost meanwhile so nobody experiences a gap.

The order that avoids the mess

Posts first, quietly. Import the content, fix the formatting, check the images actually came across rather than staying hotlinked at the old host. Do this before anybody is looking at it.

Then the subscriber list. Ghost’s member import takes a CSV, and only email is required. It accepts name, note, labels, subscribed_to_emails, created_at and complimentary_plan.

Two things about that list are worth knowing before you build the file.

There is no tier column. The import can mark somebody as complimentary, but it cannot say which tier they hold. If you run more than one, that assignment happens afterwards.

And labels is the field that saves you later. Label the imported paying readers as a group at import time. In three months, when you want to email exactly the people who came from Substack and never re-subscribed, that label is the only thing that can find them. Adding it later means matching lists by hand.

Then the payment side. Not before. A half-configured payment provider attached to a half-imported member list produces failures that are hard to attribute.

Then the domain, once the site is worth showing.

The Ghost constraint, and what to do about it

Ghost’s built-in membership billing is built on Stripe. Not a payment abstraction with Stripe as one option: Stripe objects wearing Ghost’s interface.

If Stripe works for you and you are happy with it, that is the shortest path and this section does not apply.

If it does not, either because Stripe does not operate where you are or because you would rather somebody else handled the tax, the constraint is narrower than it looks. Ghost’s membership machinery is provider-agnostic. Tiers, gated posts, newsletters and member records all work off what the member record says, and the Admin API will create and modify those records for anything holding a valid key.

So the payment can happen at a provider you chose, and something translates a completed payment into a Ghost membership. Every route for doing that is compared here.

Worth settling this before you invite readers to re-subscribe, because asking twice is not an option.

The email that decides your conversion rate

You will send one message asking paying readers to re-subscribe. It does more for the outcome than every technical step above.

Say why you moved, in one sentence, without running Substack down. Say plainly that their subscription cannot be transferred and that this is how subscriptions work rather than an oversight. Tell them exactly what happens and when: the date their current access ends, what they have until then, and the one link to subscribe.

Then send it again near the end of the window, to the people who have not acted. Most of your conversions arrive on the second message, from people who meant to and forgot.

What to check afterwards

A month in, three questions.

How many paying readers re-subscribed, as a number rather than a feeling. Are the comped accounts you granted still comped, or did the window expire and quietly remove access from people you meant to keep. And has anything charged twice, which happens when Substack was cancelled later than you thought.

Then test the new setup properly rather than assuming it works because one purchase did. The checklist is here, and the cancellation half is the one worth your attention.

Related: what happens to active subscriptions when you switch providers, and the structural comparison of Ghost, Substack and Beehiiv.

Frequently asked

Can I move my paying Substack subscribers to Ghost without them doing anything?

No, and this is the part worth planning around. A subscription is a payment authorisation between the reader and the platform that took it. It is not data in your export, so nobody can transfer it for you. Your paying readers have to start a new subscription wherever you land.

Do I lose those readers?

You lose some. How many depends mostly on how you handle the gap. Cutting people off at the moment of the move loses more than giving them a stretch of free access and asking them to re-subscribe while they still have it.

What does actually come across?

The posts and the list of subscribers, including who was paying and roughly since when. That is enough to rebuild the audience and not enough to rebuild the billing.

Does Ghost need Stripe for the paid part?

Ghost's built-in billing does. Its membership machinery, tiers, gated posts, member records, does not care where money came from, so the payment step can be handled by a different provider and translated into a Ghost membership.

How long should I keep both running?

Until the last Substack billing period you accepted money for has run out. Stopping earlier means taking payment for access you removed, which is the one part of this that turns into a refund conversation.