Webhooks: recibir eventos sin duplicar acciones

En resumen

Un webhook notifica un evento por HTTP. No garantiza universalmente entrega inmediata, orden ni efectos de negocio exactamente una vez.

Pasillo seguro de servidores y redes sin personal Ilustración · escena ficticia
En este artículo

Separar recepción y procesamiento terminado

Las garantías dependen del proveedor. Stripe documenta posibles duplicados y ausencia de orden garantizado. Una respuesta HTTP de éxito debe corresponder a recepción duradera o al procesamiento previsto, no solo a la llegada a memoria.

SituaciónComportamiento esperadoEvidencia útil
Mismo evento recibido dos vecesEvitar repetir el efecto de negocio.ID procesado y resultado persistente.
Evento antiguo llega despuésNo sobrescribir ciegamente un estado reciente.Estado oficial y regla de transición.
Procesamiento pesadoRecepción duradera y trabajo diferido.Estado de cola y resultado del trabajador.
Entrega ausenteConciliar y recuperar según el proveedor.Diferencia identificada y corrección comprobada.

Construir una recepción verificable

  • Compruebe HTTPS, firma y protección contra repetición según el protocolo. Stripe verifica la firma sobre el cuerpo original; transformar JSON antes puede invalidarla.
  • Registre de forma duradera el evento o su procesamiento antes del acuse apropiado. Distinga ID de entrega, ID de evento y clave de idempotencia de la acción.
  • Pruebe duplicados, desorden, interrupción y reinicio del trabajador. Consulte el estado oficial del objeto si un evento antiguo no permite decidir con seguridad.

Organizar recuperación y conciliación

Documente intentos, plazos, eventos pendientes y conciliación con el proveedor. Un acuse rápido puede ocultar un fallo posterior. Supervise también la acción final y limite secretos y datos personales en registros.

Fuentes primarias

Gestionar los webhooks repetidos de forma segura.

Una notificación puede repetirse tras un tiempo de espera o una respuesta perdida. La fiabilidad depende de la verificación del origen, un identificador de evento y un procesamiento que distinga un mensaje nuevo de uno duplicado.

  • Verificar cada solicitud mediante el mecanismo del proveedor.
  • Probar los reintentos, los duplicados y el orden de llegada modificado.
  • Confirmar de forma consistente tras el procesamiento o la puesta en cola persistente.

Fuente primaria: IETF RFC 9457 — Problem Details for HTTP APIs. Método relacionado: consultar la guía práctica.