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

# Eventos de Webhook

> Recibe en tu servidor cuando una automatización cambie de estado o cuando una ejecución inicie, se complete, falle o se cancele.

<Tip>
  Con la API **preguntas**; con Webhooks Notifique **notifica**. Ideal para pausar campañas externas, abrir tickets de soporte o auditar ejecuciones sin sondeo.
</Tip>

## En resumen

* Cada entrega es un **POST** con `application/json` a tu URL registrada.
* Los eventos `automation.*` cubren la **definición** (habilitar/deshabilitar) y las **ejecuciones** (runs).
* `instanceId` está **vacío** (las automatizaciones pertenecen al Workspace, no a un canal).
* Habilita **solo** los eventos que usa tu integración.
* Responde **2xx** rápido; el procesamiento pesado va a una cola de tu lado.

Configuración general: [Webhooks](/es/guides/webhooks/index).

<Note>
  Este es un Webhook **saliente** (Notifique → tu servidor). Para **disparar** una automatización con un POST desde tu sistema, configura el activador HTTP en el editor de automatización o usa [Eventos](/es/automations-api/como-funciona/eventos).
</Note>

***

## Cómo se ve el POST

```json theme={null}
{
  "event": "automation.run.completed",
  "workspaceId": "clxx123...",
  "instanceId": "",
  "timestamp": "2026-07-25T16:05:00.000Z",
  "data": {
    "automationId": "clxx...",
    "runId": "clxx...",
    "contactId": "clxx...",
    "status": "COMPLETED",
    "previousStatus": "RUNNING",
    "eventName": "whatsapp.inbound",
    "isSandbox": false,
    "errorMessage": null,
    "startedAt": "2026-07-25T16:04:50.000Z",
    "completedAt": "2026-07-25T16:05:00.000Z"
  }
}
```

| Campo         | Descripción                                           |
| ------------- | ----------------------------------------------------- |
| `event`       | Nombre del evento (p. ej. `automation.run.completed`) |
| `workspaceId` | ID del Workspace                                      |
| `instanceId`  | Siempre vacío para automatizaciones                   |
| `timestamp`   | ISO 8601, úsalo para anti-replay                      |
| `data`        | Campos de la definición o de la ejecución             |

Headers: `X-Notifique-Signature`, `X-Notifique-Timestamp`, `X-Workspace-Id`, `X-Webhook-Event`.

***

## Qué debe devolver tu servidor

| Respuesta               | Efecto                                    |
| ----------------------- | ----------------------------------------- |
| **2xx** en \~10 s       | Evento entregado; se elimina de la cola   |
| **4xx / 5xx / timeout** | Reintento automático (5 min, 30 min, 2 h) |

<Note>
  ¿Procesamiento lento? Devuelve **200** de inmediato y procesa en segundo plano.
</Note>

***

## Referencia de eventos

### Definición de automatización

| Evento                      | Cuándo se dispara                       | Qué hacer con ello              |
| --------------------------- | --------------------------------------- | ------------------------------- |
| `automation.enabled`        | La definición pasa a `ENABLED`          | Habilita el flujo en tu sistema |
| `automation.disabled`       | La definición pasa a `DISABLED`         | Pausa dependencias externas     |
| `automation.status_changed` | Cualquier cambio `ENABLED` ↔ `DISABLED` | Actualiza el estado en CRM/ERP  |

### Ejecución (run)

| Evento                     | Cuándo se dispara                     | Qué hacer con ello                  |
| -------------------------- | ------------------------------------- | ----------------------------------- |
| `automation.run.started`   | Se crea una ejecución y comienza      | Abre ticket / log de ejecución      |
| `automation.run.completed` | La ejecución termina con éxito        | Cierra el flujo / marca éxito       |
| `automation.run.failed`    | La ejecución falla en un paso crítico | Alerta e inspecciona `errorMessage` |
| `automation.run.cancelled` | Ejecución cancelada (stop)            | Limpia el estado pendiente          |

***

## Payload por evento

<AccordionGroup>
  <Accordion title="automation.disabled">
    ```json theme={null}
    {
      "event": "automation.disabled",
      "workspaceId": "clxx...",
      "instanceId": "",
      "timestamp": "2026-07-25T16:00:00.000Z",
      "data": {
        "automationId": "clxx...",
        "name": "WhatsApp welcome",
        "status": "DISABLED",
        "previousStatus": "ENABLED",
        "triggerKind": "CHANNEL_INBOUND",
        "triggerChannel": "WHATSAPP",
        "triggerEventName": null,
        "graphVersion": 3
      }
    }
    ```
  </Accordion>

  <Accordion title="automation.run.completed">
    ```json theme={null}
    {
      "event": "automation.run.completed",
      "workspaceId": "clxx...",
      "instanceId": "",
      "timestamp": "2026-07-25T16:05:00.000Z",
      "data": {
        "automationId": "clxx...",
        "runId": "clxx...",
        "contactId": "clxx...",
        "status": "COMPLETED",
        "previousStatus": "RUNNING",
        "eventName": "whatsapp.inbound",
        "isSandbox": false,
        "errorMessage": null,
        "startedAt": "2026-07-25T16:04:50.000Z",
        "completedAt": "2026-07-25T16:05:00.000Z"
      }
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Próximos pasos

* [Introducción](/es/automations-api/como-funciona/introducao)
* [Eventos (disparo por API)](/es/automations-api/como-funciona/eventos)
* [Webhooks](/es/guides/webhooks/index)
