We're back with more exciting news... :rocket:

We just released sales analytics for apps that are monetized through monday! Here, you will find useful information about your app's ARR, MRR, and subscriptions to provide more data to help make informed decisions.

You can find this data in the Sales tab on the left-side menu of the Developer Center, and you can also read more about it here!

You may have noticed something new in the context of all view-based app features (or you can check it out here)...

We recently added the themeConfig property to provide insight into the current custom theme applied within the monday.com platform. This information enables you to align your app's color scheme with that of the platform's custom theme.

Using the ThemeProvider in our Vibe design system, you can maintain visual coherence with the platform and provide an overall better user experience!

{
  "themeConfig": { // defines the color scheme and styling configuration for the app, may be "undefined" if the default theme is used
    "name": "crm-product-theme", 
    "colors": {
      "light": {
        "primary-color": "#007f9b",
        "primary-hover-color": "#006278",
        "primary-selected-color": "#bee3e8",
        "primary-selected-hover-color": "#d4ebef",
        "brand-colors": {
          "brand-color": "#007f9b",
          "brand-hover-color": "#006278",
          "text-color-on-brand": "#ffffff"
        }
      },
      "dark": {
        "primary-color": "#007f9b",
        "primary-hover-color": "#006278",
        "primary-selected-color": "#004858",
        "primary-selected-hover-color": "#003844",
        "brand-colors": {
          "brand-color": "#007f9b",
          "brand-hover-color": "#006278",
          "text-color-on-brand": "#ffffff"
        }
      },
      "black": {
        "primary-color": "#007f9b",
        "primary-hover-color": "#006278",
        "primary-selected-color": "#004858",
        "primary-selected-hover-color": "#003844",
        "brand-colors": {
          "brand-color": "#007f9b",
          "brand-hover-color": "#006278",
          "text-color-on-brand": "#ffffff"
        }
      }
    }
  },
  "boardId": 4213911112, // unique board ID 
  "boardIds": [4213911112], // list of connected boards
  "boardViewId": 122234064, // unique board view ID
  "viewMode": "fullScreen", // or "split" or "widget"
  "instanceId": 122234064, // unique instance ID for the feature on the board
  "instanceType": "board_view", // app feature type
  "workspaceId": 2581779,
  "theme": "light", // or "dark" or "black"
  "account": { "id": "1233" },
  "user": {
    "id": "28659824",
    "isAdmin": false, // or true
    "isGuest": false, // or true
    "isViewOnly": false, // or true
    "countryCode": "IL",
    "currentLanguage": "en",
    "timeFormat": "12H", // or "24H" 
    "timeZoneOffset": 2 // timezone offset based on GMT
  },
  "region": "use1", // availability zone ID
  "app": { "id": 10089476, "clientId": "78643ruyagduyg743tyr812uygd74" },
  "appVersion": {
    "id": 10124592,
    "name": "context printer",
    "status": "draft",
    "type": "major",
    "versionData": { "major": 1, "minor": 0, "patch": 0, "type": "major" }
  },
  "appFeature": {
    "type": "AppFeatureBoardView",
    "name": "context printer - v1.0.0"
  }
}

Webhooks will now return the current pricing version ID in the pricing_version field for free plans. Previously, the field would return null.

Check out the sample payload below, and you also can read more about webhooks in our documentation!

  type: "install",
  data: {
    app_id: 1000000000,
    user_id: 2,
    user_email: "[email protected]",
    user_name: "User 1",
    user_cluster: "other",
    account_tier: "free",
    account_max_users: 10000,
    account_id: 777777,
    account_name: "Demo Account",
    account_slug: "test",
    version_data: { major: 4, minor: 5, patch: 0, type: "minor" },
    timestamp: "2023-06-26T00:00:00.000+00:00",
    subscription: {
      plan_id: "5",
      renewal_date: "2023-07-10T00:00:00+00:00",
      is_trial: false,
      billing_period: "monthly",
      days_left: 14,
      pricing_version: 5
    },
    user_country: "IL"
  }

We just added the section query parameter that enables you to create a custom URL that opens a specific section of your app listing page. Your custom URL can open directly on the Overview, Pricing, Security & Compliance, or Permissions tab.

Check out our documentation for examples!

We're excited to introduce two new app subscription webhooks:

  • The app_subscription_renewal_attempt_failure webhook will be sent to developers when a subscription renewal attempt fails. The attempt will occur once before the entire renewal operation fails and you receive the app_subscription_renewal_failure webhook.
  • The app_subscription_renewal_failure webhook will be sent to developers when a subscription renewal attempt fails. The failure occurs after one renewal attempt.

You can read more about our available webhooks here!

We're excited to announce that you can now host your applications on monday's servers using monday code!

Releasing this to beta is the first step in making the monday.com development process as easy and self-contained as possible. As an added bonus, marketplace apps hosted on monday code will also be eligible for an advanced security badge in the future.

To use this feature, you'll need to:

You can check out the full guide here!

Marketplace developers - this one is for you!

Starting tomorrow, the minimum threshold for app ratings to appear in the marketplace will increase from 3 to 5! This means that the average rating will not be visible to marketplace users for any apps with less than 5 ratings.

If your app has fewer than 5 ratings, users will still see your app card but it won't have the average score on it. If your app has more than 5 ratings, users will see a star and the average score of all ratings listed on the app card.

Check out our documentation for ways to help increase the number of ratings your app has received!

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.