Webhook URL
When an event that your webhook is subscribed to occurs, ClickUp will send details about the event to the URL you provided when creating the webhook.
If no protocol is specified in the URL, the default will be https
.
Note
Non-SSL protocols may not be supported in the future. We recommend using secure protocols whenever possible.
Requests to your URL will always follow these criteria:
-
Always sent using the
POST
method. -
The
Content-Type
will always beapplication/json
. -
The
webhook_id
,event
, andresource ID
will be included in the body. -
If a history item exists describing the event, it will be included in a
history_items
array.
The {{webhook_id}}:{{history_item_id}}
can be used as an idempotency key.
Here is an example request:
POST https://yourdomain.com/webhook
Content-Type: application/json
Typing of webhook response notes
-
history_items[x].user.id
is an integer, not a string. -
Some boolean values (eg. Custom Field checkmark) might be
NULL
instead offalse
when unset. - Custom Field values are not normalized for their type. Make sure to cast to correct type.
Example response
Here is an example response:
{
"webhook_id": "7689a169-a000-4985-8676-6902b96d6627",
"event": "taskUpdated",
"task_id": "task_id",
"history_items": [
{
"id": "33169",
"type": 1,
"date": "1575650190085",
"field": "status",
"parent_id": "list_id",
"data": {
"status_type": "closed"
},
"source": null,
"user": {
"id": 183,
"username": "John Doe",
"email": "example@email.com",
"color": "#827718",
"initials": "JK",
"profilePicture": "https://dev-attachments-public.clickup.com/profilePictures/183_nx1.jpg"
},
"before": {
"status": "open",
"color": "#d3d3d3",
"orderindex": 0,
"type": "open"
},
"after": {
"status": "complete",
"color": "#6bc950",
"orderindex": 1,
"type": "closed"
}
}
]
}