Trial periods for paid services

@emmanuel can you please share with us the best way to configure a trial period of lets say 30 days for a user after which they are supposed to pay with Stripe.
so my question is how do you track that 30 days are expired - do you run a daily workflow or is it done on each attempt to log in? Or you run a workflow with “do when” scenario?
Please help us out as our client wants users to have 30 days free trial, then either enter credit card be charged and continue using the service or prohibit further access.

Will something like this maybe help you?
Set a start date and end date, subtract the two and do a workflow that sets the users account to suspended or something when the trial period is over and he has not paid.

i guess it could but maybe there more efficient ways to do it?

Use Zapier “Delay For” ?

So trigger a zap that delays and then calls the Bubble workflow API to check the account ?


When signing in, I trigger several “API calls” which will be run in future.
For instance, in 27 days, if user has still not subscribe to a plan (the condition is set at the api level), send reminder email. And in 30 days, if he has still not subscribed, change user’s statut to “Trial Expired”.

1 Like

interesting, I also noticed that Stripe has a trial period parameter in the plan settings
i wonder how it works, do we need to get user’s credit card details if we want to sign him up to a plan with trial period or it can be done later?

1 Like

with bubble integration, user must give its CC infos to start its trial

otherwise, you can use Stripe’s webhooks to manage the end of trial, using Customer ID to find back the user. but there are some limitation right now. JSON returned to Bubble must be flat or with only one level of list. You can not access for instance a list of things’s List of things’s Parameters.

here are some interesting talks about trial / payement upfront or at the end.

1 Like

Thanks a lot! That’s really helpful. Still since Bubble doesn’t take credit card details upfront and offers 1 month trial I wonder how they manage it. Do they manage the free plan also with Stripe or simply on Bubble with certain checks via workflows? @emmanuel

Since there are a few ways to implement it, I wonder what’s the most efficient one.

I’e done several tests. I came up with managing the trial period on my side. And I created a Thing called “Stripe Plan” in my ddb, updating User’ Stripe Plan through an API call doing several checks. It’s the best way I found out for managing features access per subscription plan.

If you use Stripe’s trial period, you’ll have to refer to User’ Subscription’s Status.

The way i did it is on user is logged in event. For Bubble that worked well. it’s a bit more generous, since an app could keep running beyond 30 days, but the likelihood a user won’t come back to the editor to modify his app if he uses it is quite low.

1 Like

but do you sign up the user to a free plan on Stripe or you sign up to Stripe plan only when the user is paying?

Only when they’re paying

Except the status doesn’t work…