> ## Documentation Index
> Fetch the complete documentation index at: https://docs.labelbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> A guide for managing webhooks in the UI.

A webhook is simply a way for Labelbox to automatically send information to your server when a specific event occurs. Think of it as a real-time notification system. Instead of your application constantly asking Labelbox if there are any updates (a process called "polling"), Labelbox actively pushes the updates to your application the moment they happen. This saves time, bandwidth, and resources.

## Event delivery and volume

When building your webhook integration, it is important to understand how Labelbox delivers events to your application:

* **Delivery order:** Labelbox does not guarantee the sequential delivery of webhook events (e.g., the exact chronological order in which a label was created, updated, or deleted). Your system should be designed to handle events that may arrive out of order.
* **Outgoing rate:** The rate of incoming webhooks depends entirely on which topics you subscribe to and your usage volume (for instance, how rapidly your team is creating labels or moving data rows).

## Security and payload formatting

To keep your data secure, all Labelbox webhook events are sent exclusively via **HTTPS**. Additionally, Labelbox attaches a unique signature to every event. By configuring your endpoint to verify this signature, you can confidently confirm that the incoming message genuinely originated from Labelbox.

When parsing the data sent by Labelbox, keep the following in mind:

* **Format:** The `Content-Type` header for all webhook events is always strictly `application/json`.
* **Payload size:** There is no maximum upper limit for the webhook payload. The payload size grows based on the number of annotations on a label, and Labelbox does not restrict the number of annotations you can have per data row.

## Labelbox server addresses

All webhook traffic from Labelbox originates from specific IP addresses. To ensure you receive these events without interruption, please review the [Labelbox server addresses](https://www.google.com/url?q=%2Fdocs%2Fserver-addresses "/docs/server-addresses") and add them to your firewall's allowlist or relevant security policies.

## Webhook events

Labelbox supports a variety of webhook events, which can be configured for a specific project or across your entire organization.

| Entity             | Event Types                                    | Description                                                                                                                                                                           | Method & Payload |
| ------------------ | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| Label              | LABEL\_CREATED, LABEL\_UPDATED, LABEL\_DELETED | Triggers when labels have been created, updated, or deleted.                                                                                                                          | HTTP POST        |
| Model run training | Created (HTTP POST)                            | Triggers when training of a model run has been initiated Note this webhook does not yet conform to standard webhook subscriptions. It must be registered in the Model User Interface. | HTTP POST        |
| Models list        | Queries (HTTP GET)                             | Callback to retrieve a list of model types for a given model training backend                                                                                                         | HTTP GET         |
| Workflow           | MOVE                                           | Triggers when a workflow action happens, e.g. after a data row was approved or rejected during a review step, or after it was manually moved to a different queue.                    | HTTP POST        |

**Understanding label event payloads**\
When you receive a label-related event (such as `LABEL_CREATED`), the first `id` in the JSON payload always corresponds to that specific label's ID.

```json theme={null}
Event: LABEL_CREATED
Payload: {
    "id": "cl0sjr9nb9tfi0zatagsq5zw1",
}
```

## How to create webhooks

You can easily set up and manage your webhooks without writing any code. Simply navigate to the [Webhooks tab](https://www.google.com/url?q=https%3A%2F%2Fapp.labelbox.com%2Fworkspace-settings%2Fwebhooks "https://app.labelbox.com/workspace-settings/webhooks") located in your **Workspace settings**.

You can choose to set up a webhook at the **workspace-level** or **project-level:**

<Warning>
  When creating a webhook, you must decide upfront whether it will be **project-specific** or **organization-wide (global)**. Once a webhook is created, its scope is permanent and cannot be modified. If you need a different scope, you will need to delete the existing webhook and create a new one.
</Warning>

**Global webhook**

* Applies to **all projects** in your organization
* Triggers on events across the entire workspace
* Useful when you want a single endpoint to receive notifications from everything

**Project-specific webhook**

* Scoped to a **single project** only
* Only triggers on events within that project
* Useful when different projects need to send data to different endpoints, or when you only care about events from one particular project

## Developer guide

To learn how to manage your webhooks programmatically, visit this developer guide

<Card title="Webhooks developer guide" icon="sparkles" href="/reference/webhook" />
