Appearance
Monday.com integration
monday.com is a work management platform where teams organize work as boards of items with typed columns. This integration lets your WeWeb backend manage boards, groups, columns, items, subitems and updates (comments), use a board's items as a table data source, and react to board events (item created, column changed, item deleted…) via webhook triggers.
Use cases
- Create monday.com items from your app (form submissions, orders, support requests → board items)
- Update item statuses, dates and other column values from backend workflows
- React to board events — item created, renamed, column changed, archived, deleted, update posted — with webhook triggers
- Display and edit a board's items in your app through a WeWeb table
- Post updates (comments) on items and manage boards, groups and columns programmatically
Setup
- In monday.com, click your profile avatar and open Developers → My Access Tokens. You can also go directly to
https://your-account.monday.com/apps/manage/tokens(swapyour-accountfor your account subdomain). Admins can also find the token under Administration → Connections → API (authentication docs). - Copy the personal API token.
- In WeWeb, open the
Data & APItab, then theIntegrationssubtab. SelectMonday, then clickAdd Connection. - Paste the Personal API Token. One connection serves all environments (
Editor,Staging,Production) — use the environment selector on the connection form, or override the generatedMONDAY_API_TOKENenvironment variable, to set a different token per environment. - Test with a simple action such as List Boards — if the token is valid, you get your boards back.
Enabling triggers (webhook)
The six triggers (see below) are fired by a webhook route on your project's backend. Unlike bot-style integrations, monday.com webhooks are registered per board, through the API itself:
- On the connection, set
Monday WebhooktoEnabledand keep the auto-generatedWebhook Path— it is an unguessable random path, and its secrecy is part of the endpoint's protection, so avoid sharing it. - Save the connection and publish your project — the webhook route must be publicly reachable, because monday verifies the URL with a challenge handshake at registration time.
- Copy the Webhook URL shown on the connection (each environment has its own URL — the copy button copies the URL of the environment you are viewing).
- Register a webhook on each board you want to watch with the Create Webhook action: pick the board, the event type (e.g.
create_item), and paste the connection's webhook URL as theTarget URL. Repeat per board, per event type, and per environment URL you want to receive events on.
THE TARGET URL MUST ANSWER MONDAY'S CHALLENGE
When you run Create Webhook, monday POSTs a { "challenge": "..." } body to the target URL and expects it echoed back. The connection's webhook URL handles this automatically — but if the URL is wrong, the project isn't published, or the webhook isn't enabled on the connection, monday fails the registration with an opaque Internal Server Error.
Deliveries for personal-token webhooks are unsigned — monday sends no signature header. Protection relies on the unguessable webhook path plus the challenge handshake proving URL ownership at registration time.
Triggers
With the webhook enabled and registered on a board, six backend triggers become available. A quirk worth knowing: the event name you subscribe with (in Create Webhook) differs from the legacy type name monday delivers inside the event payload. WeWeb maps both to its triggers — rely on the WeWeb trigger, never on event.type:
| Trigger | Subscribe with (event) | Delivered as (event.type) | Item id field |
|---|---|---|---|
| On item created | create_item | create_pulse | event.pulseId |
| On item name changed | change_name | update_name | event.pulseId |
| On column value changed | change_column_value | update_column_value | event.pulseId |
| On item archived | item_archived | archive_pulse | event.itemId |
| On item deleted | item_deleted | delete_pulse | event.itemId |
| On update created | create_update | create_update | event.pulseId |
Note the payload asymmetry: archive and delete events carry the item id as event.itemId, all the others as event.pulseId. The change_specific_column_value and change_status_column_value subscription variants fire the same On column value changed trigger. Other subscribable events (subitem events, item_moved_*, edit_update…) are acknowledged by the route but fire no trigger.
On item created
Runs when an item is created on a watched board. The item id is event.pulseId.
Example event
json
{
"app": "monday",
"type": "create_pulse",
"triggerTime": "2026-09-01T12:00:00.000Z",
"subscriptionId": 123456789,
"isRetry": false,
"userId": 12345678,
"boardId": 1234567890,
"pulseId": 9876543210,
"pulseName": "New task",
"groupId": "topics",
"groupName": "Group Title",
"groupColor": "#037f4c",
"isTopGroup": true,
"columnValues": {},
"triggerUuid": "a1b2c3d4e5f6a1b2c3d4e5f6"
}On item name changed
Runs when an item is renamed on a watched board. The new name is event.value.name, the previous one event.previousValue.name.
Example event
json
{
"app": "monday",
"type": "update_name",
"triggerTime": "2026-09-01T12:00:00.000Z",
"subscriptionId": 123456789,
"isRetry": false,
"userId": 12345678,
"boardId": 1234567890,
"groupId": "topics",
"pulseId": 9876543210,
"value": { "name": "Renamed task" },
"previousValue": { "name": "New task" },
"triggerUuid": "a1b2c3d4e5f6a1b2c3d4e5f6"
}On column value changed
Runs when a column value changes on a watched board. The changed column is event.columnId, the new value event.value (a type-specific object). Subscribing with change_specific_column_value or change_status_column_value fires this same trigger.
Example event
json
{
"app": "monday",
"type": "update_column_value",
"triggerTime": "2026-09-01T12:00:00.000Z",
"subscriptionId": 123456789,
"isRetry": false,
"userId": 12345678,
"boardId": 1234567890,
"groupId": "topics",
"pulseId": 9876543210,
"pulseName": "New task",
"columnId": "status",
"columnType": "color",
"columnTitle": "Status",
"value": { "label": { "index": 1, "text": "Done", "style": { "color": "#00c875" } } },
"previousValue": null,
"changedAt": 1787574749,
"isTopGroup": true,
"triggerUuid": "a1b2c3d4e5f6a1b2c3d4e5f6"
}On item archived
Runs when an item is archived on a watched board. Note the item id is event.itemId here (not pulseId).
Example event
json
{
"app": "monday",
"type": "archive_pulse",
"triggerTime": "2026-09-01T12:00:00.000Z",
"subscriptionId": 123456789,
"isRetry": false,
"userId": 12345678,
"boardId": 1234567890,
"itemId": 9876543210,
"itemName": "New task",
"triggerUuid": "a1b2c3d4e5f6a1b2c3d4e5f6"
}On item deleted
Runs when an item is deleted from a watched board. Note the item id is event.itemId here (not pulseId).
Example event
json
{
"app": "monday",
"type": "delete_pulse",
"triggerTime": "2026-09-01T12:00:00.000Z",
"subscriptionId": 123456789,
"isRetry": false,
"userId": 12345678,
"boardId": 1234567890,
"itemId": 9876543210,
"itemName": "New task",
"triggerUuid": "a1b2c3d4e5f6a1b2c3d4e5f6"
}On update created
Runs when an update (comment) is posted on an item of a watched board. The plain text is event.textBody, the item id event.pulseId, the update id event.updateId (event.replyId is set when the update is a reply).
Example event
json
{
"app": "monday",
"type": "create_update",
"triggerTime": "2026-09-01T12:00:00.000Z",
"subscriptionId": 123456789,
"isRetry": false,
"userId": 12345678,
"boardId": 1234567890,
"pulseId": 9876543210,
"body": "<p>Looks good!</p>",
"textBody": "Looks good!",
"updateId": 1122334455,
"replyId": null,
"triggerUuid": "a1b2c3d4e5f6a1b2c3d4e5f6"
}Using monday.com as a data source for tables
You can create WeWeb tables backed by a board's items: pick a Board in the table configuration and each item becomes a row.
Columns. The table exposes base columns — Item ID, Name, Group (the group title), State, URL, Created At, Updated At — plus one column per board column, keyed by the monday column id. Values are the column's display text; monday column types map to WeWeb types as follows: numbers, rating, auto_number and progress become numbers, checkbox becomes a boolean, date a date, creation_log and last_updated datetimes — everything else is text.
View options. A view can optionally filter and sort:
Group— Only return items from one group (empty = all groups). This field is bindable, e.g. to a view parameter viacontext.parametersfor a dynamic per-call group.Sort by—Name,Created atOrUpdated at(empty keeps the board's own order).Sort direction—Ascending(Default) orDescending; shown onceSort byis set.
Pagination is cursor-based only: the offset is an opaque string cursor, with a default page size of 100 and a maximum of 500. The group filter and sort apply on the first page only — the returned cursor carries them forward, so subsequent pages stay filtered and sorted without re-passing them.
Row CRUD. The table ships four generated workflow templates mapping row operations to actions: Get → Get Item, Create → Create Item, Update → Change Multiple Column Values, Delete → Delete Item.
Common pitfalls (setup & usage)
Column values are typed JSON (one shape per column type)
Column values objects are keyed by column id, and the value shape depends on the column type: status { "status": { "label": "Done" } } — date { "date4": { "date": "2026-01-01" } } — people { "people": { "personsAndTeams": [{ "id": 12345678, "kind": "person" }] } } — timeline { "timeline": { "from": "2026-01-01", "to": "2026-01-31" } } — dropdown { "dropdown": { "labels": ["A", "B"] } } — checkbox { "checkbox": { "checked": "true" } } — link { "link": { "url": "https://...", "text": "Docs" } } — email { "email": { "email": "a@b.c", "text": "a@b.c" } } — text and numbers take plain strings ({ "text": "hello", "numbers": "42" }). When in doubt, Change Simple Column Value is the escape hatch: plain string values, and an empty string clears the column. See the column types reference.
monday silently drops unknown column ids and wrong value shapes
Writing column values with an unknown column id, or a value object in the wrong shape for the column type, does not error — the write succeeds and the column stays empty. Only invalid simple-string values fail loudly (e.g. This status label doesn't exist... on a status column). After a write with computed column ids or shapes, verify with Get Item before trusting it.
Renaming an item is a column write
monday has no rename mutation: Change Item Name writes the item's name column via change_simple_column_value — which is why it needs the Board on top of the Item ID. Renaming an item this way fires the On item name changed trigger, like a rename in the UI.
Cursors and filters are mutually exclusive
On List Items and Get Items By Column Value, the board scope and column filters apply on the first page only. When you pass a Cursor, the board/filter inputs are ignored — the cursor carries the whole query forward, so send only the cursor for subsequent pages. cursor: null in a result means the last page. Cursors expire after about 60 minutes.
Rate limits
monday enforces a complexity budget per account rather than a flat request count — heavy queries exhaust it faster. On top of that, Create Board and Duplicate Board are capped at 40 mutations per minute. See the rate limits docs.
The default "Main workspace" may be missing from workspace pickers
On some plans the workspaces API only returns explicitly created workspaces, so the default Main workspace doesn't appear in the Workspace dropdowns. Leaving the field empty targets the Main workspace — that's the way to create boards there.
Archive vs delete
Archiving (boards, groups, items) is recoverable from the monday.com UI; deleting is permanent. Prefer the archive actions unless permanent removal is intended. Also note the state/archived flags returned right after an archive call can lag behind the operation — don't build assertions on them immediately after the write.
Board pickers are design-time only
The Board, Column and Workspace dropdowns are not bindable — their values drive dependent dropdowns and field visibility, so workflows use ids picked (or pasted) at design time. You cannot bind a board id to a board created earlier in the same workflow. Group pickers, Item ID, Cursor and all value fields are bindable, so chaining a Create Group result into Create Item works fine.
All ids are strings
monday ids look numeric but the API treats them as strings — pass and compare them as strings ("1234567890"). Group ids are genuinely textual (e.g. topics).
A nonexistent board: empty result vs error
Get Board follows monday's list semantics and returns [] for a nonexistent or inaccessible board id — not an error. The board-scoped list actions (List Items, List Groups, List Columns) instead throw Board ... not found or not accessible, so an empty result from them always means a real, empty board.
All Actions
This integration provides 39 actions, all backed by the monday.com GraphQL API (POST https://api.monday.com/v2), grouped by resource.
Boards
| Action | Description |
|---|---|
| Create Board | Create a board, optionally in a workspace/folder, from a template, with owners and subscribers |
| Get Board | Get one or more boards by ID, including their columns and groups |
| List Boards | List the account's boards, page-numbered, with optional filters |
| Update Board | Update a board's name, description or communication value |
| Duplicate Board | Duplicate a board — structure only, with items, or with items and updates |
| Archive Board | Archive a board (recoverable) |
| Delete Board | Delete a board permanently |
Columns
| Action | Description |
|---|---|
| Create Column | Create a column on a board, optionally with type-specific defaults |
| List Columns | List a board's columns (id, title, type, settings) |
| Change Column Value | Set one column value of an item using the column type JSON format |
| Change Simple Column Value | Set one column value using the simple string format |
| Change Multiple Column Values | Set several column values of an item in one call |
| Change Column Title | Rename a column |
| Delete Column | Delete a column and all its values |
Groups
| Action | Description |
|---|---|
| Create Group | Create a group (row section) on a board |
| List Groups | List a board's groups |
| Update Group | Update a group's title, color or position |
| Duplicate Group | Duplicate a group with its items |
| Archive Group | Archive a group and its items (recoverable) |
| Delete Group | Delete a group and all its items permanently |
Items
| Action | Description |
|---|---|
| Create Item | Create an item (task/row) on a board, optionally with initial column values |
| Get Item | Get one or more items by ID with all their column values |
| List Items | List a board's items, cursor-paginated |
| Get Items By Column Value | Find items whose columns match given values, cursor-paginated |
| Change Item Name | Rename an item (via its name column) |
| Move Item To Group | Move an item to another group of the same board |
| Move Item To Board | Move an item to a group of another board, with optional column mapping |
| Archive Item | Archive an item (recoverable) |
| Duplicate Item | Duplicate an item, optionally with its updates |
| Delete Item | Delete an item permanently |
Subitems
| Action | Description |
|---|---|
| Create Subitem | Create a subitem under an item |
| List Subitems | List the subitems of an item |
Updates
| Action | Description |
|---|---|
| Create Update | Post an update (comment) on an item, optionally as a reply and with mentions |
| List Updates | List an item's updates, page-numbered |
| Edit Update | Edit the body of an update |
| Delete Update | Delete an update |
Webhooks
| Action | Description |
|---|---|
| Create Webhook | Subscribe a URL to a board event (fires the WeWeb triggers) |
| List Webhooks | List the webhooks registered on a board |
| Delete Webhook | Delete a webhook subscription |
Action details
Create Board
Create a monday.com board, optionally in a workspace/folder, from a template, with owners and subscribers. Rate limited to 40 board creations per minute.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board name | "Project tracker" | Name of the new board. | Required |
Board kind | "public" | Visibility of the board: public (to the account), private or share (shareable). | Required; valid: public, private, share |
DescriptionOptional | "Tracks the Q4 launch tasks" | Description of the board. | String |
WorkspaceOptional | "9876543" | Workspace to place the board in, picked from your workspaces. Leave empty for the default Main workspace (the picker may not list it). | Design-time picker |
Folder IDOptional | "1234567" | Folder to place the board in (inside the selected workspace). In the Advanced subsection. | String |
Template IDOptional | "1234567890" | Board or template ID to create the board from. In Advanced. | String |
Board ownersOptional | — | Users to set as board owners, picked from your account users. In Advanced. | Design-time picker (multi) |
Board subscribersOptional | — | Users to subscribe to the board. In Advanced. | Design-time picker (multi) |
Owner team IDsOptional | ["1234567"] | Team IDs to set as board owners. In Advanced. | Array of strings |
Subscriber team IDsOptional | ["1234567"] | Team IDs to subscribe to the board. In Advanced. | Array of strings |
Create emptyOptional | true | Create the board without the default items monday adds to new boards. In Advanced. | Boolean, default false |
Example output
json
{
"id": "1234567890",
"name": "Project tracker",
"description": "Tracks the Q4 launch tasks",
"board_kind": "public",
"state": "active",
"board_folder_id": null,
"workspace_id": "9876543",
"url": "https://acme.monday.com/boards/1234567890"
}Documentation of API endpoint that powers action: monday.com API – Boards (create_board)
Get Board
Get one or more boards by ID, including their columns and groups. Follows monday's list semantics: unknown or inaccessible ids are simply absent from the result (an all-unknown request returns [], not an error).
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board IDs | ["1234567890"] | IDs of the boards to fetch. | Required; array of strings |
StateOptional | "active" | Filter boards by state. Defaults to active. | Valid: active, archived, deleted, all |
Example output
json
[
{
"id": "1234567890",
"name": "Project tracker",
"description": null,
"board_kind": "public",
"state": "active",
"board_folder_id": null,
"workspace_id": "9876543",
"url": "https://acme.monday.com/boards/1234567890",
"columns": [
{ "id": "name", "title": "Name", "type": "name", "description": null, "settings_str": "{}" },
{ "id": "status", "title": "Status", "type": "status", "description": null, "settings_str": "{\"labels\":{\"0\":\"Working on it\",\"1\":\"Done\"}}" }
],
"groups": [
{ "id": "topics", "title": "Group Title", "color": "#037f4c", "position": "65536", "archived": false, "deleted": false }
]
}
]Documentation of API endpoint that powers action: monday.com API – Boards
List Boards
List the account's boards with page-based pagination and optional filters. Default ordering is not guaranteed — pass Order by explicitly when it matters.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
WorkspacesOptional | — | Restrict the list to these workspaces, picked from your account. The default Main workspace may be missing from the picker (API quirk). | Design-time picker (multi) |
Board kindOptional | "public" | Filter by board visibility. | Valid: public, private, share |
StateOptional | "active" | Filter boards by state. Defaults to active. | Valid: active, archived, deleted, all |
Order byOptional | "used_at" | Order boards by created_at or used_at (most recently used first). | Valid: created_at, used_at |
LimitOptional | 25 | Number of boards per page. | Number, default 25 |
PageOptional | 1 | Page number to fetch. | Number, starting at 1 |
Example output
json
[
{ "id": "1234567890", "name": "Project tracker", "description": null, "board_kind": "public", "state": "active", "board_folder_id": null, "workspace_id": "9876543", "url": "https://acme.monday.com/boards/1234567890" },
{ "id": "1234567891", "name": "Roadmap", "description": null, "board_kind": "public", "state": "active", "board_folder_id": null, "workspace_id": "9876543", "url": "https://acme.monday.com/boards/1234567891" }
]Documentation of API endpoint that powers action: monday.com API – Boards
Update Board
Update one board attribute: its name, description or communication value.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to update. | Required; design-time picker |
Attribute | "name" | The board attribute to update. | Required; valid: name, description, communication |
New value | "Renamed board" | The new value for the selected attribute. | Required |
Example output — note the result is a JSON string describing the applied change, not an object:
json
"{\"success\":true,\"undo_data\":{\"undo_record_id\":123456789,\"action_type\":\"modify_project\",\"entity_type\":\"Board\",\"original_value\":null,\"count\":1}}"Documentation of API endpoint that powers action: monday.com API – Boards (update_board)
Duplicate Board
Duplicate a board — structure only, with items, or with items and updates. Rate limited to 40 duplications per minute.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to duplicate. | Required; design-time picker |
Duplicate type | "duplicate_board_with_pulses" | What to copy: structure only, structure + items, or structure + items + updates. | Required; valid: duplicate_board_with_structure, duplicate_board_with_pulses, duplicate_board_with_pulses_and_updates |
New board nameOptional | "Project tracker (copy)" | Name for the duplicated board. Defaults to Duplicate of .... | String |
WorkspaceOptional | "9876543" | Workspace to place the duplicate in. Leave empty to keep the original workspace. | Design-time picker |
Folder IDOptional | "1234567" | Folder to place the duplicated board in. | String |
Keep subscribersOptional | false | Copy the original board subscribers to the duplicate. | Boolean, default false |
Example output
json
{
"id": "1234567892",
"name": "Duplicate of Project tracker",
"description": null,
"board_kind": "public",
"state": "active",
"board_folder_id": null,
"workspace_id": "9876543",
"url": "https://acme.monday.com/boards/1234567892"
}Documentation of API endpoint that powers action: monday.com API – Boards (duplicate_board)
Archive Board
Archive a board. Archived boards can be restored from monday.com — prefer this over Delete Board when in doubt.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to archive. | Required; design-time picker |
Example output
json
{ "id": "1234567890", "state": "archived" }Documentation of API endpoint that powers action: monday.com API – Boards (archive_board)
Delete Board
Delete a board permanently. Use Archive Board to keep it recoverable.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to delete. | Required; design-time picker |
Example output
json
{ "id": "1234567890", "state": "deleted" }Documentation of API endpoint that powers action: monday.com API – Boards (delete_board)
Create Column
Create a column on a board, optionally with type-specific defaults (e.g. status labels).
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to add the column to. | Required; design-time picker |
Title | "Priority" | Title of the new column. | Required |
Column type | "status" | Type of the new column — the common creatable types. Other types (e.g. board_relation, mirror, formula) exist but usually need extra configuration in monday. | Required; valid: text, long_text, numbers, status, date, people, dropdown, email, phone, link, checkbox, rating, timeline, world_clock, country, color_picker, hour, week, tags, location, file |
DescriptionOptional | "Current task priority" | Description of the column. | String |
Column IDOptional | "priority_level" | User-defined column id. In the Advanced subsection. | 1–20 chars, a-z and _ only, unique on the board |
DefaultsOptional | {"labels":{"1":"To do","2":"Done"}} | Type-specific default settings, e.g. status labels. Sent to monday as JSON. In Advanced. | Object |
After columnOptional | "status" | Place the new column right after this column. In Advanced. | Design-time picker; shown once a Board is selected |
Example output
json
{ "id": "priority_level", "title": "Priority", "type": "status", "description": "Current task priority", "settings_str": "{\"labels\":{\"1\":\"To do\",\"2\":\"Done\"}}" }Documentation of API endpoint that powers action: monday.com API – Columns (create_column)
List Columns
List a board's columns (id, title, type, settings), optionally filtered by ids or types. Throws Board ... not found or not accessible for a nonexistent or inaccessible board id.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to list columns from. | Required; design-time picker |
Column IDsOptional | ["status", "date4"] | Restrict the list to these column ids. | Array of strings |
Column typesOptional | ["status"] | Restrict the list to these column types (e.g. status, date, people). | Array of strings |
Example output
json
[
{ "id": "name", "title": "Name", "type": "name", "description": null, "settings_str": "{}" },
{ "id": "status", "title": "Status", "type": "status", "description": null, "settings_str": "{\"labels\":{\"0\":\"Working on it\",\"1\":\"Done\"}}" },
{ "id": "date4", "title": "Due date", "type": "date", "description": null, "settings_str": "{}" }
]Documentation of API endpoint that powers action: monday.com API – Columns
Change Column Value
Set a single column value of an item using the column type JSON format (e.g. { "label": "Done" } for a status column). monday silently ignores wrongly-shaped value objects — verify with Get Item when unsure.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board the item belongs to. | Required; design-time picker |
Item ID | "9876543210" | ID of the item, from a create action result, a list action or a trigger event (event.pulseId). | Required |
Column | "status" | The column to update. | Required; design-time picker; shown once a Board is selected |
Value | {"label":"Done"} | JSON value in the column type format, e.g. status: { "label": "Done" } — date: { "date": "2026-01-01" }. | Required; object |
Create labels if missingOptional | false | Create missing status/dropdown labels on the fly instead of failing. Requires board owner permissions. | Boolean, default false |
Example output
json
{
"id": "9876543210",
"name": "Design the landing page",
"state": "active",
"url": "https://acme.monday.com/boards/1234567890/pulses/9876543210",
"created_at": "2026-09-01T10:12:33Z",
"updated_at": "2026-09-01T10:15:02Z",
"board": { "id": "1234567890", "name": "Project tracker" },
"group": { "id": "topics", "title": "Group Title" },
"column_values": [
{ "id": "status", "text": "Done", "value": "{\"index\":1,\"post_id\":null,\"changed_at\":\"2026-09-01T10:15:02.126Z\"}", "type": "status", "column": { "id": "status", "title": "Status" } }
]
}Documentation of API endpoint that powers action: monday.com API – Columns (change_column_value)
Change Simple Column Value
Set a single column value of an item using the simple string format (e.g. Done for a status column, 2026-01-01 for a date). An empty value clears the column. Unlike JSON-format writes, invalid simple values fail loudly (e.g. This status label doesn't exist...).
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board the item belongs to. | Required; design-time picker |
Item ID | "9876543210" | ID of the item to update. | Required |
Column | "status" | The column to update. | Required; design-time picker; shown once a Board is selected |
Value | "Done" | Simple string value, e.g. Done for a status column, 2026-01-01 for a date. An empty value clears the column. | Required; string |
Create labels if missingOptional | false | Create missing status/dropdown labels on the fly instead of failing. Requires board owner permissions. | Boolean, default false |
Example output: the full item object, as in Change Column Value.
Documentation of API endpoint that powers action: monday.com API – Columns (change_simple_column_value)
Change Multiple Column Values
Set several column values of an item in one call, keyed by column id in the column type JSON format. Remember: monday silently ignores unknown column ids and wrongly-shaped value objects — those columns just stay unchanged.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board the item belongs to. | Required; design-time picker |
Item ID | "9876543210" | ID of the item to update. | Required |
Column values | {"status":{"label":"Done"},"date4":{"date":"2026-01-01"}} | Column values keyed by column id — the JSON shape depends on the column type (see the pitfall above). | Required; object |
Create labels if missingOptional | false | Create missing status/dropdown labels on the fly instead of failing. Requires board owner permissions. | Boolean, default false |
Example output: the full item object with the updated column_values, as in Change Column Value.
Documentation of API endpoint that powers action: monday.com API – Columns (change_multiple_column_values)
Change Column Title
Rename a column of a board.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board the column belongs to. | Required; design-time picker |
Column | "status" | The column to rename. | Required; design-time picker; shown once a Board is selected |
New title | "Priority" | The new title of the column. | Required |
Example output
json
{ "id": "status", "title": "Priority", "type": "status", "description": null, "settings_str": "{\"labels\":{\"0\":\"Working on it\",\"1\":\"Done\"}}" }Documentation of API endpoint that powers action: monday.com API – Columns (change_column_title)
Delete Column
Delete a column from a board. All values stored in the column are lost permanently.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board the column belongs to. | Required; design-time picker |
Column | "priority_level" | The column to delete — its values are lost permanently. | Required; design-time picker; shown once a Board is selected |
Example output
json
{ "id": "priority_level" }Documentation of API endpoint that powers action: monday.com API – Columns (delete_column)
Create Group
Create a group (row section) on a board. With no Relative to group, the new group is added at the top of the board; with a group selected but no position method, monday defaults to after_at (below it).
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to add the group to. | Required; design-time picker |
Group name | "Backlog" | Name of the new group. | Required; max 255 characters |
Group colorOptional | "#037f4c" | Hex color from monday's supported palette. Unsupported colors are rejected. | String |
Relative to groupOptional | "topics" | Position the new group relative to this group. | Shown once a Board is selected |
Position methodOptional | "after_at" | Position the new group before_at or after_at the group in Relative to group. Ignored without one. | Valid: before_at, after_at |
Example output
json
{ "id": "group_mkt8xy2a", "title": "Backlog", "color": "#037f4c", "position": "98304", "archived": false, "deleted": false }Documentation of API endpoint that powers action: monday.com API – Groups (create_group)
List Groups
List a board's groups. Throws Board ... not found or not accessible for a nonexistent or inaccessible board id.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to list groups from. | Required; design-time picker |
Group IDsOptional | ["topics"] | Restrict the list to these group ids. | Array of strings |
Example output
json
[
{ "id": "topics", "title": "Group Title", "color": "#037f4c", "position": "65536", "archived": false, "deleted": false },
{ "id": "group_mkt8xy2a", "title": "Backlog", "color": "#579bfc", "position": "98304", "archived": false, "deleted": false }
]Documentation of API endpoint that powers action: monday.com API – Groups
Update Group
Update one group attribute: title, color or (relative) position.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board the group belongs to. | Required; design-time picker |
Group | "topics" | The group to update. | Required; shown once a Board is selected |
Attribute | "title" | The group attribute to update. relative_position_after/relative_position_before expect a group id as the new value; color expects a supported hex color. | Required; valid: title, color, position (deprecated), relative_position_after, relative_position_before |
New value | "Done tasks" | The new value: a title, a hex color (e.g. #037f4c), or a group id for the relative position attributes. | Required |
Example output
json
{ "id": "topics", "title": "Done tasks", "color": "#037f4c", "position": "65536", "archived": false, "deleted": false }Documentation of API endpoint that powers action: monday.com API – Groups (update_group)
Duplicate Group
Duplicate a group of a board, including its items.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board the group belongs to. | Required; design-time picker |
Group | "topics" | The group to duplicate. | Required; shown once a Board is selected |
New group titleOptional | "Backlog (copy)" | Title for the duplicated group. Defaults to Duplicate of .... | String |
Add to topOptional | false | Place the duplicated group at the top of the board. | Boolean, default false |
Example output
json
{ "id": "duplicate_of_topics_1234", "title": "Duplicate of Group Title", "color": "#037f4c", "position": "131072", "archived": false, "deleted": false }Documentation of API endpoint that powers action: monday.com API – Groups (duplicate_group)
Archive Group
Archive a group and its items. Archived groups can be restored from monday.com. The returned archived flag can lag right after the call.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board the group belongs to. | Required; design-time picker |
Group | "topics" | The group to archive (with its items). | Required; shown once a Board is selected |
Example output
json
{ "id": "topics", "archived": true }Documentation of API endpoint that powers action: monday.com API – Groups (archive_group)
Delete Group
Delete a group and all its items permanently. Use Archive Group to keep it recoverable.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board the group belongs to. | Required; design-time picker |
Group | "group_mkt8xy2a" | The group to delete with all its items. | Required; shown once a Board is selected |
Example output
json
{ "id": "group_mkt8xy2a", "deleted": true }Documentation of API endpoint that powers action: monday.com API – Groups (delete_group)
Create Item
Create an item (task/row) on a board, optionally in a specific group and with initial column values.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to create the item on. | Required; design-time picker |
Item name | "Design the landing page" | Name of the new item. | Required |
GroupOptional | "topics" | The group to create the item in. Defaults to the first group of the board. | Shown once a Board is selected |
Column valuesOptional | {"status":{"label":"Done"},"date4":{"date":"2026-01-01"}} | Column values keyed by column id — the JSON shape depends on the column type. monday silently ignores unknown column ids and wrongly-shaped value objects. | Object |
Create labels if missingOptional | false | Create missing status/dropdown labels on the fly instead of failing. Requires board owner permissions. | Boolean, default false |
Position methodOptional | "after_at" | Position the new item before_at or after_at the item in Relative to item; without one, the item is appended at the bottom of the group. In the Advanced subsection. | Valid: before_at, after_at |
Relative to itemOptional | "9876543209" | Item to position the new item relative to. In Advanced. | String |
Example output
json
{
"id": "9876543210",
"name": "Design the landing page",
"state": "active",
"url": "https://acme.monday.com/boards/1234567890/pulses/9876543210",
"created_at": "2026-09-01T10:12:33Z",
"updated_at": "2026-09-01T10:12:33Z",
"board": { "id": "1234567890", "name": "Project tracker" },
"group": { "id": "topics", "title": "Group Title" },
"column_values": [
{ "id": "status", "text": "Done", "value": "{\"index\":1}", "type": "status", "column": { "id": "status", "title": "Status" } },
{ "id": "date4", "text": "2026-01-01", "value": "{\"date\":\"2026-01-01\"}", "type": "date", "column": { "id": "date4", "title": "Due date" } }
]
}Documentation of API endpoint that powers action: monday.com API – Items (create_item)
Get Item
Get one or more items by ID, with all their column values. Subitems come back with a non-null parent_item.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Item IDs | ["9876543210"] | IDs of the items to fetch. | Required; array of strings, max 100 |
Example output
json
[
{
"id": "9876543210",
"name": "Design the landing page",
"state": "active",
"url": "https://acme.monday.com/boards/1234567890/pulses/9876543210",
"created_at": "2026-09-01T10:12:33Z",
"updated_at": "2026-09-01T10:15:02Z",
"board": { "id": "1234567890", "name": "Project tracker" },
"group": { "id": "topics", "title": "Group Title" },
"column_values": [
{ "id": "status", "text": "Done", "value": "{\"index\":1}", "type": "status", "column": { "id": "status", "title": "Status" } }
],
"parent_item": null
}
]Documentation of API endpoint that powers action: monday.com API – Items
List Items
List a board's items with cursor pagination. Pass the returned cursor to get the next page — the cursor carries the board scope, so Board is ignored on cursor pages. cursor: null = last page. Throws Board ... not found or not accessible for a nonexistent or inaccessible board id.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to list items from. Ignored when a Cursor is set. | Required (first page); design-time picker |
LimitOptional | 25 | Maximum number of results per page. | Number, default 25, max 500 |
CursorOptional | "MSw5NzI4..." | Cursor returned by the previous page. Leave empty for the first page. Cursors expire after ~60 minutes. | String |
Example output
json
{
"cursor": "MSw5NzI4NDcyLDJfMiw0MiwzNXw0MTk3ODA0NQ",
"items": [
{
"id": "9876543210",
"name": "Design the landing page",
"state": "active",
"url": "https://acme.monday.com/boards/1234567890/pulses/9876543210",
"created_at": "2026-09-01T10:12:33Z",
"updated_at": "2026-09-01T10:15:02Z",
"board": { "id": "1234567890", "name": "Project tracker" },
"group": { "id": "topics", "title": "Group Title" },
"column_values": [
{ "id": "status", "text": "Done", "value": "{\"index\":1}", "type": "status", "column": { "id": "status", "title": "Status" } }
]
}
]
}Documentation of API endpoint that powers action: monday.com API – Items page (items_page / next_items_page)
Get Items By Column Value
Find items on a board whose column(s) match given values, cursor-paginated. Column filters and cursor are mutually exclusive: pass filters on the first page only — the returned cursor carries them forward.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to search items on. | Required; design-time picker |
Column filters | [{"column_id":"status","column_values":["Done"]}] | Filters: items match when the column holds one of the given values (in the column text format, e.g. a status label). Each filter row has a Column ID and Values. Supported column types only (status, text, numbers, date…). | Required on the first page; ignored when a Cursor is set |
LimitOptional | 25 | Maximum number of results per page. | Number, default 25, max 500 |
CursorOptional | "MSw5NzI4..." | Cursor returned by the previous page. When set, Column filters are ignored — the cursor carries the filter forward. | String |
Example output
json
{
"cursor": null,
"items": [
{
"id": "9876543210",
"name": "Design the landing page",
"state": "active",
"url": "https://acme.monday.com/boards/1234567890/pulses/9876543210",
"created_at": "2026-09-01T10:12:33Z",
"updated_at": "2026-09-01T10:15:02Z",
"board": { "id": "1234567890", "name": "Project tracker" },
"group": { "id": "topics", "title": "Group Title" },
"column_values": [
{ "id": "status", "text": "Done", "value": "{\"index\":1}", "type": "status", "column": { "id": "status", "title": "Status" } }
]
}
]
}Documentation of API endpoint that powers action: monday.com API – Items page by column values
Change Item Name
Rename an item. monday has no dedicated rename mutation — this action writes the item's name column via change_simple_column_value, which is why the Board is required on top of the Item ID.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board the item belongs to. | Required; design-time picker |
Item ID | "9876543210" | The item to rename. | Required |
New name | "Design the landing page v2" | The new name of the item. | Required |
Example output: the full item object with the new name, as in Change Column Value.
Documentation of API endpoint that powers action: monday.com API – Columns (change_simple_column_value)
Move Item To Group
Move an item to another group of the same board.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Item ID | "9876543210" | The item to move. | Required |
Group ID | "topics" | ID of the target group on the same board (use List Groups to find it). A plain text field — this action has no board input to drive a group dropdown. | Required |
Example output: the full item object with the new group, as in Change Column Value.
Documentation of API endpoint that powers action: monday.com API – Items (move_item_to_group)
Move Item To Board
Move an item to a group of another board, optionally mapping its columns (and its subitems' columns) onto the target board's columns. Unmapped columns lose their values.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Item ID | "9876543210" | The item to move. | Required |
Target board | "1234567891" | The board to move the item to. | Required; design-time picker |
Target group | "topics" | The group of the target board to move the item into. | Required; shown once a Target board is selected |
Columns mappingOptional | [{"source":"status","target":"status_1"}] | Map source board columns onto target board columns. Each row has a Source column ID and a Target column ID (empty target = value dropped). | Array of { source, target } |
Subitems columns mappingOptional | [{"source":"status","target":"status_1"}] | Same as Columns mapping, for the subitems board columns. | Array of { source, target } |
Example output: the full item object on its new board and group, as in Change Column Value.
Documentation of API endpoint that powers action: monday.com API – Items (move_item_to_board)
Archive Item
Archive an item. Archived items can be restored from monday.com. Fires the On item archived trigger on watched boards. The returned state can lag right after the call.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Item ID | "9876543210" | The item to archive. | Required |
Example output
json
{ "id": "9876543210", "state": "archived" }Documentation of API endpoint that powers action: monday.com API – Items (archive_item)
Duplicate Item
Duplicate an item on its board, optionally with its updates (comments).
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board the item belongs to. | Required; design-time picker |
Item ID | "9876543210" | The item to duplicate. | Required |
Include updatesOptional | false | Also copy the item updates (comments). | Boolean, default false |
Example output: the duplicated item object (new id), as in Change Column Value.
Documentation of API endpoint that powers action: monday.com API – Items (duplicate_item)
Delete Item
Delete an item permanently. Use Archive Item to keep it recoverable. Fires the On item deleted trigger on watched boards.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Item ID | "9876543210" | The item to delete. | Required |
Example output
json
{ "id": "9876543210", "state": "deleted" }Documentation of API endpoint that powers action: monday.com API – Items (delete_item)
Create Subitem
Create a subitem under an item. Subitems live on a separate hidden board — their column ids differ from the parent board's.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Parent item ID | "9876543210" | The item to create the subitem under. | Required |
Subitem name | "Write the copy" | Name of the new subitem. | Required |
Column valuesOptional | {"status":{"label":"Done"}} | Column values keyed by column id of the subitems board (subitem columns differ from the parent board — list them via a subitem's board). | Object |
Create labels if missingOptional | false | Create missing status/dropdown labels on the fly instead of failing. Requires board owner permissions. | Boolean, default false |
Example output
json
{
"id": "9876543211",
"name": "Write the copy",
"state": "active",
"url": "https://acme.monday.com/boards/1234567899/pulses/9876543211",
"created_at": "2026-09-01T10:20:00Z",
"updated_at": "2026-09-01T10:20:00Z",
"board": { "id": "1234567899", "name": "Subitems of Project tracker" },
"group": { "id": "topics", "title": "Subitems" },
"column_values": [],
"parent_item": { "id": "9876543210", "name": "Design the landing page" }
}Documentation of API endpoint that powers action: monday.com API – Subitems (create_subitem)
List Subitems
List the subitems of an item.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Item ID | "9876543210" | The parent item to list subitems from. | Required |
Example output
json
[
{
"id": "9876543211",
"name": "Write the copy",
"state": "active",
"url": "https://acme.monday.com/boards/1234567899/pulses/9876543211",
"created_at": "2026-09-01T10:20:00Z",
"updated_at": "2026-09-01T10:20:00Z",
"board": { "id": "1234567899", "name": "Subitems of Project tracker" },
"group": { "id": "topics", "title": "Subitems" },
"column_values": []
}
]Documentation of API endpoint that powers action: monday.com API – Subitems
Create Update
Post an update (comment) on an item, optionally as a reply to another update and with user/team mentions. Fires the On update created trigger on watched boards.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Item ID | "9876543210" | The item to post the update on. | Required |
Body | "Shipped to staging" | Text of the update. Supports simple HTML (<b>, <a>, lists…). | Required |
Reply to update IDOptional | "1122334455" | Post this update as a reply to another update. | String |
MentionsOptional | [{"id":"12345678","type":"User"}] | Users/teams to mention. Each row has an ID and a Type — usually User (also Team or Project). | Array of { id, type } |
Example output
json
{
"id": "1122334455",
"body": "<p>Shipped to <b>staging</b></p>",
"text_body": "Shipped to staging",
"created_at": "2026-09-01T10:30:00Z",
"updated_at": "2026-09-01T10:30:00Z",
"creator_id": "12345678",
"item_id": "9876543210",
"replies": []
}Documentation of API endpoint that powers action: monday.com API – Updates (create_update)
List Updates
List an item's updates (comments), page-numbered. Replies come nested under their parent update.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Item ID | "9876543210" | The item to list updates from. | Required |
LimitOptional | 25 | Number of updates per page. | Number, default 25 |
PageOptional | 1 | Page number to fetch. | Number, starting at 1 |
Example output
json
[
{
"id": "1122334455",
"body": "<p>Shipped to <b>staging</b></p>",
"text_body": "Shipped to staging",
"created_at": "2026-09-01T10:30:00Z",
"updated_at": "2026-09-01T10:32:00Z",
"creator_id": "12345678",
"item_id": "9876543210",
"replies": [
{ "id": "1122334456", "body": "<p>Looks good!</p>", "text_body": "Looks good!", "created_at": "2026-09-01T10:32:00Z", "creator_id": "12345679" }
]
}
]Documentation of API endpoint that powers action: monday.com API – Updates
Edit Update
Edit the body of an existing update (comment).
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Update ID | "1122334455" | The update to edit (from Create Update or List Updates). | Required |
New body | "Shipped to production" | The new body of the update. Supports simple HTML. | Required |
Example output
json
{
"id": "1122334455",
"body": "<p>Shipped to <b>production</b></p>",
"text_body": "Shipped to production",
"created_at": "2026-09-01T10:30:00Z",
"updated_at": "2026-09-01T11:00:00Z",
"creator_id": "12345678",
"item_id": "9876543210",
"replies": []
}Documentation of API endpoint that powers action: monday.com API – Updates (edit_update)
Delete Update
Delete an update (comment).
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Update ID | "1122334455" | The update to delete. | Required |
Example output
json
{ "id": "1122334455" }Documentation of API endpoint that powers action: monday.com API – Updates (delete_update)
Create Webhook
Subscribe a URL to a board event. Point it at the connection's webhook URL (shown on the connection settings) to fire the WeWeb triggers — monday verifies the URL with a challenge handshake at creation, and fails with an opaque Internal Server Error if the URL doesn't echo the challenge.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to watch. | Required; design-time picker |
Target URL | "https://myproject-server-editor.weweb-server.io/api/monday/webhook/abc123" | URL monday will POST events to. It must echo back the JSON challenge monday sends at creation, or the call fails. Use the webhook URL shown on the connection settings. | Required; HTTPS |
Event | "create_item" | Board event to subscribe to. Note monday delivers legacy event type names (e.g. create_item arrives as create_pulse) — WeWeb maps both to its triggers. | Required; valid: change_column_value, change_name, change_specific_column_value, change_status_column_value, change_subitem_column_value, change_subitem_name, create_column, create_item, create_subitem, create_subitem_update, create_update, delete_update, edit_update, item_archived, item_deleted, item_moved_to_any_group, item_moved_to_specific_group, item_restored, move_subitem, subitem_archived, subitem_deleted |
ConfigOptional | {"columnId":"status"} | Event-specific config, e.g. { "columnId": "status" } for change_specific_column_value or { "groupId": "topics" } for item_moved_to_specific_group. Sent to monday as JSON. | Object |
Example output
json
{ "id": "123456", "board_id": "1234567890", "event": "create_item", "config": null }Documentation of API endpoint that powers action: monday.com API – Webhooks (create_webhook)
List Webhooks
List the webhooks registered on a board.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Board | "1234567890" | The board to list webhooks from. | Required; design-time picker |
Example output
json
[
{ "id": "123456", "board_id": "1234567890", "event": "create_item", "config": null }
]Documentation of API endpoint that powers action: monday.com API – Webhooks
Delete Webhook
Delete a webhook subscription — the corresponding board events stop being delivered.
Inputs
| Display Key | Example Input | Description | Restrictions |
|---|---|---|---|
Webhook ID | "123456" | The webhook to delete (from Create Webhook or List Webhooks). | Required |
Example output
json
{ "id": "123456", "board_id": "1234567890" }Documentation of API endpoint that powers action: monday.com API – Webhooks (delete_webhook)
Error handling
Errors come from two places: guards WeWeb raises before/around the call, and monday.com GraphQL errors passed through as-is.
| Error | Raised by | Reason |
|---|---|---|
Board <id> not found or not accessible with this connection | WeWeb | Thrown by the board-scoped reads (List Items, List Groups, List Columns) when the board id doesn't exist or the token can't access it. (Get Board instead returns [], following monday's list semantics.) |
monday table view: board <id> not found or not accessible / monday table view: board_id is not configured | WeWeb | The table data source's board is missing, deleted, or not accessible with the connection's token. |
400 — { "code": "MISSING_API_TOKEN" } | WeWeb | The connection has no API token for the current environment — raised by the editor's dropdown/core functions (board, group, column, workspace, user pickers). |
Authentication error (e.g. Not Authenticated) | monday.com | Invalid, revoked or empty API token on an action — passed through from the GraphQL API. |
Internal Server Error | monday.com | Opaque error returned by Create Webhook when the target URL does not echo the challenge handshake (URL wrong, webhook disabled on the connection, or project not published). |
Column value errors, e.g. This status label doesn't exist, possible statuses are: ... | monday.com | An invalid simple string value on a typed column. Note the asymmetry: wrongly-shaped value objects and unknown column ids do NOT error — they are silently ignored. |
| Complexity / rate-limit errors | monday.com | The account's complexity budget is exhausted, or Create Board/Duplicate Board exceeded their 40 mutations/minute cap — wait for the window to reset and retry. |
FAQs
Where do I find my monday.com API token?
Click your profile avatar in monday.com and open Developers → My Access Tokens, or go to https://your-account.monday.com/apps/manage/tokens. Admins can also find it under Administration → Connections → API. It's a personal token — API calls act as that user.
Why does Create Webhook fail with "Internal Server Error"?
monday returns this opaque error when the Target URL fails the challenge handshake — it POSTs { "challenge": "..." } at registration and expects it echoed back. Check, in order: the URL is the connection's webhook URL (copy it from the connection settings), Monday Webhook is Enabled on the connection, and the project has been published so the route is publicly reachable.
Why don't my triggers fire?
Triggers need three things: the webhook enabled on the connection, the project published, and a webhook registered on the specific board via Create Webhook with the right event type (one webhook per board per event). Use List Webhooks on the board to verify. Also remember each environment has its own webhook URL — a webhook registered against the Editor URL doesn't fire Production triggers.
Why did my column update succeed but change nothing?
monday silently ignores unknown column ids and wrongly-shaped value objects in Column values — the write succeeds and those columns stay empty. Double-check the column ids with List Columns and the value shape for the column type (see the pitfall cheat sheet), or use Change Simple Column Value, whose invalid values fail loudly. Verify with Get Item after computed writes.
How do I paginate through board items?
List Items and Get Items By Column Value are cursor-based: the first page takes the board (and filters); every subsequent call takes only the Cursor from the previous result — it carries the board scope and filters forward. cursor: null means the last page. Cursors expire after ~60 minutes, and the page size maxes out at 500.
How do I rename an item?
Use Change Item Name. monday has no rename mutation — the action writes the item's name column (via change_simple_column_value), which is why it asks for the Board as well as the Item ID. Renames done this way fire the On item name changed trigger like a manual rename.
Why is my Main workspace missing from the workspace dropdown?
On some plans the workspaces API only returns explicitly created workspaces, not the default Main workspace. Leave the Workspace field empty to target the Main workspace (e.g. in Create Board).

