How to give unpaid users limited access without making Discourse private?

i don’t have a lot of experience with discourse but i’m interested in this question for my own 3rd-party membership system. i always imagined you would manually or automatically set metadata on forum accounts and update it periodically via webhooks.