Webhooks
A webhook calls your HTTPS endpoint whenever something you subscribed to changes in a project. Use it to keep another system in sync with a project without polling.
What triggers a call
| Event | When |
|---|---|
item.created | An item (chart, presentation, comment, …) was created. |
item.updated | An item was changed, moved into a container, or locked/unlocked. |
item.deleted | An item was deleted. |
user.added | A user was added to the project. |
user.roleChanged | A member's role changed. |
user.removed | A member was removed or left the project. |
Calls contain ids only. Fetch the details you need with the Project Item API.
Who can manage webhooks
Project members with the Manager or Admin role.
Limits
| Rule | Limit |
|---|---|
| Webhooks per project | 10 |
url | Absolute https URL, at most 2048 characters, no user name or password |
customData | Any JSON, at most 4096 bytes |
name | At most 128 characters |
Every member of a project can see its webhook definitions, including the URL and customData. Do not put secrets
into the URL or customData. Verify the signature instead to make sure a call comes from
DEON.
Copied projects
When a project is copied, branched, imported or created from a template, its webhooks are copied along but stay
inactive in the copy: they are listed with "inactive": "copiedFromOtherProject" and are never called. Create new
webhooks for the copy if you need them.
Managing webhooks without the REST API
Webhooks are stored as project metadata entries with the key deon.webhook whose value is the JSON definition
(including the projectId of the project it belongs to). Clients that edit project metadata directly must follow
the same rules as the REST API: only Managers and Admins may create, change or delete these entries, and every
definition must be valid.
Next steps
- Manage webhooks with the REST API.
- Understand the payload.
- Verify signatures.
- Learn how delivery works: batching, retries and automatic disabling.