> ## Documentation Index
> Fetch the complete documentation index at: /help/llms.txt
> Use this file to discover all available pages before exploring further.

# monday CRM

> Create items on your monday CRM board when LinkedIn contacts reply, and update their status when a meeting is booked.

> [!NOTE]
>
> **Pro plan.** monday CRM works through a connection and HTTP steps, which are part of Pro and Agency (and the free trial). Anything you already have keeps working on every plan. See [Plans and billing](/help/account/billing.md).

When a contact replies, a **Webhook / HTTP** step creates an item on your leads board through monday's GraphQL API. When the contact books a meeting, another step changes the item's status.

> [!NOTE]
>
> **How it connects:** monday's GraphQL API with a personal API token. See monday's [Items](https://developer.monday.com/api-reference/reference/items) and [column](https://developer.monday.com/api-reference/reference/name) docs. Requests and answers follow monday's docs.

## Before you start

* **An API token:** in monday, click your profile picture, open **Developers > My access tokens** and copy it.
* **Your board id:** the number in the board's address. **Column ids:** open a column's menu to see its id (for example `status`, `email`).

## 1. Connect monday

In Kerux, open **Integrations > Connections**, click **Connect** on **Custom API** (under **Developers**):

* **How it signs in:** **API key in a header**, **Header name** `Authorization`, paste the token.
* **Base URL:** `https://api.monday.com`

Click **Save**.

## 2. Create the item when someone replies

A contact who replies leaves the campaign (the **When the contact replies** box). In that box, add **Send to another campaign** and pick a short "Replied: to monday" campaign. Its first step is a **Webhook / HTTP** step named `monday`:

```json theme={null}
{
  "method": "POST",
  "url": "/v2",
  "bodyType": "json",
  "body": {
    "query": "mutation { create_item (board_id: 1234567890, item_name: \"{{contact.full_name}} - {{contact.company}}\") { id } }"
  }
}
```

Replace `1234567890` with your board id. Column values go in a `column_values` argument as a JSON string (monday's docs show the format per column type). The answer is GraphQL's usual shape: `{ "data": { "create_item": { "id": "..." } } }`, so the item id is `{{steps.monday.response.body.data.create_item.id}}`.

## 3. Update the status when a meeting is booked

A booked meeting removes the contact from the campaign (the **When a meeting is booked** box). Start a small campaign with the **Meeting booked** Kerux event; its step runs `change_simple_column_value`:

```json theme={null}
{
  "method": "POST",
  "url": "/v2",
  "bodyType": "json",
  "body": {
    "query": "mutation { change_simple_column_value (item_id: ITEM_ID, board_id: 1234567890, column_id: \"status\", value: \"Meeting\") { id } }"
  }
}
```

The item id must reach this campaign: save it on the contact in step 2 with an **Update contact** step (a custom field such as **monday item id**) and use `{{contact.custom.monday_item_id}}` for `ITEM_ID`.

## Test with one contact

In the follow-up campaign's **Builder**, click **Test** to open **Test on one contact** and check the new item on the board.

## Common errors

> [accordion] The answer has an errors list
>
> GraphQL answers with HTTP 200 and an `errors` array when the query is wrong (for example a column id that doesn't exist). The contact's journey shows it; fix the query.

> [accordion] Not authenticated
>
> The token is missing or wrong. monday reads it straight from the `Authorization` header, without `Bearer`.

> [accordion] A name with quotes breaks the query
>
> A quote in the contact's name or company ends the GraphQL string. Pass names you don't control separately, as monday's GraphQL docs show.

Related: [Webhook steps](/help/integrations/webhook-steps.md), [Kerux events](/help/campaigns/kerux-triggers.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.