I have hit a real bump in the road trying to create subscription functionality on my Webflow website. I am trying to implement Stripe payment links instead of the Webflow checkout as in my opinion, the checkout being hosted by Stripe seems much more professional and I like being able to create all of the subscription products within the Stripe dashboard.
The actual workflow I am trying to implement is very simple in theory;
The website essentially contains a database that is gated for subscribers only. Users cannot edit, modify, or post anything to the database, they gain access to it.
A user can create a free account by using the signup form to create an account. This form is currently using the native Webflow sign-up form. Once the sign-up and verification are complete, the new user account is added to a ‘registered accounts’ access group which does not allow access to the database as no subscription plan has been selected.
The user is then redirected to a ‘choose a plan’ page where they can select between monthly or yearly pricing. Both of these have buttons that are linked to a Stripe payment link.
Now here is where the issue is… Once a user completes the payment and becomes an active subscriber, I need their account within the Webflow CMS to be automatically updated to the access group that provides full unrestricted website access. The struggle I am facing is how to get Webflow to understand exactly which user has paid as I am using the two platforms independently of each other. My guess is that it has something to do with the User ID created when the user signs up in Webflow but I have literally no idea how to assign this User ID to specific Stripe actions such as a completed payment, a cancellation, an updated plan etc.
I may have this totally wrong and therefore, may need to change the workflow but if someone could point me in the correct direction, that would be fantastic. I have seen some forum posts discussing using a different Auth process such as Auth0 to integrate with a Stripe checkout but I would rather avoid adding more complications to the situation if possible.