This guide will cover simple tips and FAQs regarding how to manage monetization for different kinds of apps.

Plan tiers and subscriptions

How do I define my plan tiers?

To prepare for monetization, the monday dev team needs you to add your app’s plan tiers to our backend. You can have multiple tiers corresponding to each feature set. You must select one tier as the “recommended” tier and one for trial.

For each tier, please include:

  • App Plan ID: String that will be sent to your backend as the “plan_id”, less than 255 characters
  • Name: The title that the user will see in our marketplace
  • Description: Less than 255 characters
  • Bullet points for plan features (3 recommended, max 5, each bullet is a short sentence, ten words max
  • Monthly price in USD: Whole numbers only
  • Yearly price in USD: Whole numbers only

To give you an idea of what this information will show, check out this app:

1920

📘

About the fees

Each tier's fees will display as monthly fees (both for the monthly and the annual options). The monthly fee should be a round number.

For example, a yearly $55 fee would result in a monthly fee of $4.58. In this case, the yearly fee should be $48 or $60, so the monthly fee would be $4 or $5.

How do I test monetization?

You can create a mock subscription using our GraphQL API to test your app’s logic. You can set the subscription to the different tiers of your app to test the upgrade/downgrade flow, block screens, etc.

Mock subscriptions only apply to the specific app and account that created them, so they will not affect any of your existing customers. If you do not remove the mock subscription explicitly, it will disappear after 24 hours.

We recommend thoroughly testing your app to ensure that you implemented monetization correctly. We cannot review the implementation, so it is up to you to conduct QAs.

How do I check subscriptions on a frontend app?

When the app loads, check the Subscription object in the JWT token. Depending on the subscription plan_id, you can enable/disable features and display block screens as needed.

When users access a feature not available on their plan, show them a block screen. You can then prompt them to open the billing tab using the SDK method.

How do I check subscriptions on an integration app?

  • Custom action: When integration runs, get subscription information in the authorization JWT. Restrict features on the backend based on subscription information.
  • Custom trigger: Use GraphQL method to return the subscription of the current user
  • Optional: You can cache the most recent subscription information on your backend

How can I track subscriptions?

After you implement monetization and your app(s) receive marketplace approval, we will invite you to a payment board where you will receive monthly monetization reports. These reports provide the following information about each purchase:

  • monday account ID
  • customer name and ID
  • developer name
  • vendor ID
  • app name and ID
  • plan ID
  • business event (renewal, a new subscription, etc.) and creation log
  • invoice ID and creation log
  • amount without tax
  • sum without tax

Webhooks

Will I get a webhook if a payment method fails?

Not immediately. The user has up to 45 days to provide accurate payment information. After the grace period, you will get a webhook for the cancelation of the subscription if they haven't added a valid payment method.

How many webhooks do I get if someone uninstalls my app?

You will get two webhooks. One for the uninstall webhook and one for the subscription canceled webhook.

Will monday send subscription information for a trial in the install webhook?

Yes.

Does the app_subscription_created event trigger on installation for trial accounts?

app_subscription_created will not trigger with the installation of the app for trial accounts. 

Will an app_subscription_created event be sent to the app with the install webhook if the customer signs up for a subscription during installation?

The install webhook will always come with either a trial or a free plan unless someone uninstalls the app and installs it again while the subscription is still valid.

Then the user can upgrade, and the app subscription-created webhook will be sent. 

Billing and payments

What currency are payments made in?

All payments, both to the developer and from the user, will be made in USD.

How do refunds work?

If a user cancels an app purchase within 30 days of the initial purchase, they can email monday to request a refund.

For refunds to payments over 30 days ago, please reach out to our Customer Experience team at [email protected] We can refund the user with approval from the app developer and will subtract the refund amount from your next invoice.

What happens if the payment from an account fails?

When a payment method fails on a renewal date, the account will have a 45-day grace period to change the payment method or resolve the current issue. The app will continue to work during those 45 days.

If they have not added a valid method of payment after the grace period ends, the account's app will stop working and get a webhook for canceling the subscription. The payment method failure may occur on the renewal date because of a chargeback.

How does billing work when a customer upgrades their plan tier?

The account will pay for the new plan at the time of the upgrade, and the total cost will be the amount of the new plan minus the price of the unused days of the previous plan. The renewal date changes to the date on which they upgraded.

When an account uninstalls an app, does it cancel the subscription?

No. The subscription will end on the renewal date. If the account installs the app again before the renewal date, the users can access it.

The account must repurchase the app if the users want to use it after the renewal date has passed. That said, the app will get a subscription_canceled_by_user webhook at the moment of the uninstall.