DocumentacionCatalogo de eventos webhook
Catalogo de eventos webhook
Referencia de payloads para email.* y contact.unsubscribed.
Referencia de tipos de eventos webhook salientes. Registra endpoints en Webhooks salientes.
Tipos de evento
| Evento | Cuando se dispara |
|---|---|
email.sent | Mensaje aceptado y encolado en el transporte |
email.delivered | El proveedor confirma entrega al MX del destinatario |
email.opened | Pixel de tracking cargado (si esta activo) |
email.clicked | Enlace rastreado pulsado |
email.bounced | Rebote hard o soft del proveedor |
email.complained | Queja de spam (FBL) |
email.failed | Fallo de envio antes o durante la entrega |
contact.unsubscribed | El destinatario uso la baja hospedada o API de baja |
Forma del sobre
Cada entrega es un POST firmado a tu URL:
X-MailingCore-Signature: t=1719763200,v1=abc123...
Content-Type: application/json
{
"id": "evt_...",
"type": "email.delivered",
"createdAt": "2026-06-30T12:00:00.000Z",
"tenantId": "clxtenant...",
"data": { }
}
Verifica con firma HMAC antes de confiar en data.
Datos email.* (campos comunes)
{
"emailLogId": "clxlog...",
"to": "[email protected]",
"subject": "Bienvenida",
"status": "DELIVERED",
"tags": ["welcome"],
"metadata": { "userId": "123" },
"templateVersionId": "clxversion...",
"occurredAt": "2026-06-30T12:00:01.000Z"
}
Campos adicionales por evento:
| Evento | Campos extra |
|---|---|
email.bounced | bounceType (hard / soft), diagnostic |
email.complained | complaintFeedbackType |
email.opened | userAgent, ip (si se recopila) |
email.clicked | linkUrl, linkId |
Datos contact.unsubscribed
{
"contactId": "clxcontact...",
"externalId": "user-12345",
"email": "[email protected]",
"unsubscribedAt": "2026-06-30T12:00:00.000Z",
"source": "hosted_page"
}
Usalo para sincronizar bajas con tu CRM y detener campanas futuras.
Consejos de procesamiento
- Responde 200 en pocos segundos; procesa en asincrono.
- Usa
id(oemailLogId) para deduplicar — se esperan reintentos. - En
email.bounced(hard) ocontact.unsubscribed, anade la direccion a tu logica de supresion local.