How to design subscription levels into app?

Does your app have different levels that control access to features?
How did you accomplish it?

Asking for a friend. :slight_smile:

I’m thinking of a freemium, or limited trial, before requiring subscription. As I build the app out overtime I might charge more for “premium” features and would like it setup to easily plugin new parts into the different levels.

Example Levels
Level 1 - Free: User is automatically assigned at sign up.
Level 2 - extra features
Level 3 - additional extra features

1 Like

This is very doable - the way I did it was to have a field on the User object that keeps track of their subscription level. From there, you can hide pages (i.e. on page load, redirect if current user’s role is not premium or something like that), hide groups using conditionals, prevent workflows from running and instead show an error message (using the alert element and terminating the workflow) if a user tries to run a workflow their plan doesn’t allow. Basically its up to you and you can use a variety of methods depending on the situation. Just be sure to give your user a way to upgrade or downgrade their subscription after signing up.

Please let me know if you have any specific questions for a particular scenario or anything like that.


I think the simply way would be to store this on the user table and then customize your app based on the user’s plan. But, that’s not particularly future proof.

A more robust way would be to create a separate table. On each row include the plan’s name, internal description, price, toggles (e.g., on/off) for key features, and/or numeric quantities for usage thresholds (e.g., user can send up to “10” emails).

Then, on the user’s table store which plan they’re on.

Within your app, reference the user’s plan and turn features on/off based on whether that plan has access to that feature.

One other key benefit with this approach is the flexibility. For example, you could:

  • test different prices for the same plan name (just make it a separate “thing” with most everything else being identical).
  • grandfather in old users by keeping them on a particular plan while adding a new plan with the same name but different price and/or feature set.