Monday.com Connector Guide
The Monday.com connector helps Tealfabric workflows read and update work management data through Monday.com’s GraphQL API. It is useful for automating board item creation, status updates, and structured reporting without manual board maintenance.
Document information
| Field | Value |
|---|---|
| Canonical URL | /docs/04_connecting-systems/connectors/m/monday-com |
| Version (published date) | 2026-05-08 |
| Tags | connectors, reference, monday-com |
| Connector ID | monday-com-1.0.0 |
Configuration and authentication
Configure the connector with a Monday.com API token generated from a service-owned account. Keep token scope aligned to the boards and actions your workflow requires, and run test before production use to verify access.
api_key(required): Monday.com API token.base_url(optional): Defaults tohttps://api.monday.com/v2.timeout_seconds(optional): Request timeout in seconds.
Create and update board items with send
Use send for GraphQL mutations such as creating items or updating column values. Prefer GraphQL variables for dynamic input so queries stay readable and less error-prone.
const baseUrl = "https://api.example.com/api/v1";
const tenantId = "<TENANT_ID>";
const apiKey = "<API_KEY>";
async function createTaskItem(integrationId: string) {
const response = await fetch(`${baseUrl}/integrations/${encodeURIComponent(integrationId)}/execute`, {
method: "POST",
headers: {
"X-API-Key": apiKey,
"X-Tenant-ID": tenantId,
"Content-Type": "application/json",
},
body: JSON.stringify({
operation: "send",
mutation: "mutation (boardId: ID!, itemName: String!) { create_item(board_id: boardId, item_name: itemName) { id name } }",
variables: {
boardId: "<ENTITY_ID>",
itemName: "Review renewal contract",
},
}),
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const payload = await response.json();
return payload.data;
}
curl -X POST "https://api.example.com/api/v1/integrations/<ENTITY_ID>/execute" \
-H "X-API-Key: <API_KEY>" \
-H "X-Tenant-ID: <TENANT_ID>" \
-H "Content-Type: application/json" \
-d '{
"operation": "send",
"mutation": "mutation ($boardId: ID!, $itemName: String!) { create_item(board_id: $boardId, item_name: $itemName) { id name } }",
"variables": {
"boardId": "<ENTITY_ID>",
"itemName": "Review renewal contract"
}
}'
{
"success": true,
"data": {
"create_item": {
"id": "<ENTITY_ID>",
"name": "Review renewal contract"
}
}
}
Retrieve board data with receive
Use receive for GraphQL queries that fetch board, item, or column state for reporting and decision logic. Request only the fields you need so responses stay small and processing remains fast.
const baseUrl = "https://api.example.com/api/v1";
const tenantId = "<TENANT_ID>";
const apiKey = "<API_KEY>";
async function listBoardItems(integrationId: string) {
const response = await fetch(`${baseUrl}/integrations/${encodeURIComponent(integrationId)}/execute`, {
method: "POST",
headers: {
"X-API-Key": apiKey,
"X-Tenant-ID": tenantId,
"Content-Type": "application/json",
},
body: JSON.stringify({
operation: "receive",
query: "query (boardId: [ID!]) { boards(ids: boardId) { id name items_page(limit: 10) { items { id name } } } }",
variables: {
boardId: ["<ENTITY_ID>"],
},
}),
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const payload = await response.json();
return payload.data;
}
curl -X POST "https://api.example.com/api/v1/integrations/<ENTITY_ID>/execute" \
-H "X-API-Key: <API_KEY>" \
-H "X-Tenant-ID: <TENANT_ID>" \
-H "Content-Type: application/json" \
-d '{
"operation": "receive",
"query": "query ($boardId: [ID!]) { boards(ids: $boardId) { id name items_page(limit: 10) { items { id name } } } }",
"variables": {
"boardId": ["<ENTITY_ID>"]
}
}'
{
"success": true,
"data": {
"boards": [
{
"id": "<ENTITY_ID>",
"name": "Operations Board",
"items_page": {
"items": [
{"id": "<ENTITY_ID>", "name": "Review renewal contract"}
]
}
}
]
}
}
Reliability guidance
Most production issues come from malformed GraphQL strings, missing variables, or rate-limit bursts during large sync jobs. Use variables for dynamic input, request only required fields, and apply controlled retries for transient failures. These practices keep Monday.com automation reliable and easier to maintain.