Elido
Todo lo que hace Elido
Pro y Business

Webhooks. Real-time events, delivered reliably.

Los puntos finales de webhook por espacio de trabajo reciben eventos de clics, conversiones y gestión de enlaces con firmas HMAC-SHA256. Reintentos automáticos con retroceso exponencial. El modo SIEM transmite eventos a su plataforma de seguridad.

  • 10+ event types — clicks, conversions, domain changes
  • HMAC-SHA256 signature on every delivery
  • 72-hour exponential-backoff retry
  • Delivery log with one-click replay
Webhook delivery
Event sourcelink.clickedlink.createdElidoHMAC-SHA256sign + enqueueYour endpointPOST /webhooksapi.acme.com010203
Outbound request
POSThttps://api.acme.com/webhooks
X-Elido-Signature: sha256=3c4d2e1f8a...
Content-Type: application/json
X-Elido-Event: link.clicked
{
"event": "link.clicked",
"event_id": "evt_01hw...",
"data": { link_id, url, country, device, ts }
}
<2s median latency HMAC-SHA256 signed
<2s
Latencia media de entrega de eventos
72h
Ventana de reintentos antes del fallo final
HMAC-SHA256
Algoritmo de firma de solicitudes
10+
Tipos de eventos compatibles

Event types

10+ event types out of the box

Subscribe per endpoint — receive only the events you care about. High-volume click events ship in a 5-second batched window by default; raw-click mode delivers per-click for stream processors.

10+ event types
  • link.clicked

    Every redirect click. Batched (5s window) or raw-click mode.

  • link.created

    A new short link was created in the workspace.

  • link.updated

    Link metadata, target URL, or rules changed.

  • link.deleted

    Link removed — update any downstream references.

  • domain.verified

    Custom domain passed DNS verification.

  • conversion.attributed

    Revenue event matched to a click via Stripe or Shopify.

  • campaign.completed

    Campaign reached its end date or click cap.

  • member.invited

    Workspace member added or SCIM-provisioned.

Plus link.expired, link.click_cap_reached, domain.ssl_issued, and more — see the full event catalog.

Delivery guarantees

Exponential backoff. 72-hour window.

A non-2xx response or a 30-second timeout triggers automatic retries: 30 s → 2 min → 10 min → 30 min → 2 h → 8 h → 24 h → 48 h. After 72 hours the delivery is permanently failed and removed from the queue — but still in the delivery log for manual replay.

  • 30-second response timeout
    Return 200 immediately; process async if your handler is slow.
  • 8 retry attempts over 72 hours
    Exponential backoff — no avalanche effect on restart.
  • Auto-pause after 30 consecutive failures
    Workspace admin notified by email. Resume from dashboard.
  • One-click replay from log
    Original payload, same event_id — receiver must be idempotent.
Delivery retry timeline
72-hour retry window
Attempt 1
14:02:01
500 Internal Server Error
30s backoffexponential × 1
Attempt 2
14:02:31
timeout (30s)
2 min backoffexponential × 4
Attempt 3
14:04:31
200 OK
Response timeout
30 seconds
Max attempts
8 retries
Window
72 hours
Webhook delivery log
SIEM mode
EventEndpointStatusLatencyTime
link.clickedapi.acme.com/wh200142ms14:04:31
link.createdapi.acme.com/wh20088ms14:03:19
conversion.attributedlogs.acme.com50030001ms14:02:01
domain.verifiedapi.acme.com/wh20067ms13:58:44
link.deletedlogs.acme.comtimeout30000ms13:55:12
Showing 5 of 1,284 deliveries · Last 24 hoursEndpoint active

Delivery log

Full log. Filter, inspect, replay.

Every attempt is logged: event ID, event type, endpoint URL, HTTP status, response body (up to 4 KB), and latency. Retention is 30 days on Pro, 90 days on Business.

  • Filter by event type, endpoint, status, and date range
  • Failed entries show full request body for debugging
  • Replay sends original payload — same event_id
  • API: POST /v1/webhooks/deliveries/:id/replay
  • SIEM mode: structured JSON with 7-day retry guarantee

What you can do

  • Eventos de clics, conversiones, enlaces y dominios
  • Firma de solicitudes HMAC-SHA256
  • Reintentos automáticos — hasta 72 horas
  • Modo SIEM para el reenvío de eventos de seguridad
  • Filtrado de temas por tipo de evento
  • Registro de entrega de webhooks con reenvío (replay)

Qué entregan los webhooks de Elido y cómo funciona la entrega

Los webhooks solo son útiles si son fiables. Las siguientes secciones cubren las garantías de entrega, la verificación de firmas, el comportamiento de reintento y el modo SIEM.

Tipos de eventos
01

Eventos de clics, conversiones, ciclo de vida de enlaces y dominios — configurables por punto final

Cada punto final de webhook puede suscribirse a uno o más tipos de eventos: click.created (cada clic de redirección), conversion.created (evento de conversión recibido de Stripe, Shopify o un punto final personalizado), link.created, link.updated, link.deleted, link.expired, link.click_cap_reached, domain.verified, domain.ssl_issued, domain.ssl_error, workspace.member.added, workspace.member.removed. Los eventos de clics de alto volumen pueden generar mucho ruido; por defecto, los webhooks click.created se envían con una ventana de agregación de 5 segundos (entrega por lotes, hasta 100 eventos por carga útil). Si necesita una entrega por clic en tiempo real (por ejemplo, para alimentar un procesador de flujo), active el modo raw-click en el punto final; tenga en cuenta que esto puede producir miles de solicitudes por minuto para espacios de trabajo con mucho tráfico y solo debe activarse para puntos finales que puedan manejar tal caudal.

Verificación de firmas
02

Cada solicitud se firma con HMAC-SHA256 — verifique el encabezado X-Elido-Signature antes de procesarla

Elido firma cada cuerpo de solicitud de webhook con HMAC-SHA256 utilizando el secreto compartido configurado en el punto final. La firma se incluye en el encabezado X-Elido-Signature como 'sha256=<hex_digest>'. Para verificar: calcule el HMAC-SHA256 sobre el cuerpo bruto de la solicitud utilizando el secreto compartido y compare el resultado con el valor del encabezado mediante una función de comparación de tiempo constante (para evitar ataques de tiempo). Nunca procese una carga útil de webhook antes de verificar la firma. El secreto se muestra una sola vez al crear el punto final; rótelo en el panel de control con una ventana de solapamiento de tiempo de inactividad cero (el secreto antiguo sigue siendo válido durante 15 minutos después de generar uno nuevo). Encontrará ejemplos de código para la verificación de firmas en Node.js, Python y Go en la guía de webhooks en /docs/guides/webhooks.

Comportamiento de reintento
03

Reintentos automáticos con retroceso exponencial — hasta 72 horas antes de marcar una entrega como fallida

Si un punto final devuelve un código de estado que no es 2xx o se agota el tiempo de espera (tiempo de respuesta de 30 segundos), Elido reintenta la entrega con un retroceso exponencial: 30 segundos, 2 minutos, 10 minutos, 30 minutos, 2 horas, 8 horas, 24 horas, 48 horas. Tras la ventana de 72 horas, la entrega se marca como permanentemente fallida y se elimina de la cola de reintentos. Las entregas fallidas aparecen en el registro de entregas de webhooks con el código de estado HTTP final (o 'timeout'). Puede reenviar cualquier entrega fallida desde el panel de control o la API (POST /v1/webhooks/deliveries/:id/replay), lo cual es útil para recuperar un lote de eventos tras una interrupción en el sistema de destino. Los puntos finales que devuelven 5xx durante más de 30 entregas consecutivas se pausan automáticamente y se notifica al administrador del espacio de trabajo por correo electrónico. Reanude el punto final desde el panel de control una vez solucionado el problema subyacente.

Modo SIEM
04

El modo SIEM transmite eventos de auditoría del espacio de trabajo a Splunk, Datadog o cualquier punto final de ingestión de registros HTTPS

El modo SIEM es una configuración especial de webhook para el reenvío de eventos de seguridad. En lugar de eventos de aplicación (clics, conversiones), el modo SIEM entrega eventos de auditoría del espacio de trabajo: inicios de sesión SSO, inicios de sesión fallidos, creación/rotación/eliminación de claves API, eventos de aprovisionamiento SCIM, cambios de rol, rotaciones de secretos de webhooks y acciones de administración (eliminación de enlaces, exportaciones masivas). El formato de la carga útil es JSON estructurado con un esquema estándar (marca de tiempo, actor, acción, objetivo, workspace_id, ip_address, user_agent) diseñado para su ingestión en plataformas SIEM comunes. Los webhooks SIEM tienen entrega garantizada con reintento de hasta 7 días y se firman por separado de los webhooks de aplicación. Integraciones probadas: Splunk HTTP Event Collector (HEC), Datadog Logs API, entrada HTTP de Elastic Logstash y cualquier punto final de registro HTTPS genérico. El modo SIEM es una función exclusiva de Business.

Registro de entrega
05

Registro de entrega completo con cuerpo de solicitud, código de respuesta y reenvío con un solo clic para entregas fallidas

Se registra cada intento de entrega de webhook: ID del evento, tipo de evento, URL del punto final, marca de tiempo de la entrega, código de estado HTTP, cuerpo de la respuesta (hasta 4 KB) y latencia. El registro de entregas se puede consultar por tipo de evento, punto final, rango de fechas y estado (entregado, reintentando, fallido). Las entregas fallidas incluyen el cuerpo completo de la solicitud para que pueda inspeccionar el evento que falló sin necesidad de reenviarlo. Reenvío: POST /v1/webhooks/deliveries/:id/replay envía la carga útil original (no un evento nuevo) al punto final; se requiere idempotencia en su receptor. La retención del registro de entregas es de 30 días en Pro y 90 días en Business. Para una auditoría permanente de los eventos de webhook, configure un punto final SIEM o active la exportación programada del registro de auditoría.

Equipos de ingeniería que utilizan los webhooks de Elido en producción

Los nombres son marcadores de posición — los casos de estudio de clientes reales se publicarán aquí a medida que se lancen.

Consumimos webhooks click.created en modo por lotes para alimentar nuestro propio flujo de análisis. La verificación de la firma HMAC y el registro de entregas con reenvío nos ahorraron horas de depuración durante una interrupción parcial: reenviamos el lote de eventos perdidos desde el panel de control sin tener que reconstruir el evento desde el origen.

I
Ingeniería de plataformas, SaaS B2B, Ámsterdam
Ingeniero Senior de Plataformas

El modo SIEM que transmite eventos de auditoría del espacio de trabajo a nuestro Splunk HEC era la característica empresarial que nuestro equipo de InfoSec requería. Tener los eventos de inicio de sesión SSO y las rotaciones de claves API en Splunk, con el esquema correcto, nos permitió correlacionar los eventos de acceso de Elido con nuestras reglas de alerta SIEM en un solo día tras la configuración.

I
Ingeniería de seguridad, fintech, Fráncfort
Ingeniero de Seguridad de la Información

Los webhooks link.expired activan nuestro flujo de trabajo interno para actualizar la base de datos de materiales impresos: cuando caduca un enlace de código QR, nuestro equipo de operaciones recibe una tarea automática para actualizar la etiqueta física. Cero monitorización manual de los estados de caducidad de los enlaces.

I
Ingeniería de integración, SaaS de logística, Riga
Ingeniero de Integración

Webhooks de Elido vs Bitly vs Short.io

Ni Bitly ni Short.io ofrecen webhooks de salida con firma HMAC y garantías de reintento. Esta comparación es sincera sobre la diferencia.

FeatureElidoBitlyShort.io
Webhooks de salidaSí — puntos finales por espacio de trabajo, suscripción por tipo de eventoNo disponibleSí — webhook básico al hacer clic
Firma HMAC-SHA256Sí — cada entrega firmada, ejemplos de código incluidosNo aplicableParcial — encabezado de firma presente, no documentado
Reintentos automáticosSí — retroceso exponencial, ventana de 72 horasNo aplicableSin reintentos — enviar y olvidar
Registro de entrega con reenvíoSí — 30 días Pro, 90 días Business, reenvío con un clicNo aplicableSin registro de entregas
Modo de eventos de auditoría SIEMSí — Business, JSON estructurado para ingestión SIEMNo disponibleNo disponible
Pausa automática del punto final por falloSí — pausado tras 30 fallos consecutivos, administrador notificadoNo aplicableNo disponible
Tipos de eventosClic, conversión, ciclo de vida del enlace, dominio, eventos de auditoríaNo aplicableSolo clics

Preguntas sobre webhooks

¿Cómo verifico la firma HMAC-SHA256?

Lea el cuerpo bruto de la solicitud como bytes (antes de cualquier procesamiento JSON), calcule el HMAC-SHA256 sobre los bytes brutos utilizando el secreto compartido de su punto final, codifique el resultado en base16 (hexadecimal) y compárelo con el valor del encabezado X-Elido-Signature tras quitar el prefijo 'sha256='. Utilice una función de comparación de tiempo constante (por ejemplo, hmac.compare_digest en Python, crypto.timingSafeEqual en Node.js) para evitar ataques de tiempo. Nunca compare la firma con un operador de igualdad de cadenas estándar. Encontrará ejemplos de código para Node.js, Python y Go en /docs/guides/webhooks#verification.

¿Qué debe devolver mi receptor de webhooks?

Devuelva HTTP 200 (o cualquier código de estado 2xx) en un plazo de 30 segundos. El cuerpo de la respuesta se ignora; puede devolver un cuerpo vacío o { ok: true }. Si su procesamiento tarda más de 30 segundos, devuelva 200 inmediatamente y procese el evento de forma asíncrona (añádalo a una cola interna, devuelva 200 y procéselo fuera de la ruta de la solicitud). Devolver 4xx se trata igual que 5xx a efectos de reintento: ambos activan un reintento. Devuelva 200 incluso si el evento no es relevante para su integración (por ejemplo, un evento link.created que no necesita) para evitar reintentos innecesarios.

¿Cómo funciona la idempotencia para los eventos de webhook?

Cada carga útil de webhook incluye un campo event_id (UUID). Utilice este campo como clave de idempotencia en su receptor: si recibe el mismo event_id dos veces (debido a un reintento tras un fallo parcial), procéselo solo una vez. Almacene los ID de los eventos recibidos en una tabla de deduplicación con un TTL de al menos 72 horas (la ventana de reintento). La carga útil del reintento es idéntica a la original —mismo event_id, mismo cuerpo—, por lo que una simple comprobación de '¿ya he visto este event_id?' es suficiente.

¿Por qué se ha pausado mi punto final automáticamente?

Los puntos finales se pausan automáticamente tras 30 fallos de entrega consecutivos (no 2xx o tiempo de espera agotado). Esto evita que Elido sature un punto final defectuoso indefinidamente. Corrija el problema subyacente (normalmente: la URL del punto final cambió, el servidor está caído o se supera el tiempo de espera de 30 segundos debido a un procesamiento lento) y luego reanude el punto final en el panel de control. Una vez reanudado, Elido no reenvía automáticamente los eventos que se omitieron durante la pausa; reenvíelos manualmente desde el registro de entregas si necesita recuperar esos eventos.

¿Puedo recibir eventos de clic en tiempo real por cada clic individual?

Sí, active el modo raw-click en el punto final. En este modo, Elido entrega los eventos click.created individualmente, sin ventana de agregación, en los 2 segundos siguientes al clic. Tenga en cuenta que un espacio de trabajo con mucho tráfico puede generar miles de eventos por minuto en modo raw-click; asegúrese de que su receptor pueda manejar ese volumen. Para la mayoría de los casos de uso analítico, la agregación predeterminada de 5 segundos (hasta 100 clics por carga útil) es suficiente y genera muchas menos solicitudes HTTP.

¿Cuál es el límite de tamaño de la carga útil para los eventos de webhook?

Las cargas útiles de eventos individuales son inferiores a 10 KB. Las cargas útiles de clics por lotes (modo predeterminado) pueden contener hasta 100 eventos por lote, con un límite máximo de tamaño de carga útil de 100 KB. Si un lote supera los 100 KB, se divide automáticamente en varias entregas. Los campos de metadatos de gran tamaño en los clics (por ejemplo, URLs de remitente largas) se truncan a 2 KB por campo. Si su receptor impone un límite estricto al tamaño de la carga útil, configure el modo raw-click (un evento por entrega) en lugar del modo por lotes.

¿Hay alguna forma de probar los webhooks localmente durante el desarrollo?

Utilice una herramienta como ngrok, Cloudflare Tunnel o localtunnel para exponer su servidor local con una URL HTTPS pública y, a continuación, registre esa URL como un punto final de webhook en su espacio de trabajo de prueba. Alternativamente, utilice el botón de prueba de envío de webhooks en el panel de control para enviar una carga útil de muestra de cualquier tipo de evento a un punto final registrado sin activar un evento real. La Elido CLI (elido webhook test --event click.created --endpoint https://...) también funciona para pruebas locales mediante scripts.

¿Qué ocurre con los eventos de webhook durante una ventana de mantenimiento planificada?

Los eventos generados durante una ventana de mantenimiento se ponen en cola en Redpanda y se entregan una vez finalizado el mantenimiento. La página de estado de Elido (status.elido.app) anuncia las ventanas de mantenimiento planificadas con antelación. El SLA de entrega de webhooks excluye las ventanas de mantenimiento anunciadas. Para una ventana de mantenimiento típica de 30 a 60 minutos, el margen de reintento de 72 horas garantiza que no se pierda ningún evento de forma permanente: se entregarán en el orden en que se generaron una vez que el punto final sea alcanzable de nuevo.

¿Listo para probarlo?

Empieza con el plan gratuito, actualiza cuando necesites un dominio personalizado.

Webhooks — Eventos en tiempo real, entregados de forma fiable. · Elido