Webhooks (Salientes)
Los webhooks permiten que SalesOS llame a tu sistema cuando algo ocurre (un lead es ofertado, un ranking se publica, un mensaje se despacha). Nos das una URL HTTPS y un secreto; hacemosPOST de un
payload JSON firmado cada vez que dispara un evento suscrito.
Esta página cubre webhooks salientes (SalesOS → tu endpoint). Para enviar datos hacia SalesOS,
consulta Actividades y API Keys.
Configurar un webhook en el Dashboard
Ve a Integraciones → Webhooks → Nuevo Webhook y completa el formulario.1
Básico
- Nombre (obligatorio) — ej.:
Notificar CRM. - Clave — un identificador estable (ej.:
notify_crm). - Descripción — opcional.
2
Eventos (disparadores)
Elige una Categoría y selecciona los eventos que disparan este webhook — esta es tu
suscripción (ver el catálogo). Déjalo vacío para un webhook que solo
disparas manualmente (botón Probar) o desde un workflow.
3
Destino
- Método —
POST(por defecto),PUToPATCH. - Timeout (segundos) — cuánto esperamos tu
2xx(por defecto 30). - URL (obligatorio) — tu endpoint. Debe ser
https://y público (hosts internos/loopback están bloqueados). - Autenticación — elige HMAC para firmar cada entrega y, en Configuración de Autenticación (JSON), indica tu secreto:
(Otros esquemas disponibles: Bearer, API Key, Basic, OAuth2.)
4
Avanzado
- Headers Personalizados (JSON) — headers extra enviados en cada entrega.
- Plantilla del Payload (JSON con variables
{{ }}) — modela eldatadel envelope a partir del contexto del evento, ej.:{ "id": "{{event.id}}", "type": "{{event.type}}", "to": "{{event.to}}" }.
5
Preview, probar y guardar
El formulario muestra un Preview en vivo (headers + cuerpo). Haz clic en Guardar webhook y usa
Probar Webhook para enviar una entrega de ejemplo y confirmar que tu endpoint recibe — y verifica — el payload.
El envelope
En la ruta de evento, cada entrega es un único objeto JSON:Headers
Verificar la firma
En la ruta de evento, la firma cubre{id}.{timestamp}.{rawBody} (estilo Standard Webhooks), por lo
que autentica el payload y el timestamp (anti-replay). Recalcula el HMAC con tu secreto, compara en
tiempo constante y rechaza si el timestamp está a más de 300s.
Entregas de prueba (el botón “Probar Webhook”) y los disparadores legados de workflow usan hoy un
esquema más simple: el cuerpo es la plantilla renderizada cruda (no el envelope) y el header de firma es
X-Signature: <prefijo><hmac(cuerpo)> — sin el prefijo id.timestamp., por lo que no tiene
anti-replay. Prefiere la ruta de evento de arriba en producción.Catálogo de eventos
Ejemplo de
data para ranking.weekly.published:
Confiabilidad
Responde rápido. Devuelve un estado2xx rápidamente (antes de procesamiento pesado) para confirmar la recepción.
Idempotencia. El mismo evento puede entregarse más de una vez (reintentos). Deduplica por
X-SalesOS-Event-Id — se mantiene igual entre reintentos.

