Un webhook es una solicitud HTTP que un servicio envía a una URL que registras cada vez que ocurre un evento específico. Permite que tu sistema reciba datos a medida que suceden, en lugar de sondear una API llamándola una y otra vez para ver si hay algo nuevo disponible. En un pipeline de datos, eso significa que un trabajo puede reaccionar a un evento tan pronto como la fuente lo informe.

La plataforma de pagos Stripe, por ejemplo, envía eventos de webhook a tu endpoint a través de HTTPS como una carga útil JSON. Tu endpoint debe aceptar solicitudes POST y procesar los datos del evento que recibe.

Cómo Funciona la Entrega de Webhooks

La documentación de Stripe muestra la mecánica principal:

  • Registro: Registras una URL de endpoint. En modo en vivo, Stripe requiere una URL HTTPS accesible públicamente.
  • Reconocimiento rápido: El endpoint debe devolver un código de estado 2xx rápidamente, antes de cualquier lógica compleja que pueda causar un tiempo de espera.
  • Reintentos: Si la entrega falla, Stripe reintenta durante hasta tres días con retroceso exponencial en modo en vivo.
  • Orden: Stripe no garantiza que los eventos lleguen en el orden en que fueron creados.

Asegurando un Endpoint de Webhook

  • Verificar firmas: Stripe firma cada evento con un HMAC utilizando SHA-256 y coloca la firma en el encabezado Stripe-Signature.
  • Bloquear repeticiones: La carga útil firmada incluye una marca de tiempo, por lo que puedes rechazar eventos que sean demasiado antiguos.
  • Manejar duplicados: Un endpoint puede recibir el mismo evento más de una vez. Registra los IDs de eventos procesados y omite repeticiones.
  • Lista blanca de remitentes: Stripe envía webhooks desde una lista publicada de direcciones IP a las que puedes restringir tu firewall.

Usos Comunes de Webhooks

  • Código y despliegue: GitHub envía una carga útil HTTP POST a tu URL para los eventos del repositorio a los que te suscribes. Su documentación enumera usos como iniciar compilaciones de CI, actualizar un rastreador de problemas externo, refrescar un espejo de respaldo y desplegar en un servidor de producción.
  • Pagos: Los webhooks de Stripe te permiten responder a eventos asíncronos, como un banco confirmando un pago, un cliente disputando un cargo o un pago recurrente que tiene éxito.
  • Suscríbete solo a lo que necesitas: Stripe desaconseja escuchar eventos adicionales o todos los eventos porque ejerce una presión indebida sobre tu servidor.

Términos Relacionados