---
title: "Job-Based Publish/Unpublish Webhooks"
description: "Discover how job-based webhooks summarize bulk publish/unpublish tasks, reducing notifications with key job outcomes for efficient post-processing."
url: "https://www.contentstack.com/docs/headless-cms/job-based-publish-unpublish-webhooks"
product: "Contentstack"
doc_type: "guide"
audience:
  - developers
  - admins
version: "current"
last_updated: "2026-06-26"
---

# Job-Based Publish/Unpublish Webhooks

Job-based webhook events trigger when bulk publish/unpublish operations complete. These are typically used when you need a single webhook notification summarizing the outcome of a job, rather than one webhook notification per entry or asset.

## Event Types

**Event Name**

**Description**

jobs.environments.publish.completed

Triggered when a bulk publish job completes in any environment

jobs.environments.unpublish.completed

Triggered when a bulk unpublish job completes in any environment

jobs.environments.{environment\_name}.publish.completed

Triggered when a bulk publish job completes in a specific environment

jobs.environments.{environment\_name}.unpublish.completed

Triggered when a bulk unpublish job completes in a specific environment

## Entry or Asset-Based vs. Job-Based Webhooks

**Differentiating Factor**

**Entry-/Asset-based Webhooks**

**Job-based Webhooks**

**Trigger Condition**

Per entry/asset action

Per job completion

**Bulk Publish/Unpublish of N Items**

Webhook triggered N times

Webhook triggered once

**Single Item Publish/Unpublish**

Webhook triggered once

Webhook triggered once

**Payload Content**

Full entry/asset details

Summary (job ID, status counts)

**Use Cases**

Per-item tracking

Summary-based cache updates

## Using Job-based Webhooks to Retrieve Entries/Assets

Job-based webhooks are especially useful for post-processing bulk operations. You can use the job\_id from the webhook payload to retrieve the list of items involved.

Follow the steps below to retrieve entry/asset information via job\_id:

1.  In the payload for job-based webhooks, you receive a job\_id similar to the following:
    
    ```
    {
      ...
      "job_id": "00906443-2ba3-420e-a3bd-2b6b4cd7c5745"
    }
    ```
    
2.  Use this job\_id in the [Get job items status](/docs/developers/apis/content-management-api/job-status#get-job-items-status) API request to retrieve a list of entries and assets that were published or unpublished as part of the job.
3.  Use the [Get a single entry](/docs/developers/apis/content-delivery-api/entries#single-entry) or [Get a single asset](/docs/developers/apis/content-delivery-api/assets#single-asset) APIs to further fetch the complete details.

These steps help you retrieve full metadata and content for assets/entries within a job-based webhook.