Event
trigger.clickup_event
TriggerBusiness appsconnection requiredruns in-engine
Registers a webhook in the tenant's ClickUp Workspace on publish and starts one run per delivered event, verified against ClickUp's X-Signature.
Start a run when ClickUp reports a change (task, list, folder, goal).
Connection
- Required
- Yes — the node will not save without one
- Auth type
- API key
- Providers
- ClickUp
- Secret shape
- the ClickUp personal API token (pk_…)
- Resolved by
- config.connection_id, else node.connection_id
- Note
- The token must belong to a member of the Workspace named in team_id — ClickUp answers 401 for a Workspace the token cannot see. Publishing also needs MANTLE_APP_PUBLIC_BASE_URL set to a URL ClickUp can reach.
Configuration
6 fields, 1 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
team_id The Workspace to watch — ClickUp's 'team' id, the number that appears in the URL of any page in that Workspace. A webhook belongs to a Workspace. | string | Yes | — | matches ^\d{1,32}$ | 9012345678 |
events Which ClickUp events to subscribe to. "*" subscribes to every event (noisy — each one starts a run). | array | No | ["taskCreated"] | 1–29 characters; array of string | — |
space_id Only deliver events from this Space. Leave blank for the whole Workspace; a webhook narrows to one location at most. | string | No | — | matches ^\d{1,32}$ | — |
folder_id Only deliver events from this Folder. Leave blank for the whole Workspace; a webhook narrows to one location at most. | string | No | — | matches ^\d{1,32}$ | — |
list_id Only deliver events from this List. Leave blank for the whole Workspace; a webhook narrows to one location at most. | string | No | — | matches ^\d{1,32}$ | — |
task_id Only deliver events about this one task, by its short id (c0j). Leave blank for the whole Workspace; a webhook narrows to one location at most. | string | No | — | matches ^[A-Za-z0-9_-]{1,64}$ | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"events": [
"taskCreated"
],
"team_id": "9012345678"
}Output
One shape.
clickup event
A flat envelope over ClickUp's body. ClickUp sends the id that changed and a history diff, never the whole task.
Extra keys beyond the ones listed can appear.
| Field | Type | Example |
|---|---|---|
event The ClickUp event name, e.g. taskStatusUpdated. Branch on this when the webhook subscribes to more than one. | string | taskStatusUpdated |
webhook_id ClickUp's id for the webhook that delivered this event. Half of the idempotency key. | string | 7689a169-a000-4985-8676-6902b96d6627 |
resource_type What changed — task, list, folder, space, goal or key_result — read off whichever id ClickUp put on the body. | string | task |
resource_id The id of the thing that changed, whatever kind it is. | string | c0j |
task_id The task id, when this is a task event — the one id most workflows reach for, so it is lifted out as well. Empty for list, folder, space and goal events. | string | c0j |
history_item_id The id of the change ClickUp reported. The other half of the idempotency key ClickUp documents; empty on events that carry no history (a creation, a deletion). | string | 2800763136717140857 |
history_items The diff: one entry per changed field, each with the field name and its before/after values and the user who made the change. | array | — |
payload ClickUp's body exactly as it arrived, for anything the fields above do not lift out. | object | — |
{
"event": "taskStatusUpdated",
"history_item_id": "2800763136717140857",
"history_items": [
{
"after": {
"status": "in progress",
"type": "custom"
},
"before": {
"status": "to do",
"type": "open"
},
"date": "1717070400000",
"field": "status",
"id": "2800763136717140857",
"type": 1,
"user": {
"email": "ada@example.com",
"id": 183,
"username": "Ada"
}
}
],
"payload": {
"event": "taskStatusUpdated",
"task_id": "c0j",
"webhook_id": "7689a169-a000-4985-8676-6902b96d6627"
},
"resource_id": "c0j",
"resource_type": "task",
"task_id": "c0j",
"webhook_id": "7689a169-a000-4985-8676-6902b96d6627"
}Notes
- Publishing creates the webhook in ClickUp; unpublishing, disabling or archiving deletes it. A workflow that is off is off at ClickUp too.
- Each delivery is verified against ClickUp's X-Signature (HMAC-SHA256 of the raw body, keyed on the webhook's own secret) before any run starts.
- A webhook narrows to ONE location: set at most one of space_id, folder_id, list_id and task_id, or publishing is refused.
- One run per delivery, idempotent on ClickUp's own {webhook_id}:{history_item_id} pair.
- The body carries the id that changed and a history diff — fetch the task with clickup.get_task when the workflow needs its current state.
See Event run in a workflow.
In a technical demo we add the ClickUp connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.