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
FieldValue
Canonical URL/docs/04_connecting-systems/connectors/m/monday-com
Version (published date)2026-05-08
Tagsconnectors, reference, monday-com
Connector IDmonday-com-1.0.0

Monday.com connector workflow showing authenticated GraphQL mutations for board updates, structured query retrieval, and workflow-driven project automation.

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 to https://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.

Additional resources