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

# Webhooks

> Conecta Asistian con sistemas externos usando webhooks de salida para notificar eventos y de entrada para recibir datos.

## ¿Qué son los webhooks?

Los **webhooks** son notificaciones automáticas que se envían de un sistema a otro cuando ocurre un evento. En Asistian puedes usar webhooks para:

* **Enviar datos** a tu CRM, ERP o cualquier sistema externo cuando ocurre algo en Asistian (webhooks de salida)
* **Recibir datos** de sistemas externos para disparar acciones en Asistian (webhooks de entrada)

## Webhooks de salida

Los webhooks de salida notifican a una URL externa cuando ocurren eventos en Asistian.

### Crear un webhook de salida

1. Ve a **Configuración → Integraciones → Webhooks**
2. Haz clic en **Nuevo webhook**
3. Completa:
   * **URL de destino** — la URL de tu sistema externo que recibirá los datos
   * **Nombre** — para identificarlo internamente
   * **Eventos a notificar** — selecciona qué eventos disparan el webhook

### Eventos disponibles

| Categoría          | Evento                                                         |
| ------------------ | -------------------------------------------------------------- |
| **Conversaciones** | Nueva conversación, mensaje recibido, mensaje enviado          |
| **Prospectos**     | Etapa cambiada, prospecto calificado, prospecto ganado/perdido |
| **Contactos**      | Contacto creado, contacto actualizado                          |
| **Tickets**        | Ticket creado, estado de ticket cambiado                       |
| **Reservaciones**  | Reservación creada, estado de reservación cambiado             |

### Formato del payload

Asistian envía los datos en formato **JSON** a tu URL. Ejemplo de evento de nueva conversación:

```json theme={null}
{
  "event": "conversation.created",
  "timestamp": "2025-01-15T10:30:00Z",
  "data": {
    "conversation_id": "conv_abc123",
    "contact": {
      "name": "Juan Pérez",
      "phone": "+521234567890",
      "email": "juan@ejemplo.com"
    },
    "channel": "whatsapp",
    "pipeline": "Ventas"
  }
}
```

### Verificación de autenticidad

Asistian firma cada petición con un **secreto HMAC**. Verifica la firma en tu servidor para asegurarte de que el webhook viene de Asistian:

1. Al crear el webhook, Asistian genera un **secreto de firma**
2. Cada petición incluye el header `X-Asistian-Signature`
3. Valida la firma comparando el HMAC-SHA256 del cuerpo con tu secreto

### Reintentos y logs

Si tu servidor no responde con un código `2xx`, Asistian reintenta automáticamente hasta 3 veces con espera progresiva.

Puedes ver el historial de ejecuciones en la sección de **Logs del webhook** para depurar errores.

## Webhooks de entrada

Los webhooks de entrada permiten que sistemas externos envíen datos a Asistian para disparar acciones o actualizar información.

### Crear un webhook de entrada

1. Ve a **Configuración → Integraciones → Webhooks de entrada**
2. Haz clic en **Nuevo webhook de entrada**
3. Asistian genera una **URL única** que puedes compartir con el sistema externo
4. Define qué acción ejecutar cuando lleguen datos

### Casos de uso comunes

* Tu e-commerce notifica a Asistian cuando un cliente hace un pedido → el asistente le envía un mensaje de confirmación
* Tu sistema de pagos notifica cuando un pago es aprobado → se actualiza el estado del prospecto en el pipeline
* Un formulario web envía los datos de un lead → se crea un contacto y una conversación en Asistian

## Probar un webhook

Antes de conectar en producción, usa la función de **envío de prueba**:

1. Abre el webhook que quieres probar
2. Haz clic en **Enviar prueba**
3. Asistian enviará un payload de ejemplo a tu URL
4. Verifica en el log que la respuesta fue exitosa

<Tip>
  Herramientas como [webhook.site](https://webhook.site) o [ngrok](https://ngrok.com) son útiles para probar webhooks durante el desarrollo antes de tener un servidor de producción.
</Tip>
