Webhook Events

View as Markdown
Last updated August 6, 2026

Webhooks notify an external service whenever a specific action occurs in your stack. This page lists every event you can subscribe a webhook to, grouped by resource. Each event, called a channel, is a dotted string, for example, content_types.entries.publish, that you select when you create a webhook. Use the matrix below to find the resource and action you need.

Events at a Glance

The following matrix summarizes the webhook events each resource emits. Use it to find the resource and action you need, then refer to the detailed table in that resource’s section for the exact topic strings.

ResourceCreateUpdatePublishUnpublishDeleteOther events
Branch   Branch alias assigned / unassigned
Content Type   
Global Field   
Entry 
Entry Comment   
Entry Discussion    resolve / reopen
Entry Workflow     Workflow / stage change
Entry Variant   
Entry Variant Comment   
Entry Variant Discussion    resolve / reopen
Entry Variant Workflow     Workflow / stage change
Entry Variant – Environment   Publish / unpublish to an environment
Asset 
Taxonomy  localize / unlocalize
Taxonomy Term  localize / unlocalize
Taxonomy – Environment   Publish / unpublish to an environment
Release     deploy to an environment
Job (bulk publish)   Bulk publish / unpublish completed

Note The matrix shows which actions each resource emits. Two details it abstracts away:

  • ScopingMost topics have "all" and "specific" variants. Insert a UID at the relevant level to target one resource, or omit it to subscribe to all. For example, content_types.{content_type_uid}.entries.{entry_uid}.update versus content_types.entries.update.
  • Lifecycle suffixes: Publish and unpublish events emit .success and .fail variants, Jobs use .completed, Releases use .deploy.{status}, and Branch create and delete emit .initiated and .completed stages.

Refer to the resource-specific tables below for the exact topic strings.

Branches

MethodDescription
branch.create.initiatedAny new branch creation is initiated on a stack
branch.create.completed Any new branch creation is completed on a stack 
branch.delete.initiated Any new branch deletion is initiated on a stack 
branch.delete.completed Any new branch deletion is completed on a stack 
branch.{branch_uid}.delete.initiated A specific branch deletion is initiated on a stack 
branch.{branch_uid}.delete.completed A specific branch deletion is completed on a stack 
branch_alias.assigned A new branch alias is assigned to an existing branch 
branch_alias.unassigned Any branch alias is unassigned

Content Type

Method Description 
content_types.create New content type is created
content_types.update Any content type is updated 
content_types.{contenttype_uid}.update A specific content type is updated 
content_types.delete Any content type is deleted 
content_types.{contenttype_uid}.delete A specific content type is deleted

Global Fields

Method Description 
global_fields.create Any global field is created 
global_fields.update Any global field is updated 
global_fields.delete Any global field is deleted 
global_fields.{global_fields_uid}.update A specific global field is updated 
global_fields.{global_fields_uid}.delete A specific global field is deleted

Note Global fields emit create, update, and delete events only. Because a global field is embedded within content types and is not published on its own, it does not emit publish or unpublish events.

Entries

Method Description 
content_types.entries.createAny entry is created
content_types.{contenttype_uid}.entries.create An entry is created within a content type
content_types.entries.updateAny entry is updated
content_types.{contenttype_uid}.entries.updateAn entry from a specific content type is updated
content_types.{contenttype_uid}.entries.{entry_uid}.updateA specific entry of a specific content type is updated
content_types.entries.publishAny entry is published
content_types.entries.publish.failAny entry failed to publish
content_types.entries.unpublishAny entry is unpublished
content_types.entries.unpublish.failAny entry failed to unpublish
content_types.entries.deleteAny entry is deleted
content_types.{contenttype_uid}.entries.deleteAny entry from a specific content type is deleted
content_types.{contenttype_uid}.entries.{entry_uid}.deleteA specific entry of a specific content type is deleted

Note For environment-specific publish and unpublish events, and for events scoped to a specific content type or entry, refer to the Entry Environment section below.

Entry Comments

MethodDescription
content_types.entries.comments.createAny comment is created within any entry of any content type
content_types.{contenttype_uid}.entries.comments.createAny comment is created within any entry of a specific content type
content_types.{contenttype_uid}.entries.{entry_uid}.comments.createAny comment is created within a specific entry of a specific content type
content_types.entries.comments.updateAny comment within any entry of any content type is updated
content_types.{contenttype_uid}.entries.comments.updateAny comment within any entry of a specific content type is updated
content_types.{contenttype_uid}.entries.{entry_uid}.comments.updateAny comment within a specific entry of a specific content type is updated
content_types.entries.comments.deleteAny comment within any entry of any content type is deleted
content_types.{contenttype_uid}.entries.comments.deleteAny comment within any entry of a specific content type is deleted
content_types.{contenttype_uid}.entries.{entry_uid}.comments.deleteAny comment within a specific entry of a specific content type is deleted

NoteYou cannot set webhook conditions that are triggered on events performed around a specific entry comment.

Entry Discussions

MethodDescription
content_types.entries.discussions.createAny discussion is created within any entry of any content type
content_types.{contenttype_uid}.entries.discussions.createAny discussion is created within any entry of a specific content type
content_types.{contenttype_uid}.entries.{entry_uid}.discussions.createAny discussion is created within a specific entry of a specific content type
content_types.entries.discussions.resolveAny discussion within any entry of any content type is resolved
content_types.{contenttype_uid}.entries.discussions.resolveAny discussion within any entry of a specific content type is resolved
content_types.{contenttype_uid}.entries.{entry_uid}.discussions.resolveAny discussion within a specific entry of a specific content type is resolved
content_types.entries.discussions.reopenAny discussion within any entry of any content type is reopened
content_types.{contenttype_uid}.entries.discussions.reopenAny discussion within any entry of a specific content type is reopened
content_types.{contenttype_uid}.entries.{entry_uid}.discussions.reopenAny discussion within a specific entry of a specific content type is reopened

NoteYou cannot set webhook conditions that are triggered on events performed around a specific entry discussion.

Entry Workflows

Method Description 
content_types.{contenttype_uid}.entries.{entry_uid}.workflows.{workflow_uid}Any stage of a specific workflow is changed within a specific entry of a specific content type
content_types.{contenttype_uid}.entries.workflows.{workflow_uid}Any stage of a specific workflow is changed within any entry of a specific content type
content_types.entries.workflows.{workflow_uid}Any stage of a specific workflow is changed within any entry of any content type
content_types.{contenttype_uid}.entries.{entry_uid}.workflows.{workflow_uid}.{workflow_stages_uid}Specific stage of a specific workflow is changed within a specific entry of a specific content type
content_types.{contenttype_uid}.entries.workflows.{workflow_uid}.{workflow_stages_uid}Specific stage of a specific workflow is changed within any entry of a specific content type
content_types.entries.workflows.{workflow_uid}.{workflow_stages_uid}Specific stage of a specific workflow is changed within any entry of any content type
content_types.entries.workflowsAny stage of any workflow is changed within any entry of any content type

Entry Environment

These events trigger when an entry is published to or unpublished from an environment. They mirror the entry variant environment events, without the variant level.

MethodDescription
content_types.entries.environments.publish.successAny entry in any content type is successfully published to any environment.
content_types.entries.environments.unpublish.successAny entry in any content type is successfully unpublished from any environment.
content_types.entries.environments.{environment_uid}.publish.successAny entry in any content type is successfully published to the specified environment.
content_types.entries.environments.{environment_uid}.unpublish.successAny entry in any content type is successfully unpublished from the specified environment.
content_types.entries.environments.publish.failAny entry in any content type fails to publish to any environment.
content_types.entries.environments.unpublish.failAny entry in any content type fails to unpublish from any environment.
content_types.entries.environments.{environment_uid}.publish.failAny entry in any content type fails to publish to the specified environment.
content_types.entries.environments.{environment_uid}.unpublish.failAny entry in any content type fails to unpublish from the specified environment.
content_types.{content_type_uid}.entries.environments.publish.successAny entry in the specified content type is successfully published to any environment.
content_types.{content_type_uid}.entries.environments.unpublish.successAny entry in the specified content type is successfully unpublished from any environment.
content_types.{content_type_uid}.entries.environments.{environment_uid}.publish.successAny entry in the specified content type is successfully published to the specified environment.
content_types.{content_type_uid}.entries.environments.{environment_uid}.unpublish.successAny entry in the specified content type is successfully unpublished from the specified environment.
content_types.{content_type_uid}.entries.environments.publish.failAny entry in the specified content type fails to publish to any environment.
content_types.{content_type_uid}.entries.environments.unpublish.failAny entry in the specified content type fails to unpublish from any environment.
content_types.{content_type_uid}.entries.environments.{environment_uid}.publish.failAny entry in the specified content type fails to publish to the specified environment.
content_types.{content_type_uid}.entries.environments.{environment_uid}.unpublish.failAny entry in the specified content type fails to unpublish from the specified environment.
content_types.{content_type_uid}.entries.{entry_uid}.environments.publish.successThe specified entry is successfully published to any environment.
content_types.{content_type_uid}.entries.{entry_uid}.environments.unpublish.successThe specified entry is successfully unpublished from any environment.
content_types.{content_type_uid}.entries.{entry_uid}.environments.{environment_uid}.publish.successThe specified entry is successfully published to the specified environment.
content_types.{content_type_uid}.entries.{entry_uid}.environments.{environment_uid}.unpublish.successThe specified entry is successfully unpublished from the specified environment.
content_types.{content_type_uid}.entries.{entry_uid}.environments.publish.failThe specified entry fails to publish to any environment.
content_types.{content_type_uid}.entries.{entry_uid}.environments.unpublish.failThe specified entry fails to unpublish from any environment.
content_types.{content_type_uid}.entries.{entry_uid}.environments.{environment_uid}.publish.failThe specified entry fails to publish to the specified environment.
content_types.{content_type_uid}.entries.{entry_uid}.environments.{environment_uid}.unpublish.failThe specified entry fails to unpublish from the specified environment.

Entry Variants

Method Description 
content_types.entries.variants.create Any entry variant created for any entry in any content type. 
content_types.entries.variants.update Any entry variant updated for any entry in any content type. 
content_types.entries.variants.delete Any entry variant deleted from any entry in any content type. 
content_types.{content_type_uid}.entries.variants.create Any entry variant created for any entry in a specific content type. 
content_types.{content_type_uid}.entries.variants.update Any entry variant updated for any entry in a specific content type. 
content_types.{content_type_uid}.entries.variants.delete Any entry variant deleted from any entry in a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.create Any entry variant created for a specific entry in a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.update Any entry variant updated for a specific entry in a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.delete Any entry variant deleted from a specific entry in a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.{variant_uid}.update A specific entry variant updated for a specific entry in a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.{variant_uid}.delete A specific entry variant deleted from a specific entry in a specific content type.

Note The {variant_uid} level supports update and delete only. A variant receives its UID when it is created, so there is no create event scoped to a specific variant.

Entry Variant Comments

Method Description 
content_types.entries.variants.comments.create Any comment created within any entry variant of any entry from any content type. 
content_types.entries.variants.comments.update Any comment updated within any entry variant of any entry from any content type. 
content_types.entries.variants.comments.delete Any comment deleted from any entry variant of any entry from any content type. 
content_types.{content_type_uid}.entries.variants.comments.create Any comment created within any entry variant of any entry from a specific content type. 
content_types.{content_type_uid}.entries.variants.comments.update Any comment updated within any entry variant of any entry from a specific content type. 
content_types.{content_type_uid}.entries.variants.comments.delete Any comment deleted from any entry variant of any entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.comments.create Any comment created within any entry variant of a specific entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.comments.update Any comment updated within any entry variant of a specific entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.comments.delete Any comment deleted from any entry variant of a specific entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.{variant_uid}.comments.create Any comment created within a specific entry variant of a specific entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.{variant_uid}.comments.update Any comment updated within a specific entry variant of a specific entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.{variant_uid}.comments.delete Any comment deleted from a specific entry variant of a specific entry from a specific content type.

NoteWebhook conditions cannot be configured for actions performed on entry comments within specific entry variants.

Entry Variant Discussions

Method Description 
content_types.entries.variants.discussions.create Any discussion created within any entry variant of any entry from any content type. 
content_types.{content_type_uid}.entries.variants.discussions.create Any discussion created within any entry variant of any entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.discussions.create Any discussion created within any entry variant of a specific entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.{variant_uid}.discussions.create Any discussion created within a specific entry variant of a specific entry from a specific content type. 
content_types.entries.variants.discussions.resolve Any discussion resolved within any entry variant of any entry from any content type. 
content_types.{content_type_uid}.entries.variants.discussions.resolve Any discussion resolved within any entry variant of any entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.discussions.resolve Any discussion resolved within any entry variant of a specific entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.{variant_uid}.discussions.resolve Any discussion resolved within a specific entry variant of a specific entry from a specific content type. 
content_types.entries.variants.discussions.reopen Any resolved discussion reopened within any entry variant of any entry from any content type. 
content_types.{content_type_uid}.entries.variants.discussions.reopen Any resolved discussion reopened within any entry variant of any entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.discussions.reopen Any resolved discussion reopened within any entry variant of a specific entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.{variant_uid}.discussions.reopen Any resolved discussion reopened within a specific entry variant of a specific entry from a specific content type.

NoteWebhook conditions cannot be set for events related to specific entry discussions.

Entry Variant Workflows

Method Description 
content_types.entries.variants.workflows.{workflow_uid} Any stage of a specific workflow changed within any entry variant of any entry from any content type. 
content_types.{content_type_uid}.entries.variants.workflows.{workflow_uid} Any stage of a specific workflow changed within any entry variant of any entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.workflows.{workflow_uid} Any stage of a specific workflow changed within any entry variant of a specific entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.{variant_uid}.workflows.{workflow_uid} Any stage of a specific workflow changed within a specific entry variant of a specific entry from a specific content type. 
content_types.entries.variants.workflows.{workflow_uid}.{workflow_stage_uid} A specific workflow stage changed within any entry variant of any entry from any content type. 
content_types.{content_type_uid}.entries.variants.workflows.{workflow_uid}.{workflow_stage_uid} A specific workflow stage changed within any entry variant of any entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.workflows.{workflow_uid}.{workflow_stage_uid} A specific workflow stage changed within any entry variant of a specific entry from a specific content type. 
content_types.{content_type_uid}.entries.{entry_uid}.variants.{variant_uid}.workflows.{workflow_uid}.{workflow_stage_uid} A specific workflow stage changed within a specific entry variant of a specific entry from a specific content type.

Entry Variant Environments

Method Description 
content_types.entries.variants.environments.publish.success Any entry variant from any entry in any content type is successfully published to any environment. 
content_types.entries.variants.environments.unpublish.success Any entry variant from any entry in any content type is successfully unpublished from any environment. 
content_types.entries.variants.environments.{environment_uid}.publish.success Any entry variant from any entry in any content type is successfully published to a specific environment. 
content_types.entries.variants.environments.{environment_uid}.unpublish.success Any entry variant from any entry in any content type is successfully unpublished from a specific environment. 
content_types.entries.variants.environments.publish.fail Any entry variant from any entry in any content type failed to publish to any environment. 
content_types.entries.variants.environments.unpublish.fail Any entry variant from any entry in any content type failed to unpublish from any environment. 
content_types.entries.variants.environments.{environment_uid}.publish.fail Any entry variant from any entry in any content type failed to publish to a specific environment. 
content_types.entries.variants.environments.{environment_uid}.unpublish.fail Any entry variant from any entry in any content type failed to unpublish from a specific environment. 
content_types.{content_type_id}.entries.variants.environments.publish.success Any entry variant from any entry in a specific content type is successfully published to any environment. 
content_types.{content_type_id}.entries.variants.environments.unpublish.success Any entry variant from any entry in a specific content type is successfully unpublished from any environment. 
content_types.{content_type_id}.entries.variants.environments.{environment_uid}.publish.success Any entry variant from any entry in a specific content type is successfully published to a specific environment. 
content_types.{content_type_id}.entries.variants.environments.{environment_uid}.unpublish.success Any entry variant from any entry in a specific content type is successfully unpublished from a specific environment. 
content_types.{content_type_id}.entries.variants.environments.publish.fail Any entry variant from any entry in a specific content type failed to publish to any environment. 
content_types.{content_type_id}.entries.variants.environments.unpublish.fail Any entry variant from any entry in a specific content type failed to unpublish from any environment. 
content_types.{content_type_id}.entries.variants.environments.{environment_uid}.publish.fail Any entry variant from any entry in a specific content type failed to publish to a specific environment. 
content_types.{content_type_id}.entries.variants.environments.{environment_uid}.unpublish.fail Any entry variant from any entry in a specific content type failed to unpublish from a specific environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.environments.publish.success Any entry variant from a specific entry in a specific content type is successfully published to any environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.environments.unpublish.success Any entry variant from a specific entry in a specific content type is successfully unpublished from any environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.environments.{environment_uid}.publish.success Any entry variant from a specific entry in a specific content type is successfully published to a specific environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.environments.{environment_uid}.unpublish.success Any entry variant from a specific entry in a specific content type is successfully unpublished from a specific environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.environments.publish.fail Any entry variant from a specific entry in a specific content type failed to publish to any environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.environments.unpublish.fail Any entry variant from a specific entry in a specific content type failed to unpublish from any environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.environments.{environment_uid}.publish.fail Any entry variant from a specific entry in a specific content type failed to publish to a specific environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.environments.{environment_uid}.unpublish.fail Any entry variant from a specific entry in a specific content type failed to unpublish from a specific environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.{variant_uid}.environments.publish.success A specific entry variant from a specific entry in a specific content type is successfully published to any environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.{variant_uid}.environments.unpublish.success A specific entry variant from a specific entry in a specific content type is successfully unpublished from any environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.{variant_uid}.environments.{environment_uid}.publish.success A specific entry variant from a specific entry in a specific content type is successfully published to a specific environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.{variant_uid}.environments.{environment_uid}.unpublish.success A specific entry variant from a specific entry in a specific content type is successfully unpublished from a specific environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.{variant_uid}.environments.publish.fail A specific entry variant from a specific entry in a specific content type failed to publish to any environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.{variant_uid}.environments.unpublish.fail A specific entry variant from a specific entry in a specific content type failed to unpublish from any environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.{variant_uid}.environments.{environment_uid}.publish.fail A specific entry variant from a specific entry in a specific content type failed to publish to a specific environment. 
content_types.{content_type_id}.entries.{entry_uid}.variants.{variant_uid}.environments.{environment_uid}.unpublish.fail A specific entry variant from a specific entry in a specific content type failed to unpublish from a specific environment.

Taxonomy

Method Description 
taxonomies.create Any new taxonomy is created 
taxonomies.update Any existing taxonomy is updated 
taxonomies.delete Any taxonomy is deleted 
taxonomies.{taxonomy_uid}.update A specific taxonomy is updated 
taxonomies.{taxonomy_uid}.delete A specific taxonomy is deleted 
taxonomies.terms.create Any term is created in any taxonomy 
taxonomies.terms.update Any term is updated in any taxonomy 
taxonomies.terms.delete Any term is deleted from any taxonomy 
taxonomies.{taxonomy_uid}.terms.created Any term is created in a specific taxonomy 
taxonomies.{taxonomy_uid}.terms.update Any term is updated in a specific taxonomy 
taxonomies.{taxonomy_uid}.terms.delete Any term is deleted from a specific taxonomy 
taxonomies.localize Any taxonomy is localized 
taxonomies.unlocalize Any taxonomy is unlocalized 
taxonomies.{taxonomy_uid}.localize A specific taxonomy is localized 
taxonomies.{taxonomy_uid}.unlocalize A specific taxonomy is unlocalized 
taxonomies.terms.localize Any term in any taxonomy is localized 
taxonomies.terms.unlocalize Any term in any taxonomy is unlocalized 
taxonomies.{taxonomy_uid}.terms.localize Any term in a specific taxonomy is localized 
taxonomies.{taxonomy_uid}.terms.unlocalize Any term in a specific taxonomy is unlocalized

Taxonomy Publish

Method Description 
taxonomy.environments.publish.success Any taxonomy is successfully published to any environment. 
taxonomy.environments.unpublish.success Any taxonomy is successfully unpublished from any environment. 
taxonomy.environments.{environment_uid}.publish.success Any taxonomy is successfully published to a specific environment. 
taxonomy.environments.{environment_uid}.unpublish.success Any taxonomy is successfully unpublished from a specific environment. 
taxonomy.environments.publish.fail Any taxonomy failed to publish to any environment. 
taxonomy.environments.unpublish.fail Any taxonomy failed to unpublish from any environment. 
taxonomy.environments.{environment_uid}.publish.fail Any taxonomy failed to publish to a specific environment. 
taxonomy.environments.{environment_uid}.unpublish.fail Any taxonomy failed to unpublish from a specific environment. 
taxonomy.{taxonomy_uid}.environments.publish.success A specific taxonomy is successfully published to any environment. 
taxonomy.{taxonomy_uid}.environments.unpublish.success A specific taxonomy is successfully unpublished from any environment. 
taxonomy.{taxonomy_uid}.environments.{environment_uid}.publish.success A specific taxonomy is successfully published to a specific environment. 
taxonomy.{taxonomy_uid}.environments.{environment_uid}.unpublish.success A specific taxonomy is successfully unpublished from a specific environment. 
taxonomy.{taxonomy_uid}.environments.publish.fail A specific taxonomy failed to publish to any environment. 
taxonomy.{taxonomy_uid}.environments.unpublish.fail A specific taxonomy failed to unpublish from any environment. 
taxonomy.{taxonomy_uid}.environments.{environment_uid}.publish.fail A specific taxonomy failed to publish to a specific environment. 
taxonomy.{taxonomy_uid}.environments.{environment_uid}.unpublish.fail A specific taxonomy failed to unpublish from a specific environment.

NoteTaxonomy publish and unpublish are branch-level events, whereas the taxonomy and term create, update, and delete actions in the section above are scoped to the stack level. For this reason, these publish and unpublish events use the singular taxonomy. prefix, while the events in the section above use the plural taxonomies. prefix.

Jobs

Method Description 
jobs.environments.publish.completedAny bulk publish job in all environments is completed
jobs.environments.unpublish.completedAny bulk unpublish job in all environments is completed
jobs.environments.{environment_name}.publish.completedAny bulk publish job on specific environment is completed
jobs.environments.{environment_name}.unpublish.completedAny bulk unpublish job on specific environment is completed

Difference Between Entry-Based, Asset-Based, and Job-Based Webhook Events

Differentiating FactorsEntry-Based and Asset-Based Publish/Unpublish Webhooks Job-based Publish/Unpublish Webhooks 
How it functionsTriggers when an entry/asset is successfully published/unpublished/deleted/created on all/any environmentTriggers when a specific Job (Publish/Unpublish/Delete/Create) is completed on all/any environment
Bulk publish/unpublish of “N” itemsWebhook is triggered “N” times for bulk actionsWebhook is triggered only once at the end for bulk actions (irrespective of the number of items, i.e., for one or many)
Publish/unpublish of single itemWebhook is triggered onceWebhook is triggered once
Webhook payloadContains complete data about entry/asset (all the fields)Contains only the summary of the job i.e., total count and its skipped, failed, success counts.

Note Job events report the completed status only. When individual items in a bulk operation fail, the failure surfaces through the entry- or asset-level publish.fail and unpublish.fail events, not through a job event.

Assets

MethodDescription
assets.createAny asset is created
assets.updateAny asset is updated
assets.deleteAny asset is deleted
assets.{asset_uid}.deleteA specific asset is deleted
assets.publishAny asset is published
assets.publish.failAny asset failed to publish
assets.unpublishAny asset is unpublished
assets.unpublish.failAny asset failed to unpublish
assets.{asset_uid}.environments.publish.successA specific asset is successfully published to any environment
assets.{asset_uid}.environments.unpublish.successA specific asset is successfully unpublished from any environment
assets.{asset_uid}.environments.{environment_uid}.publish.successA specific asset is successfully published to a specific environment
assets.{asset_uid}.environments.{environment_uid}.unpublish.successA specific asset is successfully unpublished from a specific environment
assets.{asset_uid}.environments.publish.failA specific asset failed to publish to any environment
assets.{asset_uid}.environments.unpublish.failA specific asset failed to unpublish from any environment
assets.{asset_uid}.environments.{environment_uid}.publish.failA specific asset failed to publish to a specific environment
assets.{asset_uid}.environments.{environment_uid}.unpublish.failA specific asset failed to unpublish from a specific environment

Releases

MethodDescription
releases.environments.deployAny release deployed on all environments
releases.environments.{environment_name}.deployAny release deployed on a specific environment
releases.{release_uid}.environments.deployA specific release deployed on all environments
releases.{release_uid}.environments.{environment_name}.deployA specific release deployed on a specific environment
releases.environments.deploy.{status}The status of any release deployed on any environment
releases.{release_uid}.environments.deploy.{status}The status of a specific release deployed on any environment
releases.environments.{environment_name}.deploy.{status}The status of any release deployed on a specific environment
releases.{release_uid}.environments.{environment_name}.deploy.{status}The status of a specific release deployed on a specific environment

When a webhook is triggered for an entry or asset, because it was published/unpublished via a release, the webhook data of such as an event contains a 'source' key. This key contains the JSON data of the release (type, title, and UID) it was deployed through.

This is useful in cases where a lot depends on the webhook data. For example, in the case of static site generators, a build is generated every time an item (entry or asset) is published or unpublished. So, if a release is deployed with 200 items, it will generate a build 200 times, instead of just one time for the release. To avoid such cases, the developer can write custom code that ignores events whose response contains the source key. So, only one build will be generated for the whole release.