Definición: Mecanismo de callback HTTP que envía notificaciones en tiempo real cuando ocurren eventos específicos, permitiendo integraciones basadas en eventos sin necesidad de polling.
— Fuente: NERVICO, Consultoría de Desarrollo de Producto
Qué es un webhook
Un webhook es un mecanismo de comunicación HTTP en el que un servicio envía automáticamente una notificación a otro servicio cuando ocurre un evento específico. A diferencia del modelo tradicional donde un cliente consulta periódicamente si hay novedades (polling), con webhooks el servidor “empuja” la información al cliente en el momento en que se produce el evento. Se les conoce también como “reverse APIs” o “HTTP callbacks”.
Son el mecanismo estándar para integraciones en tiempo real entre servicios web modernos.
Cómo funcionan
El servicio receptor registra una URL de callback en el servicio emisor, especificando qué eventos le interesan. Cuando ocurre uno de esos eventos, el emisor construye un payload (generalmente JSON) con los datos del evento y envía una petición HTTP POST a la URL registrada. El receptor procesa la petición y devuelve un código de estado HTTP (200 para confirmar recepción).
Los sistemas de webhooks robustos implementan reintentos con backoff exponencial cuando el receptor no responde, firmas criptográficas (HMAC) para verificar la autenticidad del emisor, y mecanismos de replay para reenviar eventos perdidos.
Por qué importan
Los webhooks eliminan la necesidad de polling, que es ineficiente porque la mayoría de las consultas devuelven “sin novedades”. Con webhooks, el sistema receptor solo procesa información cuando realmente hay algo nuevo. Esto reduce el consumo de recursos, la latencia entre el evento y la reacción, y simplifica la arquitectura de integraciones.
Ejemplo práctico
Un sistema de e-commerce integra Stripe para pagos. En lugar de consultar la API de Stripe cada segundo para verificar si un pago se ha completado, configura un webhook en la URL https://api.example.com/webhooks/stripe. Cuando un cliente completa un pago, Stripe envía un POST con el evento payment_intent.succeeded que incluye el monto, la moneda y el identificador del pedido. El sistema recibe la notificación en tiempo real y activa el envío del producto. Si el servidor no responde, Stripe reintenta hasta 3 veces con intervalos crecientes.