Sort-of bug report for Substack migrations

I say sort-of bug report because on reflection this is actually everything working as you might expect. But it might be good to make a brief addition to the Substack migration instructions on the Ghost website.

I moved my wife’s newsletter from Substack to Ghost about a year ago, and things are going well (it was almost exactly a year ago, in fact, which will become relevant). But today I woke up to a panicked email from a customer who thought we might have been hacked. They had noticed a charge on their credit card from us, equal to the cost of an annual subscription, even though they had never signed up for a paid subscription and their account said they were a free subscriber.

I was immediately dubious about all this, naturally, so I checked it out. But sure enough: listed as a free subscriber on Ghost, but had just been charged fifty bucks by Stripe. What was going on?!

It was only after puzzling over the dates that I managed to figure out it. When I was moving the newsletter from Substack to Ghost I did the following:

A: Export subscriber data from Substack and import into Ghost
B: Contact Substack and request they remove their fees
C: Get confirmation from Substack and immediately revoke their access to Stripe

This user had signed up for a paid subscription on Substack between steps A and C. Their email address had been imported to Ghost, because I have periodically been importing the new Substack signups, but their paid subscription hadn’t. Because they haven’t received any paid-member-only emails in the past year, they had forgotten they ever signed up for a paid account, and then when they noticed the credit card charge they panicked.

Obviously this is not ideal. Luckily, my wife’s newsletter was relatively small when it was on Substack, so this was the only new paid subscription during the period between A and C. I’m not quite sure what to suggest, except to keep an eye on your email and immediately re-export your subscriber list if you get a new paid subscription during the migration period. And if the person who receives the new paid subscription emails from Substack isn’t the same person who’s taking care of the migration, make sure they know to forward any emails that arrive.

(Edit to add: I guess best practice might be to check for new subscriptions on Stripe after you’re done revoking Substack’s access, and if there are any you can paste the stripe_customer_id into the appropriate field in a CSV file and import it to Ghost, if you know what you’re doing.)