Entrega de webhooks salientes
«Deberíamos ofrecer webhooks».
Parece limitarse a un solo endpoint. En realidad es toda esta lista, junto con esa otra mitad de la que nadie se acuerda hasta que un cliente pregunta por qué nunca le llegó un evento del martes pasado.
- Firma HMAC con un esquema que los destinatarios ya conocen
- Una marca de tiempo y un identificador de entrega en la firma, o de lo contrario se expone a ataques de reproducción
- Reintentos exponenciales que siguen funcionando aunque el servidor de destino pase todo el día caído
- Variación aleatoria (jitter), o de lo contrario cada entrega acumulada saturará al receptor al recuperarse
- Saber con precisión qué fallos vale la pena reintentar y cuáles no
- Rotación de secretos con periodo de solapamiento, porque nadie puede cambiar en un solo instante
- Un registro de solo adición (append-only) de cada intento y respuesta
- Una vía para que tus clientes consulten ese registro sin tener que enviarte un correo de soporte
HookPulse es todo eso, detrás de un solo POST.
Sin tarjeta. 2.000 entregas durante la prueba.
Una sola solicitud de entrada. Nosotros nos encargamos de todo lo demás.
Tu controlador responde de inmediato: un webhook nunca debería hacer esperar a tu propia solicitud por la lentitud del servidor de un tercero. A partir de ahí pasa a ser problema nuestro: firmado, entregado, reintentado y registrado.
Ver el fragmento de verificaciónawait fetch('https://hookpulse.altixcode.com/api/v1/apps/APP_ID/events', {
method: 'POST',
headers: { Authorization: 'Bearer hp_…' },
body: JSON.stringify({
type: 'invoice.paid',
payload: { id: 'in_123', amount: 4900 },
dedupeKey: 'invoice-123-paid',
}),
})¿Por qué no construirlo tú mismo?
La mayoría de los equipos empiezan a intentarlo. La firma y el primer reintento son trabajo de un día. El resto —el jitter, las ventanas de reproducción, el solapamiento en la rotación y un registro visible para el cliente— es la parte que se descarta por falta de tiempo, y precisamente la que tus clientes terminan echando en falta.
La lista completa, no solo la primera mitad
Casi cualquier equipo construye la firma y un reintento en una sola tarde. El jitter, las reglas para saber si conviene reintentar, el solapamiento de rotación y un registro comprensible para el cliente son justo lo que se recorta ante las fechas límite... y lo primero que el cliente echa en falta cuando no está.
La URL de tu endpoint se vuelve a validar antes de cada intento, no solo al guardarse
Un nombre de host que resuelve hacia tu propia red privada se rechaza al momento de guardarse y se rechaza de nuevo, según su dirección resuelta, inmediatamente antes de cada intento de entrega. Además, jamás se sigue una redirección a un host que no hayas especificado. Un emisor de webhooks que solo comprueba una vez es una puerta abierta para que el endpoint mal configurado o malicioso de un cliente sondee tu infraestructura.
Un registro visible para tus clientes, no solo para ti
El registro de entregas se ofrece hoy mismo como una API acotada, firmada y con límite de tiempo, pensada para integrarse directamente en tu propia página de configuración. Así, la duda de «¿por qué no llegó mi webhook?» deja de ser un ticket de soporte que debas responder manualmente.
El calendario de reintentos, transparente y sin sorpresas.
Seis intentos distribuidos a lo largo de más de siete horas, cada uno con variación aleatoria para que el receptor no se vea saturado de golpe al volver a estar activo. Después nos detenemos y te avisamos: una entrega que lleva fallando todo el día necesita la atención de una persona, no otra solicitud más.
- inmediatamente
- +15sintento 2
- +2mintento 3
- +15mintento 4
- +1hintento 5
- +6hintento 6
Precios por entrega.
Un evento distribuido a cinco endpoints equivale a cinco entregas, ya que son cinco solicitudes que realizamos y cinco conjuntos de reintentos de los que somos responsables. Los reintentos de una misma entrega no se vuelven a contabilizar.
Scale
A marketplace, or an API with real traffic.
$149/ mes
1,000,000 deliveries / month
Empieza con Scale