Column View

Learn how to build custom column interactions with dialogs for status and dropdown columns in monday.com apps

Column views enable you to create custom, interactive experiences for status and dropdown columns in monday.com. When users interact with these columns (e.g., clicking, hovering, or accessing settings), your app can display custom dialogs with tailored functionality that enhances the native monday.com experience.

These column views provide:

  • Enhanced User Experience: Provide contextual, column-specific functionality
  • Seamless Integration: Works naturally within the existing monday.com interface
  • Flexible Triggers: Support multiple interaction patterns (click, hover, settings)
  • Custom UI: Full control over the dialog content and behavior

Concepts

Column views consist of two key components:

  • Board columns: The core component that powers monday.com's column functionality and stores related information (currently supports status and dropdown columns).
  • Custom dialog: An interactive view that appears when users trigger specific actions. Your app renders a custom UI inside the dialog to provide additional functionality. You can reuse the same dialog for multiple user interactions or create unique dialogs for different actions.

Supported Actions

Action NameDescription
On Click DialogOpens when a user clicks the column cell
On Hover DialogOpens when a user hovers over the column cell
Column Settings DialogOpens when a user selects Settings from the column menu. This dialog replaces the native column settings under Settings > Customize settings. It always appears, and if you define a custom dialog here, that dialog will open instead of the default one.
Additional Settings DialogOpens when a user selects Settings from the column menu. This dialog appears as an extra option under the column’s Settings menu, below Customize settings. It is optional and only shown if you add a custom dialog in this section.

Column Settings Dialog and Additional Settings Dialog options under the column menu.

Getting Started

Pre-requisites

Before creating a column feature, ensure you have:

  • A monday.com developer account with app creation permissions (optional, but recommended)
  • Basic familiarity with the monday.com API
  • A deployment environment configured (for added functionality)

Implementation

Step 1: Create a Column Feature

  1. Create a new feature.
  2. Type Column in the search bar.
  3. Choose either the Status column or the Dropdown column feature.
  4. Click Create to proceed to configuration.

Step 2: Configure the Feature

After creating a new Dropdown or Status column feature, you'll be redirected to the feature configuration page. There, you can configure the following:

  • Basic Information: The app's name
  • Design: Icon details
  • On-Click Dialog: Configure what appears when the column is clicked
  • On-Hover Dialog: Configure what appears when someone hovers above the column
  • Column Settings Dialog: Configure what appears when the column's settings are selected
  • Additional Settings Dialog: Configure what appears when additional settings are selected
  • Views Center Information: Write a description and add links that will appear in the Views Center

Step 3: Create and Configure Dialogs

For each dialog type you want to implement:

  1. On the relevant dialog interaction type (e.g., On-Click Dialog, Additional Settings Dialog), click Add Dialog. This will open a dialog configuration popup.
  2. Select an existing dialog, or click Create New in the bottom-left corner. This opens a new tab for configuring the dialog.
  3. In the new tab, you can configure the dialog's:
  • Basic Settings: Name
  • Deployment: Connect a deployment to populate the dialog
  • Design: Customize the dialog's appearance
  1. Once configured, click Save changes.
  2. Return to the original tab and select the new dialog to connect it to the relevant interaction.

Reference

API Reference

Column views store metadata and values in native monday.com columns, accessible through the platform API.

Essential API Endpoints

Example: Update a Status Column

import mondaySDK from "monday-sdk-js";

const monday = mondaySDK();

const mutation = `
  mutation($itemId: ID!, $boardId: ID!, $columnId: String!, $value: String!) {
    change_simple_column_value(
      item_id: $itemId
      board_id: $boardId
      column_id: $columnId
      value: $value
    ) {
      id
    }
  }
`;

const variables = {
  itemId: 9876543210,
  boardId: 1234567890,
  columnId: "status",
  value: "8"
};

const response = await monday.api(mutation, { variables });

App Context

When a user interacts with your column, your app feature will receive info about the connected column and board via the app context. Each context object contains useful details about the column's value, associated board, and user. You can retrieve your app's context using the monday.listen or monday.get SDK methods.

Here are sample context objects for each feature:

{
  "themeConfig": null,
  "theme": "light",
  "account": {
    "id": "5"
  },
  "user": {
    "id": "4300888",
    "isAdmin": false,
    "isGuest": false,
    "isViewOnly": false,
    "countryCode": "US",
    "currentLanguage": "en",
    "timeFormat": "12H",
    "timeZoneOffset": -5
  },
  "region": "use1",
  "productKind": "core",
  "app": {
    "id": 10180998,
    "clientId": "a667d68ebbceb739ca015146e85aee94"
  },
  "appVersion": {
    "id": 10303119,
    "name": "Column Apps - Dipro",
    "status": "draft",
    "type": "major",
    "versionData": {
      "major": 1,
      "minor": 0,
      "patch": 0,
      "number": 1,
      "type": "major",
      "displayNumber": "v1"
    }
  },
  "appFeature": {
    "type": "AppFeatureDialog",
    "name": "Project priority column - dialog - v1"
  },
  "permissions": {
    "approvedScopes": [
      "boards:read",
      "me:read",
      "docs:read",
      "boards:write",
      "docs:write"
    ],
    "requiredScopes": [
      "boards:read",
      "me:read",
      "docs:read",
      "boards:write",
      "docs:write"
    ]
  },
  "boardId": 108246798,
  "columnId": "project_priority_mkmm73xw",
  "appFeatureId": 11205588,
  "itemId": 256180125,
  "selectedItemIds": [
    256180125
  ],
  "columnType": "color",
  "event": "click",
  "placement": "columnPickers"
}
{
  "themeConfig": null,
  "theme": "light",
  "account": {
    "id": "5"
  },
  "user": {
    "id": "4300888",
    "isAdmin": false,
    "isGuest": false,
    "isViewOnly": false,
    "countryCode": "US",
    "currentLanguage": "en",
    "timeFormat": "12H",
    "timeZoneOffset": -5
  },
  "region": "use1",
  "productKind": "core",
  "app": {
    "id": 10180998,
    "clientId": "a667d68ebbceb739ca015146e85aee94"
  },
  "appVersion": {
    "id": 10303119,
    "name": "Column Apps - Dipro",
    "status": "draft",
    "type": "major",
    "versionData": {
      "major": 1,
      "minor": 0,
      "patch": 0,
      "number": 1,
      "type": "major",
      "displayNumber": "v1"
    }
  },
  "appFeature": {
    "type": "AppFeatureDialog",
    "name": "Project priority column - dialog - v1"
  },
  "permissions": {
    "approvedScopes": [
      "boards:read",
      "me:read",
      "docs:read",
      "boards:write",
      "docs:write"
    ],
    "requiredScopes": [
      "boards:read",
      "me:read",
      "docs:read",
      "boards:write",
      "docs:write"
    ]
  },
  "boardId": 108246798,
  "columnId": "project_priority_mkmm73xw",
  "appFeatureId": 11205572,
  "columnType": "color",
  "placement": "settings"
}
{
  "themeConfig": null,
  "theme": "light",
  "account": {
    "id": "5"
  },
  "user": {
    "id": "4300888",
    "isAdmin": false,
    "isGuest": false,
    "isViewOnly": false,
    "countryCode": "US",
    "currentLanguage": "en",
    "timeFormat": "12H",
    "timeZoneOffset": -5
  },
  "region": "use1",
  "productKind": "core",
  "app": {
    "id": 10180998,
    "clientId": "a667d68ebbceb739ca015146e85aee94"
  },
  "appVersion": {
    "id": 10303119,
    "name": "Column Apps - Dipro",
    "status": "draft",
    "type": "major",
    "versionData": {
      "major": 1,
      "minor": 0,
      "patch": 0,
      "number": 1,
      "type": "major",
      "displayNumber": "v1"
    }
  },
  "appFeature": {
    "type": "AppFeatureDialog",
    "name": "Project priority column - dialog - v1"
  },
  "permissions": {
    "approvedScopes": [
      "boards:read",
      "me:read",
      "docs:read",
      "boards:write",
      "docs:write"
    ],
    "requiredScopes": [
      "boards:read",
      "me:read",
      "docs:read",
      "boards:write",
      "docs:write"
    ]
  },
  "boardId": 108246798,
  "columnId": "project_priority_mkmm73xw",
  "appFeatureId": 11205572,
  "columnType": "color",
  "placement": "settings"
}