It's become a common practice to restrict your users in a way that they need to buy a higher plan (more money) of your product to get sometimes essential features that they could not live without. But why do we do this? And is there a better way?

I'll give you an alternative. When you are thinking about your pricing plans and the restrictions you want to build in, think about restrictions in the way of usage restrictions. The reason why for example Amazon Web Services and other cloud providers have become so big is exactly that. You get all the functionalities you want (and sometimes don't need), but you only pay for what you actually use.

How would this work in 'the real world'? Let's say you are building a project management tool, look at stuff like hard-drive space (for like uploads etc) or the amount of projects someone can make. And you can even think about making an upper limit, a max plan where you just unlock everything. Some people will say that it's not feasible because people would abuse this, sure, some would, but this is a small percentage of your users.

Think about it from the users perspective, and I try to transport myself in their point of view. If you have a project management tool, it would be completely frustrating if being able to share the project with others only comes in from the second or third tier of your pricing plan (instead of from the beginning, just based on how many people you invite).

Let's stop the nonsense, let people get all the features you and your team have worked on for so long. Let them use your product to the full extent and let them pay for what they use, it's the real alternative to get people to love your product.