I’m here to deliver some good news regarding seamless authentication via the SDK…

The shortLivedToken is now valid for 5 minutes instead of 1!

This change will give your app an additional four minutes to make authenticated calls to the API as part of your integration recipe. You can read more about seamless authentication for integrations in our documentation.

Happy authenticating!

Marketplace app developers - this one is for you!

When accessing your app in the Developer Center, you may notice an updated menu on the left-hand side that includes the brand-new Marketplace section. Here you'll find tabs that are only relevant for marketplace apps to help make the menu more organized and the necessary tabs easier to access.

Check out our documentation to read more about the sections and what each tab contains!

We just added the batch_extend_trial_period mutation, which enables apps monetized by monday to provide trial extensions via the API!

The available arguments ask for the same information required when extending a trial through the Developer Center. However, the most significant difference between the API and the Developer Center is that you can batch up to five trial extensions in one call via the API.

The available fields then return information about the batch itself, as well as individual operations. Check out the sample mutation below, and then give it a go!

mutation {
  batch_extend_trial_period (account_slugs: ["test", "monday"], app_id: 12345678, plan_id: "Plan_1", duration_in_days: 21) {
    details {
      account_slug
      reason
      success
    }
    reason
    success
  }
}

Please note that you must make multiple calls if the plan ID and durations vary for different accounts.

We recently made changes to the process of granting discounts and extending trials for apps that are monetized through monday:

Instead of granting discounts and extending trials using the account ID, you must now use the account slug. You can obtain the account slug from your webhooks or by querying the account through the API.

This change is extremely important because it enables you to grant discounts and extend trials for customers across different regions! Previously, the system would not allow you to grant a discount or extend a trial for a customer who sits in a different region than you. With this update, it doesn't matter what region you or your customers are in.

We've recently made a few updates and improvements to our webhooks to help provide you with a better developer experience. Let's check them out!

  1. New app_webhooks_only argument

This new argument returns just the webhooks created by the app initiating the request when querying the webhooks object through the API.

query {
  webhooks (app_webhooks_only:true, board_id:1234567890) {
    id
    event
    config
  }
}
  1. Added missing authorization headers

Before these updates, we were missing a feature that sent the authorization header for some webhooks. We added the missing feature, so now the authorization header will be included in all webhooks. Make sure to start validating your requests from monday!

Please note that this only applies to apps created in the Developer Center. You will not receive the authorization header if your API call was made with a personal token.

  1. Users can't remove app webhooks in the UI

While webhooks created by apps were always labeled internally on monday as belonging to a specific app, we enabled this labeling in the Active integrations page on the board so users can’t remove your webhooks from the board!

We're excited to announce the release of the first phase of our app analytics 🚀

App analytics was one of the most frequently requested features, and we understand how important that data is to improving your app's performance.

Now, you can access comprehensive and detailed information about your app to provide clear insight that allows you to make data-driven decisions. App analytics gives you data related to your app's installs, reviews, and listings in the marketplace.

You can read more about app analytics and the data you can access in our documentation!

We recently changed the unsubscribe behavior of the custom triggers for the Integration/Workflow app feature.

Previously, the trigger's unsubscribe endpoint was only called when the integration or board was deleted. However, we've updated it to also unsubscribe for three days (subject to change in the future) after the automation was disabled.

This change streamlines resources and unsubscribes stale automations that have been out of use for over three days. Before this change, such automations could remain disabled and subscribed to indefinitely, wasting resources on both ends.

This change will help both the monday app infrastructure and app developers' infrastructure save resources and only trigger truly active automations moving forward.

We recently created built-in logic that monitors and enforces plan limits based on the customer’s monday.com account size. The following changes will be released on August 28th, 2023.

For view apps, we will automatically monitor the number of monday.com seats an account has and compare it to their app subscriptions. If they do not have a large enough plan for your app, we will prompt them to upgrade their plan on both the Installed Apps page and an additional pop-up in the app’s view. Users will not be blocked from the app, and this update only applies to view apps.

If a user has a trial subscription and it expires, they will be blocked from accessing the app and prompted to select one of the available plans. Account admins will also receive notification of the trial expiration and be prompted to choose a plan on the Installed Apps page.

When a user churns from monday.com, their app subscriptions are also canceled. Therefore, the app_subscription_cancelled webhook will now contain a reason field indicating their subscription was canceled upon renewal. Currently, this is the only instance when the reason field appears, though we plan on adding support for additional reasons in the future.

{
  "type":"app_subscription_cancelled",
  "data":{
    "app_id":1000000000,
    "user_id":1,
    "user_email":"[email protected]",
    "user_name": "User 1",
    "user_cluster": 'other',
    "account_tier": 'free',
    "account_name": "Demo Account",
    "account_slug": "test",
    "account_max_users": 10000,
    "account_id":777777,
    "version_data":{
      "major":1,
      "minor":2,
      "patch":0,
      "type":"minor"
    },
    "timestamp":"2022-06-23T00:00:00.000+00:00",
    "subscription":{
      "plan_id":"plan1",
      "renewal_date":"2022-07-19T00:00:00+00:00",
      "is_trial":false,
      "billing_period":"monthly",
      "days_left":26,
      "pricing_version":5
    },
    "reason":"monday_subscription_cancel_on_renewal"
  }
}