Webhook deliveries
A webhook posts task events to a URL you choose. The events are task.created, task.updated, task.deleted, task.archived, task.restored; * subscribes to all of them. The formats are json, slack, discord. Webhooks are managed with the routes under Webhooks.
A delivery in the json format is a POST with this body:
{
"event": "task.updated",
"companyId": "<company id>",
"deliveredAt": "2026-10-01T09:30:00.000Z",
"changedFields": ["Task_Priority"],
"data": {
"_id": "<task id>",
"TaskKey": "WEB-12",
"TaskName": "Write the release notes",
"statusType": "active",
"Task_Priority": "HIGH",
"ProjectID": "<project id>",
"sprintId": "<list id>",
"AssigneeUserId": ["<user id>"],
"assigneeNames": ["Sample Person"],
"updatedAt": "2026-10-01T09:30:00.000Z"
}
}data is a fixed set of task fields, never the whole stored task. previous is added, with the same shape, when the server has delivered this task before. Each delivery carries the headers X-AlianHub-Event, X-AlianHub-Delivery-Attempt and X-AlianHub-Signature. The signature is sha256= followed by the HMAC-SHA256 of the raw request body, keyed with the secret returned when the webhook was created; compute it over the bytes received and compare before trusting a delivery. Changes to one task within a couple of seconds arrive as one delivery. A delivery that fails with a network error or a 5xx is sent once more, 30 seconds later.
