ProCourse Memberships 💸

Hi there,

I read through this a couple of times and tried the Demo site again, and I think I figured out my confusion with the signup / membership flow.

Here’s what I think I need to do:

Note: my site is 100% paid, there’s no free tier

  1. I have a static sales page (outside Discourse) with an application form. If the application is approved (manual process), I’ll send an invitation to join from within Discourse.

  2. new member signs up and gets a new account in Discourse.

  3. new member logs in to Discourse and sees…an empty forum, but for one topic about ‘creating a membership’ [perhaps this is where the pro-course-static-page comes in, and I can have a static page with payment options instead?]

  4. That topic [or static page] has two options: a monthly recurring payment and an annual recurring payment. Each link or button goes to the membership page I created within the Procourse plugin.

  5. New Member completes the payment and is added to the Member group, which has access to the full forum.

I think I’m on track here. But #3 and #4 are questionable to me. Am I missing an easier / more obvious path?

PS - I thought the payment page would come first, before the new member created an account. The need to create an account first was a big mental block for me, but I understand why. I think. :slight_smile:

I think you’re going to have usability issues for your user base by making them sign up, get approved, then go into an empty forum, then make them pay for content.

You may be better of by doing something similar where Discourse is locked, but use WP Discourse for SSO and Paid Memberships Pro to restrict access to the community. It’ll all happen more seamlessly for your users.

You could look at this for reference:

1 Like

Thanks @justin, I’ll check it out. The forum isn’t empty (I’ve had a small group in there for several months) but i see your point. I appreciate your perspective.

Can I ask why you go this route? Would there ever be a case when the application process is rejected?

I ask because you can solve the bulk of your issues if this piece can be skipped.

1 Like

Hi Joe,

The idea for the application is to get some background about the person and what they hope to get out of the community. I am part of another group where we had members come in and leave soon after because it was not a good fit for them.

I could change things to go directly to the member signup page, however, and then, once they have joined, ask them the same questions as part of their onboarding. That would work since in this case i have been talking a lot about what to expect prior to people signing up.

One question: if I go that route, can I send them straight to the procourse member page (where they subscribe and pay) and then create their Discourse account? Or is it still create an account then pick a payment plan?

I would combine this with the Custom Wizard plugin. Using that plugin you can capture any/all information you want on signup and then when the form is submitted, send the user to the membership payment page. That way you have it all in one flow.

Personally, I prefer it this way as opposed to the Paid Memberships Pro route. PMPro can work great up until you start trying to sync group memberships back and forth. You can do it, but in my experience it’s not as easy to set up and isn’t always reliable.

When I ran PMP on my site with group sync, I never had issues, but it’s true you need some technical know-how to make it work. Personal preferences aside, both are definitely options with unique advantages and disadvantages – @madbaker hope we’ve helped you come closer to possible decisions!

@joebuhlig @justin Thanks so much for this. I’m seeing a clearer path now.

1 Like

@joebuhlig @justin. Hi; i thought i would circle back on this…

I got the Custom Wizard plugin working nicely upon signup. It calls a Static Page where the new user can select a recurring membership option (monthly or annual)

I have two levels in the membership plugin and the user goes to the correct membership page via the static page. Awesome.

Only problem is the Stripe integration bit on the page just sits and spins.

  • I’ve combed through the Stripe integration docs on the procourse community site. It seems I’m set up correctly but obviously not. :slight_smile:

  • double checked currencies on the plugin and stripe ( all USD), api keys and the webhook secret. All ‘test’

  • build a onetime payment level in case the subscription model was the culprit (no change)

  • checked the logs on Stripe and there is no record of a call being attempted (nothing in the log)

Is there a way i can check a log in discourse to see what call is being attempted?

I’m up for posting in marketplace for help but if i can figure out what the plugin is trying to do at least it should make this go better. I have reduced my signup flow to the basics with no solution, though according to the docs this should be straight forward now. (Famous last words!)

I’ve done some more digging and a tried few extra things out of desperation:

  • rebuilt the app and ran discourse-doctor to make sure there are no errors
  • deleted and rebuilt my membership levels in the procourse-membership plugins using test stripe keys

I can see the new Product Plans (test version) in Stripe when I enable the levels. Hooray!
But when I go to the payment page for the levels, the page renders but the credit card fields don’t load. I get the spinner forever.

Checking the Discourse Error logs and Stripe Error logs turns up nothing. No entries in either log.

So, I thought, maybe it’s a problem with ‘test mode’. Made these changes:

  • replaced test keys/webhook with production keys/webhook
  • recreated the membership levels within the plugin and enabled them.
  • The new product/plans appear in Stripe in the production area. Yippee!

But the same problem occurs when I go to the Discourse payment page. The page renders but the Credit Card fields don’t load. I get the infinite spinner.

No activity in the Stripe logs or Discourse error logs.

=== Eureka! ===

Ugh. I figured it out.

There’s a script required to make the payment work - It was getting blocked as a security error. I added the script to the whitelist and it works quickly and awesomely.

Pretty important detail, that. I was checking app logs but a quick F12 to check the console would’ve been huge 4 days ago. :face_with_head_bandage:


What happens when, say, a 30-day membership expires? What does the subscriber see? How do they re-subscribe?

Also, how to they cancel a subscription?


hi @john12 did you find the solution? i have faced the same issue

I’m wondering that too.

Also, what happens when a user joins (and pays), and then cancels. Does their subscription end immediately, or after the month they have paid for?


I swapped to Memberful in the end. Much better.

The “Demo Setup Link” in the OP is not working, @joebuhlig :disappointed:

Hey Christian,

Did you ever consider Patreon? Why did you end up going with Memberful? I’m guessing you checked out other options?

Hey @jord8on. I chose Memberful because I felt it was the most transparent membership platform. Users never have to leave my site and it integrates sweet with Discourse. The financial reporting tools are also great, as is their live chat support.

I’ve used Patreon on other projects and I don’t like all the hoops you have to jump through. Their T&Cs also suck. So, not a fan.


Hi @joebuhlig,

I’ve integrated ProCourse Memberships plugin with Stripe Payment Gateway, my currency in INR. I’ve forked the repo and added INR as an option. I’m able to create level and everything works, except that the payment remains incomplete. i.e. 3D secure is not implemented and it doesn’t go to any verification step. It asks for card details and then goes to complete. Subscription is created but the payment doesn’t go through. What should I do to implement 3D secure verification?


My advice is to go with the new Discourse Subscriptions plugin

1 Like

Yes, I too like discourse-subscriptions plugin, but discourse-subscriptions too got stuck at 3D secure authentication step. Is there any setting or configuration missing which I should enable to get it working if it already supports it? I’m not sure if any of these plugins support 3DS flow? I’m trying memberful but I’m not liking that all my users will have to sign up / sign in through it and all my oauth login flow through facebook and google won’t work any more.