Qué es
En vez de hacer polling de/v1/events, puedes registrar una URL y
Axelo te enviará un POST por cada evento de entrega — de email, WhatsApp y wallet:
sent · delivered · opened · clicked · bounced · complained · failed · suppressed
También eventos de cuenta de tus dominios propios: domain.verified y domain.verification_failed
(channel domain, sin job_id; el result trae {domain, transport, status}). Los recibes cuando un
dominio pasa de pendiente a verificado (o falla), sin tener que consultar.
Para email: sent = aceptado por el servidor de Axelo; delivered = el servidor del destinatario
confirmó la recepción (250). opened/clicked prueban además que el destinatario interactuó.
La entrega es asíncrona y con reintentos automáticos (backoff exponencial) si tu endpoint no
responde 2xx.
Configurar
Desde el dashboard (admin → detalle del tenant → Webhook de eventos) registra tu URL. Al guardarla se genera un secreto de firma (whsec_...) que se muestra ahí mismo. Deja la URL
vacía para deshabilitar.
Payload
id es el event_id único. La entrega es at-least-once (en un reinicio un evento podría
repetirse): usa id para deduplicar.En eventos
bounced de envíos por Resend, result incluye el detalle del rebote:
bounce_type (Permanent | Transient), bounce_subtype y diagnostic_code (p. ej.
"smtp; 550 5.4.4 Invalid domain"). Solo los rebotes Permanent suprimen al destinatario.Verificar la firma
CalculaHMAC-SHA256 sobre el cuerpo crudo con tu events_webhook_secret y compáralo (en tiempo
constante) con el header X-Axelo-Signature-256.
Reintentos
Si tu endpoint devuelve un código fuera de2xx (o falla la conexión), Axelo reintenta con backoff.
Responde 2xx en cuanto recibas el evento (procesa de forma asíncrona de tu lado) para evitar
reintentos innecesarios.