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

# Events

## The Event object

| Field     | Description                                                                                         |
| --------- | --------------------------------------------------------------------------------------------------- |
| eventId   | **string** - Unique identifier for the event                                                        |
| eventType | **string** - Type of the event that occurred (workflow\_run.completed)                              |
| payload   | **object** - Contains the relevant object for the event type (see event type links in tables below) |

Here is what you can expect for a given incoming event:

```json Example Event (JSON Payload)
{
  "eventId": "event_1234",
  "eventType": "workflow_run.completed",
  "payload": {
    "object": "workflow_run",
    "id": "workflow_run_1234"
    // etc.
  }
}
```

```json Example Event (Signed Download URL)
{
  "eventId": "event_1234",
  "eventType": "workflow_run.completed",
  "payload": {
    "data": "<signed download URL here>"
  }
}
```

## Workflow event types

The following table outlines the various event types you can receive via webhooks for a given workflow after you have created a webhook endpoint and subscribed to the desired event types.

| Event Type                                                                                                          | Description                                                                                                                                                                                                      |
| ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`workflow_run.completed`](/api-reference/webhook-events/workflow/workflow-run-completed-webhook)                   | Triggered whenever a WorkflowRun is completed                                                                                                                                                                    |
| [`workflow_run.failed`](/api-reference/webhook-events/workflow/workflow-run-failed-webhook)                         | Triggered whenever a WorkflowRun fails                                                                                                                                                                           |
| [`workflow_run.needs_review`](/api-reference/webhook-events/workflow/workflow-run-needs-review-webhook)             | Triggered whenever a WorkflowRun needs review\*                                                                                                                                                                  |
| [`workflow_run.rejected`](/api-reference/webhook-events/workflow/workflow-run-rejected-webhook)                     | Triggered whenever a WorkflowRun is rejected from the Extend dashboard. [More info](/workflows/reviewing-workflow-run#rejecting-a-workflow-run)                                                                  |
| [`workflow_run.cancelled`](/api-reference/webhook-events/workflow/workflow-run-cancelled-webhook)                   | Triggered whenever a WorkflowRun is cancelled                                                                                                                                                                    |
| [`workflow_run.step_run.processed`](/api-reference/webhook-events/workflow/workflow-run-step-run-processed-webhook) | Triggered whenever a WorkflowStep is finished processing. The payload is a single `stepRun` object from the `stepRuns` array. Useful for consuming incremental extractions to create streaming-like experiences. |

\* Only triggered when the workflow is configured to have a HumanReview step in the Extend workflow builder.

### Workflow global events

| Event Type                                                                              | Description                              |
| --------------------------------------------------------------------------------------- | ---------------------------------------- |
| [`workflow.created`](/api-reference/webhook-events/workflow/workflow-created-webhook)   | Triggered when a new Workflow is created |
| [`workflow.deployed`](/api-reference/webhook-events/workflow/workflow-deployed-webhook) | Triggered when a Workflow is deployed    |
| [`workflow.deleted`](/api-reference/webhook-events/workflow/workflow-deleted-webhook)   | Triggered when a Workflow is deleted     |

## Run event types

The following tables outline the event types you can receive via webhook for runs created using the API.

### Extract run events

| Event Type                                                                                     | Description                                              |
| ---------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| [`extract_run.processed`](/api-reference/webhook-events/extract/extract-run-processed-webhook) | Triggered whenever an ExtractRun has finished processing |
| [`extract_run.failed`](/api-reference/webhook-events/extract/extract-run-failed-webhook)       | Triggered whenever an ExtractRun fails                   |

### Classify run events

| Event Type                                                                                        | Description                                              |
| ------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| [`classify_run.processed`](/api-reference/webhook-events/classify/classify-run-processed-webhook) | Triggered whenever a ClassifyRun has finished processing |
| [`classify_run.failed`](/api-reference/webhook-events/classify/classify-run-failed-webhook)       | Triggered whenever a ClassifyRun fails                   |

### Split run events

| Event Type                                                                               | Description                                           |
| ---------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [`split_run.processed`](/api-reference/webhook-events/split/split-run-processed-webhook) | Triggered whenever a SplitRun has finished processing |
| [`split_run.failed`](/api-reference/webhook-events/split/split-run-failed-webhook)       | Triggered whenever a SplitRun fails                   |

### Batch processor run events

Applies to batch extract, classify, and split operations.

| Event Type                                                                                                   | Description                                                      |
| ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- |
| [`batch_processor_run.processed`](/api-reference/webhook-events/batch/batch-processor-run-completed-webhook) | Triggered whenever a batch processor run has finished processing |
| [`batch_processor_run.failed`](/api-reference/webhook-events/batch/batch-processor-run-failed-webhook)       | Triggered whenever a batch processor run fails                   |

### Batch parse run events

Applies to batch parse operations created via `POST /parse_runs/batch`.

| Event Type                                                                                           | Description                                                  |
| ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| [`batch_parse_run.processed`](/api-reference/webhook-events/batch/batch-parse-run-completed-webhook) | Triggered whenever a batch parse run has finished processing |
| [`batch_parse_run.failed`](/api-reference/webhook-events/batch/batch-parse-run-failed-webhook)       | Triggered whenever a batch parse run fails                   |

### Parse run events

| Event Type                                                                               | Description                                           |
| ---------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [`parse_run.processed`](/api-reference/webhook-events/parse/parse-run-processed-webhook) | Triggered whenever a ParseRun has finished processing |
| [`parse_run.failed`](/api-reference/webhook-events/parse/parse-run-failed-webhook)       | Triggered whenever a ParseRun fails                   |

### Edit run events

| Event Type                                                                            | Description                                           |
| ------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [`edit_run.processed`](/api-reference/webhook-events/edit/edit-run-processed-webhook) | Triggered whenever an EditRun has finished processing |
| [`edit_run.failed`](/api-reference/webhook-events/edit/edit-run-failed-webhook)       | Triggered whenever an EditRun fails                   |

## Processor event types

The following tables outline event types for processor (extractor, classifier, splitter) lifecycle events.

### Extractor events

| Event Type                                                                                                 | Description                                            |
| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| [`extractor.created`](/api-reference/webhook-events/extract/extractor-created-webhook)                     | Triggered when a new Extractor is created              |
| [`extractor.updated`](/api-reference/webhook-events/extract/extractor-updated-webhook)                     | Triggered when an Extractor is updated                 |
| [`extractor.deleted`](/api-reference/webhook-events/extract/extractor-deleted-webhook)                     | Triggered when an Extractor is deleted                 |
| [`extractor.draft.updated`](/api-reference/webhook-events/extract/extractor-draft-updated-webhook)         | Triggered when an Extractor's draft version is updated |
| [`extractor.version.published`](/api-reference/webhook-events/extract/extractor-version-published-webhook) | Triggered when a new ExtractorVersion is published     |

### Classifier events

| Event Type                                                                                                    | Description                                            |
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| [`classifier.created`](/api-reference/webhook-events/classify/classifier-created-webhook)                     | Triggered when a new Classifier is created             |
| [`classifier.updated`](/api-reference/webhook-events/classify/classifier-updated-webhook)                     | Triggered when a Classifier is updated                 |
| [`classifier.deleted`](/api-reference/webhook-events/classify/classifier-deleted-webhook)                     | Triggered when a Classifier is deleted                 |
| [`classifier.draft.updated`](/api-reference/webhook-events/classify/classifier-draft-updated-webhook)         | Triggered when a Classifier's draft version is updated |
| [`classifier.version.published`](/api-reference/webhook-events/classify/classifier-version-published-webhook) | Triggered when a new ClassifierVersion is published    |

### Splitter events

| Event Type                                                                                             | Description                                          |
| ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------- |
| [`splitter.created`](/api-reference/webhook-events/split/splitter-created-webhook)                     | Triggered when a new Splitter is created             |
| [`splitter.updated`](/api-reference/webhook-events/split/splitter-updated-webhook)                     | Triggered when a Splitter is updated                 |
| [`splitter.deleted`](/api-reference/webhook-events/split/splitter-deleted-webhook)                     | Triggered when a Splitter is deleted                 |
| [`splitter.draft.updated`](/api-reference/webhook-events/split/splitter-draft-updated-webhook)         | Triggered when a Splitter's draft version is updated |
| [`splitter.version.published`](/api-reference/webhook-events/split/splitter-version-published-webhook) | Triggered when a new SplitterVersion is published    |