Free Trial and Paid Users

Hello,

I would like to offer a free trial to users. I would like the trial to be timed for 30 days. Can it be automated to have users in a certain user group?

During the trial, I would like the users to be able to set up a monthly paid subscription which would change their user group to a paid user.

Any tips would be appreciated.

Hi @aar0n! Welcome to the Softr community.

I am not very knowledgeable about Stripe integration so I especially appreciated your questions as a chance for me to learn a bit more.

I’d suggest watching these two videos:

The basic idea is that you can define a user group in terms of which users have purchased a product.

NOTE: these videos are old enough that the user interface in Softr Studio has changed, but the concepts should be the same.

1 Like

One more idea: although there is no API for managing a user’s group membership, an alternative way to automate it is that you can define a group in terms of what values are in a multiselect field in your Users table.

For example I have a group called Hosts which is defined like this:

And then in my users table I have this:

So now you can write Airtable automations that can automatically move users into and out of groups.

1 Like

Thank you for sharing @dcoletta ! The videos and the idea you shared were super helpful.

The one thing I am struggling with is the user table setup and the process flow.

I would like users to apply for a free trial and then I grant them the free trial manually. I have a form that accepts the “application” data to the same users table. I would like to track if free trial users are converting to paid or not, so I might multiple rows or groups assigned to these users.

At the same time, this needs to fit in the automation you suggest. One way or another, multiple group types would need to be in the group column. Indicating that there was a free trial and then maybe another group type for if they paid or not. I do not see the groups column both in my Softr view of the users tables AND the Airtable view of the users table.

Any additional advice you can lend here? Thank you again! :grinning:

I do not see the groups column both in my Softr view of the users tables AND the Airtable view of the users table.

First ensure your Users table is synced to Airtable:

After that, you can add the Groups column yourself as a multi-select field in Airtable, and then Softr will pick it up. Then, you can refer to it when creating a group:

Then click on “Logged in User’s” to see the list of columns in the Users table, and pick one:

2 Likes

Hey @aar0n !

  1. Create a column in the user’s table called user_subscription_status. This column can be of single-select type.

  2. Create a new table called subscription_logs

  3. The values of the user_subscription_status column would be used to infer the ‘User Group’ of the user in Softr. This logic is under the Users > User Groups view in Softr. In your case, the values could be ‘free trial requested’, ‘free trial active’, '‘free trial ended’, ‘paid active’, and ‘paid ended’.

  4. Use Airtable automation to govern the user_subscription_status column:

    Side note: Ideally, you would want to keep the table that accepts free trial application data and the Users table separate

You can achieve what you want by setting up these 2 automation:

Automation 1: New entries from a form or new record created in the Users table → trigger automation to set user_subscription_status field to ‘free trial requested’ for that record

Manually change the value to ‘free trial active’ when you want to provide a free trial.

Automation 2: Any update to the user_subscription_status field in the Users table → triggers automation to create a new record/log in the subscription_logs

You can track user subscription history in the subscription_logs table by filtering and sorting records for that user.

Hope this makes sense

3 Likes

Thank you @dcoletta and @viraj

@viraj - The one question I have on your approach is when the user becomes paid via stripe, how does that update the subscription status single select. I have everything else you both suggested working.

Hey @aar0n!

I’ve never set up payments personally. However, I looked and tested a bit on how you can update subscription status once payment is successful in Stripe.

  1. Create automation in Airtable with webhook as a trigger.
  2. Copy the webhook endpoint generated in Airtable automation in step 1 and paste it into Stripe Dashboard > Developers > Webhooks > Create New Endpoint field where it wants a webhook URL.
  3. Choose the events in Stripe that you want to send to the Airtable webhook. I think this could be invoice.payment_succeeded event (the parameters in this event also consists of customer email, which we can reference in the next step)
  4. Make a successful test payment on your checkout page and verify you receive an event in your Airtable automation’s first step that is triggered by data posted to the webhook. You should see all the data sent to your Airtable automation by Stripe.
  5. Next add a find records action to the automation to find the record id of the user whose subscription status we want to update. Use the customer email data sent from Stripe in the conditions to filter the records in the find records action.
  6. The last step is to add an update record action to update the subscription status field for the record in the previous(find record) step

Please thoroughly study and test the event you want to use in Stripe to notify a successful payment. I am not sure which is the right event to use.

2 Likes

Thank you Viraj. I will keep you updated on this!

1 Like