Members integration with Mailchimp and Stripe

Hi everyone,
I have been a fan of Ghost platform since its very Kickstarter beginning but I haven’t been able to use it for a real project until now: I am helping out some friends transitioning a subscription magazine from printed edition to digital (you guess it right, Covid) and Ghost with membership support seems the right fit.

Currently, the subscriptions to the printed magazine are managed through a Wordpress + WooCommerce website and the customers are also added to a Mailchimp newsletter. My idea is to migrate this setup to a Ghost + Stripe + Mailchimp combination relying both on the native integrations and Zapier. I have a rough plan that I am currently testing on a Digital Ocean droplet. In a nutshell: regular members subscribe through a Mailchimp embedded form and get synced with Ghost via a Zapier trigger. Paying members are managed by Stripe and get synced with Ghost via native integration.

It seems a little bit hacky so I would like to understand if my logic is flawed as well as reporting what are IMHO some shortcomings.

  • I have to use Mailchimp for members signup to collect at least users’ First and Last Name (f.i John Doe ) since Ghost only requires the email to subscribe.
  • It looks like the sync has to be a one-way process only since if I sync back Ghost to Mailchimp, I enter in a loop and end up having JohnDoe JohnDoe as First and Last Name as Ghost uses only one field for the users’ name.
  • If I manually add a subscription in Stripe using an existing Ghost member email address, it doesn’t seem to sync back to Ghost. The Stripe ID doesn’t get updated in the Ghost members list.

About Stripe integration it would also be nice to have:

  • A way to collect your users’ address as you probably want (or you are required) to invoice them.
  • Different Tiers or at least Coupons that Stripe already supports.

To the Ghost crew: I am perfectly aware that membership is still in beta and probably a lot of features are yet to come. I’m just trying to deliver a use case feedback and I would appreciate any suggestion or tip you might have.

Keep up with the amazing work!


Hi @dandooze :wave:

Sounds like a pretty cool setup to me! I don’t think the idea is hacky at all. Zapier is a common tool we suggest and it works really well for cases such as syncing Mailchimp with Ghost members. As for the sign up flow I guess as long as people are signing up with the Mailchimp form only there won’t be a duplicates issue. Ghost will merely copy the Mailchimp list. I also would’ve thought Mailchimp can merge entries anyway :thinking:.

I believe members have to sign up for a Stripe subscription directly through Ghost so it gets created properly. However if you’re looking to create specialised subscriptions for members and expose them in Ghost you can use the documentation here to output their subscription data. You can probably use that to add more information to your members profiles in Ghost.

I hope I’ve given you at least some inspiration to work with here. I’ll do my best to answer further questions you may have :blush:

@DavidDarnes Looking at the documentation you linked above, I’m unsure what happens if a Ghost member has any active subscription in Stripe; does that mean they become a paying member in Ghost?

Or put another way, if they have created a Stripe subscription through a channel other than Ghost, is their @member.paid value true?

And I’m guessing they would need to become a member in Ghost (either via an import, an admin adding in the admin panel, or through a sign up form) before that would happen?

@dandooze For syncing from Ghost back to Mailchimp, you can use Zapier’s text formatter. You would just add a Split using the space separator (default value) to All as separate fields. That gives you each piece of the name which you can input into the separate fname and lname. I ended up going this route because my last name has a space in it, so this way everything in front of the first space becomes first name and then both the second and third value are entered into the last name.


@dan from the tests I have been doing so far it looks like existing Stripe users get synced to Ghost only through an import in the Ghost admin.

  • If you create a Ghost user with the same email address as a Stripe user it won’t work as, from what I understood, the sync is made via the stripe_id field.
  • I also did a test intentionally aborting the payment on Stripe (so the user gets created in Stripe but not the subscription) and assigning the plan manually on the Stripe admin: that didn’t work either.

@DavidDarnes: thanks for your answers, I’ve been digging deeper into the docs and I get your point that everything is doable via integrations. What I am missing here though is being able to rely on Ghost as the single source of truth when it comes to manage users and leave to the third party services just… the additional services :-). Being able to collect more fields in the subscription form (at the very least the name) will be a game changer.

Finally… thanks @kelskelskels for the tip! I will try that as well.

1 Like