project.created, project.updated, project.deleted, project.sundry, project.activity, and project.imported. Use these events to sync project state, trigger automations, and react to activity on any project in your workspace. Every key except project.deleted carries the full project object; project.imported delivers a batch shape instead of a single record.
The webhook envelope structure, delivery behaviour, and retry logic are documented in Introduction. Signature verification is covered in Verification. Those conventions apply to every event on this page and are not repeated here.
The project object
Every event key exceptproject.deleted and project.imported carries this shape — flat inside data for project.created, or nested under data.project for project.updated and project.sundry.
project.created
Fires when a project is created, including via clone. data is the full project object.
project.updated
Fires on a significant change to a project. Read data.change to determine what changed; data.project contains the full project object reflecting the new state.
project.sundry
Fires on a minor, cosmetic field edit. Read data.field to determine which field changed; data.project contains the full project object.
Use
project.sundry when you need to react to low-significance edits without commingling them with the higher-significance project.updated stream.project.activity
Fires when a child record on a project changes. Projects produce the widest range of activity types of any resource — comments, files, notes, checklists, checklist comments, and milestones all arrive here. Read data.type and data.action together to determine exactly what happened; data.item contains the affected child record.
project.deleted
Fires after the project is deleted. Because the record no longer exists at delivery time, data contains only the project id.
project.imported
Fires when a bulk project import finishes. Imported projects do not additionally fire project.created.
See Imports for the batch shape, batching rules, and the fields common to every import event.
data.records carries the following fields:
