2
2 Comments

How are gating & grandfathering features in your SaaS?

Hey, my way of gating features for Upscribe has been to add internal ID’s to each Stripe plan that I then use to gate certain features in the code. Then when I change features up for a certain plan I will do something like “if user has internal ID X and registered before date Y then allow access to feature”.

The problem with this is I’m adding a ton of logic to the app and it’s hard to override when I want to give certain users extra access. Plus if I ever have customer service reps there is no way for them to make a quick change to a user’s access; they need to talk to a developer and get a deploy out just to, say, increase some account limit or allow access to one certain feature.

How are you handling this? Would appreciate some ideas!

on September 4, 2019
  1. 1

    Hello Joshua!

    I would recommend making this completely independent of the Stripe plan.

    I ran into a similar issue in my own SaaS, and I implemented a free-form field (in our case, a JSON object with each permission as a key) to the user model. Then, either roll your own feature toggle logic or use one of the many services like https://launchdarkly.com/ to configure/differentiate your logic.

    That will be the quickest way, and it's a good abstraction, as the plan ID and the feature list are not necessarily overlapping, as you seem to be describing.

    1. 2

      Awesome! Really appreciate the detail here. I'd heard of LaunchDarkly but had no idea what it did; good to know!

      Thanks!