# Webhook events

Every event name a webhook can subscribe to, and what makes it fire. A name
that is not on this list is rejected at registration.

See [Webhooks](/webhooks) for the delivery contract, signature verification and
retry behaviour.

There are **204** events in three families.

Inside a pattern, `*` is a wildcard for **one** dot segment, so `task.*`
matches the lifecycle family only — use `task.*.*` for membership events, or
list the names you want. A pattern that is *only* `*` is the exception: it is
the catch-all, and it matches every event on this page.

## Lifecycle (155)

`{resource}.{created|updated|removed|restored|force_deleted}`. The payload is
the public v3 shape of that resource, under `payload.{resource}`.

| Event | Fires when |
| --- | --- |
| `annotation.created` | An `annotation` was created. |
| `annotation.force_deleted` | An `annotation` was permanently deleted (`?force=true`). |
| `annotation.removed` | An `annotation` was deleted (soft delete). |
| `annotation.restored` | A removed `annotation` was restored. |
| `annotation.updated` | An `annotation` was changed. |
| `chat.created` | A `chat` was created. |
| `chat.force_deleted` | A `chat` was permanently deleted (`?force=true`). |
| `chat.removed` | A `chat` was deleted (soft delete). |
| `chat.restored` | A removed `chat` was restored. |
| `chat.updated` | A `chat` was changed. |
| `checkIn.created` | A `checkIn` was created. |
| `checkIn.force_deleted` | A `checkIn` was permanently deleted (`?force=true`). |
| `checkIn.removed` | A `checkIn` was deleted (soft delete). |
| `checkIn.restored` | A removed `checkIn` was restored. |
| `checkIn.updated` | A `checkIn` was changed. |
| `checkInRequest.created` | A `checkInRequest` was created. |
| `checkInRequest.force_deleted` | A `checkInRequest` was permanently deleted (`?force=true`). |
| `checkInRequest.removed` | A `checkInRequest` was deleted (soft delete). |
| `checkInRequest.restored` | A removed `checkInRequest` was restored. |
| `checkInRequest.updated` | A `checkInRequest` was changed. |
| `checklist.created` | A `checklist` was created. |
| `checklist.force_deleted` | A `checklist` was permanently deleted (`?force=true`). |
| `checklist.removed` | A `checklist` was deleted (soft delete). |
| `checklist.restored` | A removed `checklist` was restored. |
| `checklist.updated` | A `checklist` was changed. |
| `checklistItem.created` | A `checklistItem` was created. |
| `checklistItem.force_deleted` | A `checklistItem` was permanently deleted (`?force=true`). |
| `checklistItem.removed` | A `checklistItem` was deleted (soft delete). |
| `checklistItem.restored` | A removed `checklistItem` was restored. |
| `checklistItem.updated` | A `checklistItem` was changed. |
| `document.created` | A `document` was created. |
| `document.force_deleted` | A `document` was permanently deleted (`?force=true`). |
| `document.removed` | A `document` was deleted (soft delete). |
| `document.restored` | A removed `document` was restored. |
| `document.updated` | A `document` was changed. |
| `favorite.created` | A `favorite` was created. |
| `favorite.force_deleted` | A `favorite` was permanently deleted (`?force=true`). |
| `favorite.removed` | A `favorite` was deleted (soft delete). |
| `favorite.restored` | A removed `favorite` was restored. |
| `favorite.updated` | A `favorite` was changed. |
| `favoriteFolder.created` | A `favoriteFolder` was created. |
| `favoriteFolder.force_deleted` | A `favoriteFolder` was permanently deleted (`?force=true`). |
| `favoriteFolder.removed` | A `favoriteFolder` was deleted (soft delete). |
| `favoriteFolder.restored` | A removed `favoriteFolder` was restored. |
| `favoriteFolder.updated` | A `favoriteFolder` was changed. |
| `file.created` | A `file` was created. |
| `file.force_deleted` | A `file` was permanently deleted (`?force=true`). |
| `file.removed` | A `file` was deleted (soft delete). |
| `file.restored` | A removed `file` was restored. |
| `file.updated` | A `file` was changed. |
| `form.created` | A `form` was created. |
| `form.force_deleted` | A `form` was permanently deleted (`?force=true`). |
| `form.removed` | A `form` was deleted (soft delete). |
| `form.restored` | A removed `form` was restored. |
| `form.updated` | A `form` was changed. |
| `goal.created` | A `goal` was created. |
| `goal.force_deleted` | A `goal` was permanently deleted (`?force=true`). |
| `goal.removed` | A `goal` was deleted (soft delete). |
| `goal.restored` | A removed `goal` was restored. |
| `goal.updated` | A `goal` was changed. |
| `goalGroup.created` | A `goalGroup` was created. |
| `goalGroup.force_deleted` | A `goalGroup` was permanently deleted (`?force=true`). |
| `goalGroup.removed` | A `goalGroup` was deleted (soft delete). |
| `goalGroup.restored` | A removed `goalGroup` was restored. |
| `goalGroup.updated` | A `goalGroup` was changed. |
| `label.created` | A `label` was created. |
| `label.force_deleted` | A `label` was permanently deleted (`?force=true`). |
| `label.removed` | A `label` was deleted (soft delete). |
| `label.restored` | A removed `label` was restored. |
| `label.updated` | A `label` was changed. |
| `list.created` | A `list` was created. |
| `list.force_deleted` | A `list` was permanently deleted (`?force=true`). |
| `list.removed` | A `list` was deleted (soft delete). |
| `list.restored` | A removed `list` was restored. |
| `list.updated` | A `list` was changed. |
| `member.created` | A `member` was created. |
| `member.force_deleted` | A `member` was permanently deleted (`?force=true`). |
| `member.removed` | A `member` was deleted (soft delete). |
| `member.restored` | A removed `member` was restored. |
| `member.updated` | A `member` was changed. |
| `message.created` | A `message` was created. |
| `message.force_deleted` | A `message` was permanently deleted (`?force=true`). |
| `message.removed` | A `message` was deleted (soft delete). |
| `message.restored` | A removed `message` was restored. |
| `message.updated` | A `message` was changed. |
| `portfolio.created` | A `portfolio` was created. |
| `portfolio.force_deleted` | A `portfolio` was permanently deleted (`?force=true`). |
| `portfolio.removed` | A `portfolio` was deleted (soft delete). |
| `portfolio.restored` | A removed `portfolio` was restored. |
| `portfolio.updated` | A `portfolio` was changed. |
| `presenceStatus.created` | A `presenceStatus` was created. |
| `presenceStatus.force_deleted` | A `presenceStatus` was permanently deleted (`?force=true`). |
| `presenceStatus.removed` | A `presenceStatus` was deleted (soft delete). |
| `presenceStatus.restored` | A removed `presenceStatus` was restored. |
| `presenceStatus.updated` | A `presenceStatus` was changed. |
| `project.created` | A `project` was created. |
| `project.force_deleted` | A `project` was permanently deleted (`?force=true`). |
| `project.removed` | A `project` was deleted (soft delete). |
| `project.restored` | A removed `project` was restored. |
| `project.updated` | A `project` was changed. |
| `projectDashboard.created` | A `projectDashboard` was created. |
| `projectDashboard.force_deleted` | A `projectDashboard` was permanently deleted (`?force=true`). |
| `projectDashboard.removed` | A `projectDashboard` was deleted (soft delete). |
| `projectDashboard.restored` | A removed `projectDashboard` was restored. |
| `projectDashboard.updated` | A `projectDashboard` was changed. |
| `projectFolder.created` | A `projectFolder` was created. |
| `projectFolder.force_deleted` | A `projectFolder` was permanently deleted (`?force=true`). |
| `projectFolder.removed` | A `projectFolder` was deleted (soft delete). |
| `projectFolder.restored` | A removed `projectFolder` was restored. |
| `projectFolder.updated` | A `projectFolder` was changed. |
| `recurringRule.created` | A `recurringRule` was created. |
| `recurringRule.force_deleted` | A `recurringRule` was permanently deleted (`?force=true`). |
| `recurringRule.removed` | A `recurringRule` was deleted (soft delete). |
| `recurringRule.restored` | A removed `recurringRule` was restored. |
| `recurringRule.updated` | A `recurringRule` was changed. |
| `reminder.created` | A `reminder` was created. |
| `reminder.force_deleted` | A `reminder` was permanently deleted (`?force=true`). |
| `reminder.removed` | A `reminder` was deleted (soft delete). |
| `reminder.restored` | A removed `reminder` was restored. |
| `reminder.updated` | A `reminder` was changed. |
| `reportChart.created` | A `reportChart` was created. |
| `reportChart.force_deleted` | A `reportChart` was permanently deleted (`?force=true`). |
| `reportChart.removed` | A `reportChart` was deleted (soft delete). |
| `reportChart.restored` | A removed `reportChart` was restored. |
| `reportChart.updated` | A `reportChart` was changed. |
| `role.created` | A `role` was created. |
| `role.force_deleted` | A `role` was permanently deleted (`?force=true`). |
| `role.removed` | A `role` was deleted (soft delete). |
| `role.restored` | A removed `role` was restored. |
| `role.updated` | A `role` was changed. |
| `status.created` | A `status` was created. |
| `status.force_deleted` | A `status` was permanently deleted (`?force=true`). |
| `status.removed` | A `status` was deleted (soft delete). |
| `status.restored` | A removed `status` was restored. |
| `status.updated` | A `status` was changed. |
| `task.created` | A `task` was created. |
| `task.force_deleted` | A `task` was permanently deleted (`?force=true`). |
| `task.removed` | A `task` was deleted (soft delete). |
| `task.restored` | A removed `task` was restored. |
| `task.updated` | A `task` was changed. |
| `taskHandoff.created` | A `taskHandoff` was created. |
| `taskHandoff.force_deleted` | A `taskHandoff` was permanently deleted (`?force=true`). |
| `taskHandoff.removed` | A `taskHandoff` was deleted (soft delete). |
| `taskHandoff.restored` | A removed `taskHandoff` was restored. |
| `taskHandoff.updated` | A `taskHandoff` was changed. |
| `timeEntry.created` | A `timeEntry` was created. |
| `timeEntry.force_deleted` | A `timeEntry` was permanently deleted (`?force=true`). |
| `timeEntry.removed` | A `timeEntry` was deleted (soft delete). |
| `timeEntry.restored` | A removed `timeEntry` was restored. |
| `timeEntry.updated` | A `timeEntry` was changed. |
| `webhook.created` | A `webhook` was created. |
| `webhook.force_deleted` | A `webhook` was permanently deleted (`?force=true`). |
| `webhook.removed` | A `webhook` was deleted (soft delete). |
| `webhook.restored` | A removed `webhook` was restored. |
| `webhook.updated` | A `webhook` was changed. |

## Membership (38)

`{resource}.{relation}.{added|removed}`, emitted once per linked id. The
payload is `{ "parentId", "relatedId", "relation" }`.

| Event | Fires when |
| --- | --- |
| `checkIn.assignees.added` | One or more `assignees` were linked to a `checkIn`. |
| `checkIn.assignees.removed` | One or more `assignees` were unlinked from a `checkIn`. |
| `checkIn.subscribers.added` | One or more `subscribers` were linked to a `checkIn`. |
| `checkIn.subscribers.removed` | One or more `subscribers` were unlinked from a `checkIn`. |
| `checkInRequest.assignees.added` | One or more `assignees` were linked to a `checkInRequest`. |
| `checkInRequest.assignees.removed` | One or more `assignees` were unlinked from a `checkInRequest`. |
| `document.labels.added` | One or more `labels` were linked to a `document`. |
| `document.labels.removed` | One or more `labels` were unlinked from a `document`. |
| `file.labels.added` | One or more `labels` were linked to a `file`. |
| `file.labels.removed` | One or more `labels` were unlinked from a `file`. |
| `file.subscribers.added` | One or more `subscribers` were linked to a `file`. |
| `file.subscribers.removed` | One or more `subscribers` were unlinked from a `file`. |
| `list.assignees.added` | One or more `assignees` were linked to a `list`. |
| `list.assignees.removed` | One or more `assignees` were unlinked from a `list`. |
| `list.goals.added` | One or more `goals` were linked to a `list`. |
| `list.goals.removed` | One or more `goals` were unlinked from a `list`. |
| `list.hiddenFor.added` | One or more `hiddenFor` were linked to a `list`. |
| `list.hiddenFor.removed` | One or more `hiddenFor` were unlinked from a `list`. |
| `portfolio.members.added` | One or more `members` were linked to a `portfolio`. |
| `portfolio.members.removed` | One or more `members` were unlinked from a `portfolio`. |
| `project.members.added` | One or more `members` were linked to a `project`. |
| `project.members.removed` | One or more `members` were unlinked from a `project`. |
| `reportChart.projects.added` | One or more `projects` were linked to a `reportChart`. |
| `reportChart.projects.removed` | One or more `projects` were unlinked from a `reportChart`. |
| `status.assignees.added` | One or more `assignees` were linked to a `status`. |
| `status.assignees.removed` | One or more `assignees` were unlinked from a `status`. |
| `status.hiddenFor.added` | One or more `hiddenFor` were linked to a `status`. |
| `status.hiddenFor.removed` | One or more `hiddenFor` were unlinked from a `status`. |
| `task.assignees.added` | One or more `assignees` were linked to a `task`. |
| `task.assignees.removed` | One or more `assignees` were unlinked from a `task`. |
| `task.connectedTasks.added` | One or more `connectedTasks` were linked to a `task`. |
| `task.connectedTasks.removed` | One or more `connectedTasks` were unlinked from a `task`. |
| `task.hiddenFor.added` | One or more `hiddenFor` were linked to a `task`. |
| `task.hiddenFor.removed` | One or more `hiddenFor` were unlinked from a `task`. |
| `task.labels.added` | One or more `labels` were linked to a `task`. |
| `task.labels.removed` | One or more `labels` were unlinked from a `task`. |
| `task.subscribers.added` | One or more `subscribers` were linked to a `task`. |
| `task.subscribers.removed` | One or more `subscribers` were unlinked from a `task`. |

## Operation (11)

`{resource}.{verb}` — an action endpoint ran. The payload is that action's
response body, under `payload.{resource}`. Note that the event name keeps the
verb's camelCase spelling even though its URL is kebab-case
(`POST /webhooks/{id}/rotate-secret` emits `webhook.rotateSecret`).

| Event | Fires when |
| --- | --- |
| `document.append` | The `append` action ran on a `document`. |
| `document.editText` | The `editText` action ran on a `document`. |
| `file.createFromContent` | The `createFromContent` action ran on a `file`. |
| `file.createUploadUrl` | The `createUploadUrl` action ran on a `file`. |
| `file.uploadFromUrl` | The `uploadFromUrl` action ran on a `file`. |
| `project.transfer` | The `transfer` action ran on a `project`. |
| `task.attachDocument` | The `attachDocument` action ran on a `task`. |
| `task.createTree` | The `createTree` action ran on a `task`. |
| `task.detachDocument` | The `detachDocument` action ran on a `task`. |
| `webhook.rotateSecret` | The `rotateSecret` action ran on a `webhook`. |
| `webhook.test` | The `test` action ran on a `webhook`. |
