Column Features
Learn how to create custom columns in your app
Column features let you add custom functionality to board columns. Basic implementations create status or dropdown columns with custom value pickers. Advanced implementations add custom column settings or hover interactions.
Concepts
Column features create custom interactions for status or dropdown columns. When users click or hover over a cell, your app renders custom UI inside a dialog.
Column features have two key components:
- Base columns: The underlying data structure (currently only status or dropdown column types)
- Column actions: Interactive dialogs triggered by user actions (click, hover, settings)
Supported Column Actions
Each column action triggers a dialog that renders your app. You can create the following actions:
| Action Name | Trigger |
|---|---|
| On Click Dialog | When a user clicks the column cell |
| On Hover Dialog | When a user hovers over the column cell |
| Column Settings Dialog | When a user selects Settings in the column info menu (replaces the native column settings) |
| Additional Settings Dialog | When a user selects Settings in the column info menu (displayed alongside native monday.com settings |
Pre-requisites
Before creating a column feature, ensure you have:
- A monday.com developer account with app creation permissions (recommended)
- Basic familiarity with the monday.com API
- A deployment environment configured (for dialog functionality)
Implementation
Step 1: Create a Column Feature
- Create a new feature.
- Search for Column and select either the Status column or the Dropdown column feature.
- Choose Column as the feature type.
Step 2: Configure the Feature
After creating a new Dropdown or Status column feature, you can configure the app's:
- 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: Add a New Dialog
To add dialogs during configuration:
- Select the relevant dialog type to add (e.g., On-Click Dialog, Additional Settings Dialog). This will open a new popup.
- In the pop-up, click Create New in the bottom-left corner. This opens a new tab for dialog configuration.
- 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
- Once configured, click Save changes.
- Return to the original tab and connect the dialog to the relevant action.
Reference
API Reference
Column features store data in native monday.com columns using the platform API. Review these key API objects:
- Column fields: Query a column's metadata via the API
- Status column: Filter, read, update, and clear the status column via the API
- Dropdown column: Filter, read, update, and clear the dropdown column via the API
- Change a column's value with a string: Update a column's value via the API
- Change a column's metadata: Modify a column's title or description via the API
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
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. 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"
}Updated about 13 hours ago
