Skip to main content

Monday.com Integration

Connect your AI agents to Monday.com Work OS

One-Click Connect available! Go to Settings → Integrations → Connect Platform → Monday.com to connect with a single click via OAuth. Tokens refresh automatically.

Step 1: Connect Monday.com

Recommended: Use the one-click OAuth connection. This handles authentication and token refresh automatically.

  1. 1Go to Settings Integrations
  2. 2Click Connect Platform → select Monday.com
  3. 3Authorize Staffify in the Monday.com popup and you're done!
SettingValue
Base URLhttps://api.monday.com/v2
Auth TypeOAuth 2.0 (automatic)
Token RefreshAutomatic
API TypeGraphQL (all requests are POST /)

Step 2: Add Actions with Pre-Built Templates

Click Add Action on your Monday.com connection to browse 36 pre-built templates across 10 categories. Select a template and it auto-fills the GraphQL query, parameters, and settings.

36 pre-built templates! All templates use Monday.com's GraphQL API. Every request is POST / with a {"query": "..."} body. The templates handle this automatically.

Boards (4)

POSTList Boards
POSTGet Board Details
POSTCreate Board
POSTArchive Board

Items (6)

POSTList Board Items
POSTGet Item by ID
POSTSearch Items
POSTCreate Item
POSTUpdate Item
POSTDelete Item

Subitems (3)

POSTList Subitems
POSTCreate Subitem
POSTDelete Subitem

Groups (4)

POSTList Groups
POSTCreate Group
POSTMove Item to Group
POSTArchive Group

Updates / Comments (3)

POSTList Item Updates
POSTAdd Comment
POSTDelete Comment

Columns (3)

POSTList Board Columns
POSTCreate Column
POSTChange Column Value

Users (3)

POSTList Users
POSTGet Current User
POSTGet User by ID

Workspaces (3)

POSTList Workspaces
POSTGet Workspace Details
POSTCreate Workspace

Tags (2)

POSTList Tags
POSTCreate Tag

Direct Lookups (5)

POSTGet Board by ID
POSTGet Item by ID
POSTGet User by ID
POSTGet Account Info
POSTGet Board Activity

Tip: You can add the same template multiple times with different configurations. For example, add List Board Items twice, once for your “Sales Pipeline” board and once for your “Support Tickets” board.

What Each Action Does

Detailed documentation for every template category. All actions use POST / with a GraphQL query body.

Boards

Boards are the main containers in Monday.com. They hold items (rows), groups, and columns.

POST

List Boards

Retrieve all boards in the account with their names, states, and types.

SettingValue
Action Namelist_boards
MethodPOST
Endpoint/
Parameterslimit (optional, default 25)

GraphQL Query:

{
  "query": "query { boards(limit: 25) { id name state board_kind description } }"
}

Example Response:

{
  "data": {
    "boards": [
      {
        "id": "1234567890",
        "name": "Sales Pipeline",
        "state": "active",
        "board_kind": "public",
        "description": "Track all sales opportunities"
      },
      {
        "id": "1234567891",
        "name": "Support Tickets",
        "state": "active",
        "board_kind": "public",
        "description": ""
      }
    ]
  }
}
POST

Get Board Details

Fetch a specific board with its columns and groups. Use this to discover column IDs before creating or updating items.

ParameterRequiredDescription
board_idYesThe board ID to look up
{
  "query": "query { boards(ids: [1234567890]) { id name columns { id title type } groups { id title color } } }"
}
POST

Create Board

Create a new board in Monday.com. Returns the new board's ID.

ParameterRequiredDescription
board_nameYesName for the new board
board_kindNopublic, private, or share (default: public)
{
  "query": "mutation { create_board(board_name: "New Sales Pipeline", board_kind: public) { id name } }"
}
POST

Archive Board

Archive a board. Archived boards can be restored later from Monday.com's settings.

ParameterRequiredDescription
board_idYesThe board ID to archive
{
  "query": "mutation { archive_board(board_id: 1234567890) { id state } }"
}

Destructive: This action is marked as destructive. The AI will always confirm with the customer before archiving.

Items

Items are the rows in a board. Each item has column values that store data (status, text, numbers, dates, etc.).

POST

List Board Items

List all items in a specific board with their column values.

ParameterRequiredDescription
board_idYesThe board to list items from
limitNoMax items to return (default 25)
{
  "query": "query { boards(ids: [1234567890]) { items_page(limit: 25) { items { id name column_values { id text value } } } } }"
}

Example Response:

{
  "data": {
    "boards": [{
      "items_page": {
        "items": [
          {
            "id": "9876543210",
            "name": "Acme Corp Deal",
            "column_values": [
              { "id": "status", "text": "Working on it", "value": "{\"index\":1}" },
              { "id": "person", "text": "John Smith", "value": "{\"personsAndTeams\":[{\"id\":12345}]}" },
              { "id": "date4", "text": "2026-03-15", "value": "{\"date\":\"2026-03-15\"}" }
            ]
          }
        ]
      }
    }]
  }
}
POST

Search Items

Search for items in a board by column value. Great for finding records by name, email, status, or any column.

ParameterRequiredDescription
board_idYesThe board to search in
column_idNoColumn to search (default: "name")
search_valueYesThe value to search for
{
  "query": "query { boards(ids: [1234567890]) { items_page_by_column_values(columns: [{column_id: "name", column_values: ["Acme"]}]) { items { id name column_values { id text } } } } }"
}

Tip: The column_id defaults to "name" (the item name column). Use Get Board Details first to discover other column IDs you can search by (e.g., email, status, phone).

POST

Create Item

Add a new item (row) to a board. Optionally place it in a specific group and set column values.

ParameterRequiredDescription
board_idYesThe board to create the item in
item_nameYesName for the new item
group_idNoGroup to place the item in (uses default group if omitted)
column_valuesNoJSON string of column values to set
{
  "query": "mutation { create_item(board_id: 1234567890, item_name: "New Support Ticket", group_id: "topics", column_values: "{\"status\":\"Working on it\",\"text0\":\"High priority request\"}") { id name } }"
}

Example Response:

{
  "data": {
    "create_item": {
      "id": "9876543211",
      "name": "New Support Ticket"
    }
  }
}

Column values format: The column_values parameter is a JSON string (escaped inside the GraphQL string). See the Column Values Reference section below for how to format different column types.

POST

Update Item

Update one or more column values on an existing item. Only the columns you specify are changed.

ParameterRequiredDescription
board_idYesThe board containing the item
item_idYesThe item to update
column_valuesYesJSON string of column values to change
{
  "query": "mutation { change_multiple_column_values(board_id: 1234567890, item_id: 9876543210, column_values: "{\"status\":\"Done\",\"date4\":\"2026-03-20\"}") { id name } }"
}
POST

Delete Item

Permanently delete an item from a board. This cannot be undone.

ParameterRequiredDescription
item_idYesThe item ID to delete
{
  "query": "mutation { delete_item(item_id: 9876543210) { id } }"
}

Permanent: Unlike Monday.com's UI (which moves to trash), the API permanently deletes items. The AI always confirms before executing.

Subitems

Subitems are nested items under a parent item. Useful for breaking work into smaller tasks.

POST

List Subitems

List all subitems of a parent item with their column values.

ParameterRequiredDescription
item_idYesThe parent item ID
{
  "query": "query { items(ids: [9876543210]) { subitems { id name column_values { id text } } } }"
}
POST

Create Subitem

Add a new subitem under a parent item.

ParameterRequiredDescription
parent_item_idYesThe parent item to add the subitem to
item_nameYesName for the new subitem
column_valuesNoJSON string of column values
{
  "query": "mutation { create_subitem(parent_item_id: 9876543210, item_name: "Follow up with client", column_values: "{\"status\":\"Working on it\"}") { id name } }"
}
POST

Delete Subitem

Permanently delete a subitem.

ParameterRequiredDescription
item_idYesThe subitem ID to delete
{
  "query": "mutation { delete_item(item_id: 9876543211) { id } }"
}

Groups

Groups organize items within a board into sections (e.g., “New Leads”, “In Progress”, “Closed”).

POST

List Groups

List all groups in a board.

ParameterRequiredDescription
board_idYesThe board to list groups for
{
  "query": "query { boards(ids: [1234567890]) { groups { id title color archived deleted } } }"
}
POST

Create Group

Add a new group to a board.

ParameterRequiredDescription
board_idYesThe board to add the group to
group_nameYesName for the new group
{
  "query": "mutation { create_group(board_id: 1234567890, group_name: "Hot Leads") { id title } }"
}
POST

Move Item to Group

Move an item from one group to another within the same board.

ParameterRequiredDescription
item_idYesThe item to move
group_idYesThe destination group ID
{
  "query": "mutation { move_item_to_group(item_id: 9876543210, group_id: "hot_leads") { id name } }"
}
POST

Archive Group

Archive a group and all its items. Can be restored from Monday.com.

ParameterRequiredDescription
board_idYesThe board containing the group
group_idYesThe group to archive
{
  "query": "mutation { archive_group(board_id: 1234567890, group_id: "old_leads") { id archived } }"
}

Updates (Comments)

Updates are comments/notes attached to items. They support HTML formatting.

POST

List Item Updates

Retrieve the latest 25 comments on an item.

ParameterRequiredDescription
item_idYesThe item to get updates for
{
  "query": "query { items(ids: [9876543210]) { updates(limit: 25) { id body text_body creator { id name } created_at } } }"
}
POST

Add Comment

Post a new comment on an item. Supports HTML in the body.

ParameterRequiredDescription
item_idYesThe item to comment on
bodyYesComment text (supports HTML tags like <b>, <p>, <ul>)
{
  "query": "mutation { create_update(item_id: 9876543210, body: "Called the customer. They confirmed the order and will pay by Friday.") { id } }"
}
POST

Delete Comment

Delete a comment by its update ID.

ParameterRequiredDescription
update_idYesThe update/comment ID to delete
{
  "query": "mutation { delete_update(id: 1122334455) { id } }"
}

Columns

Columns define the data fields on a board (status, text, numbers, dates, people, etc.).

POST

List Board Columns

Discover all columns on a board with their IDs, titles, and types. Essential for knowing which column IDs to use in create/update operations.

ParameterRequiredDescription
board_idYesThe board to list columns for
{
  "query": "query { boards(ids: [1234567890]) { columns { id title type settings_str } } }"
}

Example Response:

{
  "data": {
    "boards": [{
      "columns": [
        { "id": "name", "title": "Name", "type": "name" },
        { "id": "status", "title": "Status", "type": "status" },
        { "id": "person", "title": "Owner", "type": "people" },
        { "id": "date4", "title": "Due Date", "type": "date" },
        { "id": "email", "title": "Email", "type": "email" },
        { "id": "phone", "title": "Phone", "type": "phone" },
        { "id": "text0", "title": "Notes", "type": "text" },
        { "id": "numbers", "title": "Amount", "type": "numbers" }
      ]
    }]
  }
}
POST

Create Column

Add a new column to a board.

ParameterRequiredDescription
board_idYesThe board to add the column to
titleYesDisplay name for the column
column_typeYesColumn type (see list below)

Available column types:

text · numbers · status · date · people · email · phone · link · long_text · dropdown · checkbox · rating · timeline · tags

{
  "query": "mutation { create_column(board_id: 1234567890, title: "Priority", column_type: status) { id title type } }"
}
POST

Change Column Value

Update a single column value on an item. Use this for quick single-field updates.

ParameterRequiredDescription
board_idYesThe board containing the item
item_idYesThe item to update
column_idYesThe column ID to change
valueYesNew value (JSON string format)
{
  "query": "mutation { change_column_value(board_id: 1234567890, item_id: 9876543210, column_id: "status", value: "{\"label\":\"Done\"}") { id name } }"
}

Users

Retrieve user information from the Monday.com account.

POST

List Users

Retrieve all users in the Monday.com account with their details.

{
  "query": "query { users { id name email title phone mobile_phone is_guest enabled account { name } } }"
}

Example Response:

{
  "data": {
    "users": [
      {
        "id": "12345",
        "name": "Sarah Johnson",
        "email": "[email protected]",
        "title": "Account Manager",
        "phone": "+1 555-0123",
        "mobile_phone": "+1 555-0124",
        "is_guest": false,
        "enabled": true,
        "account": { "name": "Acme Corp" }
      }
    ]
  }
}
POST

Get Current User

Get the currently authenticated user's info and account details.

{
  "query": "query { me { id name email account { name id } } }"
}
POST

Get User by ID

Look up a specific user by their ID. Use this after a List Users to get detailed information about a team member.

ParameterRequiredDescription
user_idYesThe user ID to look up
{
  "query": "query { users(ids: [12345]) { id name email title phone mobile_phone is_guest enabled created_at } }"
}

Workspaces

Workspaces are top-level containers that hold boards. They help organize boards by team or department.

POST

List Workspaces

List all workspaces in the account.

{
  "query": "query { workspaces { id name kind description } }"
}
POST

Get Workspace Details

Get details for a specific workspace including its settings.

ParameterRequiredDescription
workspace_idYesThe workspace ID to look up
{
  "query": "query { workspaces(ids: [54321]) { id name kind description settings { icon { color image } } } }"
}
POST

Create Workspace

Create a new workspace to organize boards.

ParameterRequiredDescription
nameYesName for the new workspace
kindNoopen or closed (default: open)
descriptionNoWorkspace description
{
  "query": "mutation { create_workspace(name: "Sales Team", kind: open, description: "All sales boards and dashboards") { id name } }"
}

Tags

Tags help categorize and label items across boards.

POST

List Tags

Retrieve all tags in the account.

{
  "query": "query { tags { id name color } }"
}
POST

Create Tag

Create a new tag or get an existing one if the name already exists.

ParameterRequiredDescription
tag_nameYesName for the tag
{
  "query": "mutation { create_or_get_tag(tag_name: "VIP") { id name } }"
}

Direct Lookups

Look up any record by its ID when you already have it from a previous action.

POST

Get Board by ID

ParameterRequiredDescription
board_idYesThe board ID to look up
{
  "query": "query { boards(ids: [1234567890]) { id name state board_kind description columns { id title type } groups { id title } } }"
}
POST

Get Item by ID

ParameterRequiredDescription
item_idYesThe item ID to look up
{
  "query": "query { items(ids: [9876543210]) { id name column_values { id text value } subitems { id name } updates(limit: 5) { id text_body created_at } } }"
}
POST

Get Account Info

Get information about the Monday.com account including plan details.

{
  "query": "query { me { account { id name plan { max_users period tier } } } }"
}
POST

Get Board Activity

View recent activity on a board, including who changed what and when.

ParameterRequiredDescription
board_idYesThe board to get activity for
limitNoMax entries (default 25)
{
  "query": "query { boards(ids: [1234567890]) { activity_logs(limit: 25) { id event data entity user_id created_at } } }"
}

Column Values Reference

When creating or updating items, column values are passed as a JSON string. Here's how to format each column type:

Column TypeJSON FormatExample
Text"column_id": "value""text0": "Hello world"
Numbers"column_id": "123""numbers": "5000"
Status"column_id": "Label""status": "Done"
Date"column_id": "YYYY-MM-DD""date4": "2026-03-15"
Email"column_id": {"email": "...", "text": "..."}"email": {"email": "[email protected]", "text": "[email protected]"}
Phone"column_id": {"phone": "...", "countryShortName": "..."}"phone": {"phone": "+15551234", "countryShortName": "US"}
People"column_id": {"personsAndTeams": [...]}"person": {"personsAndTeams": [{"id": 12345, "kind": "person"}]}
Checkbox"column_id": {"checked": "true"}"checkbox": {"checked": "true"}
Link"column_id": {"url": "...", "text": "..."}"link": {"url": "https://...", "text": "Click here"}
Long Text"column_id": {"text": "..."}"long_text": {"text": "Long description here"}
Rating"column_id": {"rating": 5}"rating": {"rating": 5}
Dropdown"column_id": {"labels": [...]}"dropdown": {"labels": ["Option A"]}
Timeline"column_id": {"from": "YYYY-MM-DD", "to": "YYYY-MM-DD"}"timeline": {"from": "2026-03-01", "to": "2026-03-31"}
Tags"column_id": {"tag_ids": [...]}"tags": {"tag_ids": [12345, 67890]}

Important: Column values are double-escaped inside the GraphQL mutation string. For example: column_values: "{\"status\":\"Done\"}". The templates handle this escaping automatically.

Step 3: Enable on Your AI Agent

  1. 1Go to AI Agents → select your employee → Edit
  2. 2Scroll to Integrations section
  3. 3Toggle on Monday.com and select which actions the employee can use
  4. 4Save. The AI will now use Monday.com during calls and widget conversations when relevant

Example Conversation

Here's how your AI agent uses Monday.com during a real customer interaction:

Caller: “Hi, I want to check the status of my project. The name is Website Redesign.”

AI Agent: “Let me look that up for you.”

→ Executes: search_items with search_value=“Website Redesign”

AI Agent: “I found your project. The Website Redesign is currently marked as ‘Working on it’ with a due date of March 15th. It has 3 subitems. Would you like more details?”

Caller: “Yes, can you show me the subtasks?”

→ Executes: list_subitems for the found item

AI Agent: “The subtasks are: Design mockups is Done, Content writing is Working on it, and Development is Stuck. Would you like me to update any of them?”

Caller: “Yes, please mark Development as Working on it and add a comment that I approved the design.”

→ Executes: update_item to change status

→ Executes: create_update with body=“Design approved by customer. Moving to development.”

AI Agent: “Done! I've updated the Development subtask to Working on it and added your comment. Is there anything else I can help with?”

Monday.com-Specific Notes

GraphQL only: Monday.com uses GraphQL instead of REST. All API calls are POST / with a {"query": "..."} body. The templates handle this automatically, so you never need to write GraphQL yourself.

Rate limits: Monday.com has strict rate limits based on query complexity (not just request count). The platform automatically limits concurrency to 2 simultaneous requests to avoid hitting these limits.

Board IDs are required: Most operations need a board_id. Use List Boards first, or find the board ID in the URL: monday.com/boards/1234567890.

Column IDs: Column IDs are auto-generated strings like status, text0, date4, numbers. Use List Board Columns to discover the correct IDs for your board before updating items.

IDs are always internal: The AI never reveals board IDs, item IDs, or user IDs to customers. It uses them internally to make API calls but presents only human-readable names and values.

Available Variables

Use these variables in your custom action GraphQL queries. They are automatically replaced at runtime.

VariableDescriptionExample
{{caller_phone}}Phone number of the current customer+15551234567
{{employee_id}}ID of the AI agent handling the callemp_abc123
{{call_id}}Unique ID of the current call sessioncall_xyz789
{{action.field}}Value from a previous action result{{search_items.id}}

Error Handling

Common Monday.com API errors:

ErrorCauseSolution
ComplexityBudgetExhaustedQuery is too complex or too many requestsReduce limit parameter or wait before retrying
InvalidBoardIdExceptionBoard ID does not existUse List Boards to find correct ID
InvalidColumnIdExceptionColumn ID is wrongUse List Board Columns to discover correct column IDs
ItemsLimitationExceptionBoard has hit item limitArchive old items or upgrade Monday.com plan
UserUnauthorizedExceptionToken expired or lacks permissionsReconnect the integration via OAuth
ResourceNotFoundExceptionItem/user/board not foundVerify the ID exists before operating on it

Alternative: Manual Setup (API Token)

Only use this method if you cannot use OAuth. API tokens have full account access and don't expire, but they also don't support automatic refresh.

  1. 1Click your Profile Picture Developers
  2. 2Go to Developer My Access Tokens
  3. 3Click Show to reveal your API token and copy it
  4. 4In Staffify, create a manual connection with the settings below
FieldValue
Connection NameMonday.com
Base URLhttps://api.monday.com/v2
Auth TypeBearer Token
TokenYour Monday.com API token
Token ExpiresDisabled (doesn't expire)

Monday.com API Reference

CategoryActionsKey Operations
Boards4 templatesList, Get Details, Create, Archive
Items6 templatesList, Get, Search, Create, Update, Delete
Subitems3 templatesList, Create, Delete
Groups4 templatesList, Create, Move Item, Archive
Updates3 templatesList Comments, Add Comment, Delete Comment
Columns3 templatesList, Create, Change Value
Users3 templatesList, Get Current, Get by ID
Workspaces3 templatesList, Get Details, Create
Tags2 templatesList, Create
Direct Lookups5 templatesGet Board/Item/User by ID, Account Info, Activity Log

Full API documentation: developer.monday.com/api-reference

Last updated: February 2026

Monday.com Integration | Staffify Docs