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

# Webhook Events

> Complete reference of all event types available for webhook subscriptions in the Essal platform.

## Event Format

Every event delivered to your webhook endpoint follows the same envelope:

```json theme={null}
{
  "id": "evt_01HXYZEVT1",
  "type": "sales.deal.won",
  "workspace_id": "ws_01HXYZABC",
  "timestamp": "2026-07-10T15:00:00Z",
  "actor": { "type": "user", "id": "usr_01HXYZ5678" },
  "payload": { ... }
}
```

## Office Events

| Event                       | Description                              |
| --------------------------- | ---------------------------------------- |
| `office.document.created`   | A new document is created                |
| `office.document.updated`   | A document's content or metadata changes |
| `office.document.deleted`   | A document is deleted                    |
| `office.document.published` | A document is published                  |
| `office.export.completed`   | An async export job finishes             |
| `office.file.uploaded`      | A file is uploaded to storage            |

## Access Events

| Event                     | Description                             |
| ------------------------- | --------------------------------------- |
| `access.user.created`     | A user is provisioned                   |
| `access.user.deactivated` | A user account is deactivated           |
| `access.user.login`       | A user successfully logs in             |
| `access.session.revoked`  | An active session is revoked            |
| `access.sso.configured`   | An SSO connection is created or updated |

## Sales Events

| Event                      | Description                   |
| -------------------------- | ----------------------------- |
| `sales.contact.created`    | A new contact is created      |
| `sales.deal.created`       | A new deal is created         |
| `sales.deal.stage_changed` | A deal moves to a new stage   |
| `sales.deal.won`           | A deal is marked as won       |
| `sales.deal.lost`          | A deal is marked as lost      |
| `sales.import.completed`   | A contact import job finishes |

## Careers Events

| Event                               | Description                          |
| ----------------------------------- | ------------------------------------ |
| `careers.job.published`             | A job posting goes live              |
| `careers.job.closed`                | A job posting is closed              |
| `careers.application.submitted`     | A candidate submits an application   |
| `careers.application.stage_changed` | An applicant advances to a new stage |
| `careers.application.disqualified`  | An applicant is disqualified         |

## Project Events

| Event                      | Description              |
| -------------------------- | ------------------------ |
| `project.project.created`  | A new project is created |
| `project.task.created`     | A new task is created    |
| `project.task.completed`   | A task is marked done    |
| `project.project.archived` | A project is archived    |

## Guard Events

| Event                         | Description                    |
| ----------------------------- | ------------------------------ |
| `guard.alert.triggered`       | A threat detection rule fires  |
| `guard.policy.updated`        | An access policy is modified   |
| `guard.policy.activated`      | A policy is set to active      |
| `guard.audit.exported`        | An audit log export completes  |
| `guard.ip_allowlist.bypassed` | An IP allowlist bypass is used |
