Missing Subscriptions in Ghost (exist in Stripe)

Hey guys! Every now and then, I come across a paid member with an active subscription in Stripe that does NOT show on their Ghost profile. When they go to update their membership, Ghost tells them that they are on a Free plan with no subscription.

For the life of me, I can’t track down how/why this happens. It’s not super frequent, but it’s more frequent than I’d like.

Is there any way to manually bridge a Ghost member to the related Stripe customer? Or a way to tell Ghost to check Stripe for that member’s email address to sync up the subscription?

I’m still looking for a way to delete tiers in Ghost without breaking the CMS.

Hey @John this problem is still plaguing me – do you have any idea why Ghost wouldn’t be syncing member subscriptions from Stripe?

The member exists in Ghost, but it shows them as a Free subscriber. If there is anything I could do to basically “sync” the two, I would really love to try – all of these subscriptions originated FROM Ghost and I can’t for the life of me figure out why they aren’t being shown, but the impact is members are unable to manage their billing or access gated pages.

Hey @jayclouse!

We’ve been discussing your issue and propose some solutions that can help you sync the broken members. Hopefully you can also share some information on what worked for you (and maybe some logs, Ghost version, issues you had in the past…), so we can find the underlying issue so it doesn’t happen again in the future :blush:

Try to export the member in a CSV (filter your members by the right email address and then click the settings icon on the members page to export the selected member).

  • Is there a stripe_customer_id set in the exported CSV? If it is set, you can normally go to the subscription in your Stripe dashboard and alter something small in it (e.g. add a description). That should trigger the webhook again and send the subscription to Ghost. Ghost should then respond by linking the subscription again. Now check if the subscription is linked correctly in Ghost. If this didn’t work, check the logs in Stripe and Ghost to see if the webhook was delivered and handled successfully. Any full and long error messages here would be helpful to debug this issue.
  • If the customer doesn’t have a stripe_customer_id, you can trick Ghost to link it again by editing the exported CSV file. In the stripe_customer_id column, you fill in the customer_id from Stripe that you found in your case. Now import the CSV file (you don’t have to delete the existing member first), make sure the Import As column is selected correctly in the dialog. It should now automatically link the subscription. If this doesn’t work, check the logs in Stripe and Ghost to see if there are any warnings or errors at the time of the import. Any full and long error messages here would be helpful to debug this issue.

If you have any extra information on you setup, that could be helpful too (Ghost version, issues you had in the past…)



YES! This solved the problem, Simon.

For what it’s worth, the export did not show a customer ID, but uploading the csv with the Stripe customer ID solved the link.

THRILLED to have a workaround here for when this issue comes up again. I’m a former product guy, so I’ve really tried a lot to isolate why/when this happens, and I don’t have a great explanation.

I was trying to keep ConvertKit in sync with Ghost for a while, so I thought at first the issue might be deleting a Ghost member (if for some reason a paid member unsubscribed to the newsletter). But I’ve dug into that, and that doesn’t seem to be the case. There are a couple members who came directly into Ghost (newsletter and paid membership) that just somehow are lacking the paid subscription attached to them in Stripe

1 Like

Happy that it solved your issue for now!

  1. So new members that sign up now do have a valid subscription attached to them in Ghost, right (or is this still random)?
  2. Did you see anything special in the activity log of the affected members (e.g. they were created after the subscription started or they were unsubscribed at some time after creation) ?

I looked into this pretty hard, and it seemed totally random. Folks joining lately seem to be fine, but it’s a random handful of past members that I really can’t find rhyme, reason, or a pattern.