Members: Pulls Unrelated Subscriptions via Stripe Integration

The Stripe integration is pulling subscriptions for other products in our Stripe account (that have nothing to do with the Ghost membership products) and creating members in Ghost.

When I impersonate the new member that Ghost creates and click on “My Account” – it shows the subscription (e.g. $500/month) for the product that relates to another website entirely.

I spoke with Stripe and they said it’s a Ghost problem. It seems to me this is a pretty significant issue that should be addressed quickly.

Ghost syncs all customer data from Stripe, so this is expected. According to Stripe, you should not use one Stripe account for multiple unrelated businesses:

You must use separate Stripe accounts for projects, websites, or businesses that operate independently from one another.

If you have members who are being charged for some other product or service which is $500/mo - that Stripe account should not be connected to Ghost. It sounds like the support agent you reached at Stripe might not have understood the context.

Creating a new account in Stripe is done in the top left corner of the Dashboard, click on your account name to open the dropdown, then “Create new” — the new account is added pretty much instantly, and you will then have a clean slate to work with.

Unfortunately Stripe Connect does not provide us (as a platform/product) with any data about how or whether a Stripe account is already being used for other types of transactions, so we’re not really able to detect or optimise for this in a useful way

I see. Thanks for your explanation. It’s a surprise that on the Stripe side, syncing can’t be done for certain url filters or only for the products and customers created by the platform (in this case Ghost). My next step will be to see if subscriptions and customers can be moved from one Stripe account to another.

No problem! As a tip, if it sounds like Stripe support aren’t giving you very… ‘complete’ answers, it can often be helpful to politely ask for your query to be escalated. Usually once you get to 2nd tier support, they have a lot more knowledge and context.

I believe it is theoretically possible for Stripe to migrate customers between accounts, but keep in mind that this definitely will throw Ghost out of sync.

[Edit: Just going through some cases on this side to make sure you don’t damage any of your existing data, will follow up in just a moment]

@chrisNYC Ok so to start with, I would revoke the Ghost app from your Stripe account - to make sure that Ghost does not have any way to modify or do anything with the subscriptions belonging to your other business. It shouldn’t anyway, but it’s a good precaution.

In your Stripe account go to
Settings -> Team & security -> Authorized applications

Then click “Revoke access” beside Ghost.

Then, you’ll need to manually delete the members in Ghost who have an active Stripe subscription. At the moment this has to be done 1by1, unless you’re comfortable modifying your database (sorry, improvement coming soon)

When you delete the member, Ghost will ask “Do you also want to cancel the Stripe subscription?” – you can say no - but either way, Ghost can’t do anything because access has already been revoked.

Once you have no members in Ghost with an active subscription, then you will be able to “Disconnect Stripe” inside Ghost, and connect a new one.

Finally, you will need to re-import a CSV of members with their new Stripe customer IDs from the new account - to have the members appear in Ghost again.


Thanks for posting this, we’re working on some changes and improvements right away to make this less painful if anyone else runs into the same problem in future

Thanks again, @John – I decided to leave the Ghost integration as is, and move the other project to a new account. I’m glad my post was helpful. Take care.

One more note, @John – Ghost only seems to pull customers with subscriptions, not those who made one-time payments. So Ghost admins who only have Ghost subscriptions in Stripe (even if other one-time purchase products are offered) can get away with leaving it as is.

1 Like

Just leaving this here for future people finding this thread: here are some other complications associated with this problem.

1 Like

Hey, thanks for your answers.

I am wondering where i have to put in the code to check from a whitelist for related subscriptions.

It could be very easy “On Incoming Stripe Webhook”

  1. Get list of Subscription in Ghost
  2. Check if user is already known. No => Ignore
  3. ignore all Subscription Message that are not in Whitelisted in 1

I am running a self hosted ghost and would like to pay a developer to create a fork of ghost that has this requirement implemented.

Any tips where to implement (in the code) are welcome

What do you think?

I just had the same thing happen and the one word plan name “Starter” in my ghost was one of many words in the subscription that triggered on Ghost. So seems that is the coding issue on Ghost end instead of triggering off unique product code or something. But making a second Stripe account makes no sense as these items are part of the same business. This doesn’t seem to be a difficult thing to track down or fix to me.