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

# Overview

Webhooks are configured in the dashboard under Settings -> Integrations -> Webhooks.

Webhooks let you receive real-time notifications when events happen in Nexor. Instead of polling the API, Nexor sends an HTTP POST to your endpoint whenever a lead changes status, a meeting is booked, cancelled, or completed.

## How it works

1. **Configure** a webhook in the [Nexor dashboard](https://app.getnexor.ai/organization/webhooks) with your endpoint URL and the events you want to receive.
2. **Nexor detects** an event (e.g. lead status changes from `new` to `contacted`).
3. **Nexor sends** a signed POST request to your URL with the event payload.
4. **Your server** responds with `2xx` to acknowledge receipt.

If your server doesn't respond or returns an error, Nexor retries up to 3 times with exponential backoff (1 min, 5 min, 30 min).

## Supported events

| Event type                    | Triggered when                                                                                                                  |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `workflow_run.status_changed` | A lead's status changes within a workflow (e.g. `new` to `contacted`, `contacted` to `qualified`)                               |
| `meeting.scheduled`           | A meeting is booked with a lead                                                                                                 |
| `meeting.confirmed`           | A lead confirms attendance to a meeting                                                                                         |
| `meeting.cancelled`           | A meeting is cancelled                                                                                                          |
| `meeting.completed`           | A meeting is marked as completed                                                                                                |
| `meeting.no_show`             | A lead is marked as a no-show for a meeting                                                                                     |
| `outreach.failed`             | An automated follow-up or recontact fails to reach a lead (invalid number, opt-out, no contact data, channel down, unreachable) |

## Payload structure

Every webhook delivery follows the same envelope:

```json theme={null}
{
  "event_type": "workflow_run.status_changed",
  "event_id": "550e8400-e29b-41d4-a716-446655440000",
  "webhook_id": "your-webhook-uuid",
  "delivery_id": "unique-delivery-uuid",
  "timestamp": "2026-04-17T16:30:00.000Z",
  "client_id": "your-client-uuid",
  "test": false,
  "data": {
    // Event-specific payload (see event pages)
  }
}
```

| Field         | Type              | Description                                           |
| ------------- | ----------------- | ----------------------------------------------------- |
| `event_type`  | string            | The event that triggered the delivery                 |
| `event_id`    | string (uuid)     | Unique ID of the event                                |
| `webhook_id`  | string (uuid)     | Your webhook configuration ID                         |
| `delivery_id` | string (uuid)     | Unique ID for this specific delivery attempt          |
| `timestamp`   | string (ISO 8601) | When the event occurred                               |
| `client_id`   | string (uuid)     | Your Nexor client ID                                  |
| `test`        | boolean           | `true` if sent via the "Test" button in the dashboard |
| `data`        | object            | Event-specific payload                                |

## Headers

Every delivery includes these headers:

| Header                | Description                                     |
| --------------------- | ----------------------------------------------- |
| `Content-Type`        | `application/json`                              |
| `X-Nexor-Event`       | Event type (e.g. `workflow_run.status_changed`) |
| `X-Nexor-Delivery-ID` | Unique delivery ID                              |
| `X-Nexor-Timestamp`   | Unix timestamp (seconds)                        |
| `X-Nexor-Webhook-ID`  | Your webhook ID                                 |
| `X-Nexor-Signature`   | HMAC-SHA256 signature for verification          |
