Checking user's subscription before any action?

Hi,

I am building a client side application for an app idea. It is not a server backed application. It leverages the monday’s Graphql api and does something nice things. I want to monetize it as seat based subscription model not feature based.

The question is, if the monetization type is seat based subscription do I need to check user plan upon team size before using the app? Or does monday do on behalf of me? If monday does not maintain subscription enforcement then I need a server to to store plan selections, right?

What is the best practice here? cc: @Matias.Monday

Thanks in advance.

1 Like

Hello there @apsimos,

You need to check the account’s seats and plan on your end and you don’t need backend for it. You can use the SDK/API for it :smile:

Thanks @Matias.Monday,

How can I get the seat number? I have checked the account query but there is no seat number.

{
  account {
    plan {
      max_users
    }
  }
}

Hi @codyfrisch,

This gives the max users in that plan. But I need the max users in the team to force the plan selection.

That is the max users in the monday.com account plan, that the account has purchased, and is the number used when they purchase a seat base plan to your app in the marketplace.

Hi @codyfrisch,

I am little bit confused. Let’s say the plan’s max user capacity is 20. And then account’s team size is getting increased, say it is 21. As far as I understand the account needs to be subscribe to the next plan which starts with 21 seat. Am I wrong? So in order to compare I think I need the current team size.

max_users is the number of monday.com licenses that the account has purchased. If they have 20 and increase to 21, they must purchase another monday.com license. They do that, and max_users now increases. But maybe they have purchased 25 users but only have 20 active - they still have a max_users of 25.

When they go to the marketplace to purchase your app, they are presented the plan which encompasses their current max_users.

You then compare their subscription plan against the account.plan.max_users and if the max_users is above the subscription plan you can choose to restrict access (or maybe a grace period for them to upgrade?) or display a prompt to upgrade their plan for your app.

Monday bases the app subscription on the licenses purchased, not the currently in use seats.

1 Like

Hi @codyfrisch,

Thank you for this long explanation. I could not able to find a documentation that stresses these things. This is why I am confused. Is there any documentation that I can dig deeper? cc: @Matias.Monday

@apsimos You’ll need to add the account:read OAuth scope to your app to run that query.

Also, get a bit more information…

{
  account {
      plan {
          version
          max_users
      }
  }
}

Also get the version of the plan, because if you update the plan, currently existing accounts will remain on the old plan.

And consider some weirdness in the max_users when using webhooks.

Hello there @apsimos, you can find more about this here and here :smile: