Una tienda online necesita saber cuándo se ha completado un pago. Un CRM necesita saber cuándo llega una nueva solicitud desde la web. Hay dos formas básicas de que un sistema se entere de lo que ocurre en otro: preguntar con regularidad o recibir un aviso.
Polling: preguntar con regularidad
Con el polling, tu sistema pregunta al otro cada pocos minutos: «¿Hay algo nuevo?». Es sencillo de construir y funciona con casi cualquier servicio que tenga API. Los inconvenientes son el retraso -te enteras del evento solo en la siguiente comprobación- y el desperdicio: la mayoría de las peticiones no devuelven nada, pero igualmente consumen límites y recursos.
Webhooks: recibir un aviso
Con un webhook, el otro sistema envía un mensaje a tu dirección en cuanto ocurre algo. La información llega casi al instante y no hay peticiones vacías. El precio es la responsabilidad: tu punto de entrada debe estar disponible, comprobar que el mensaje viene realmente del socio y procesarlo bien aunque el mismo mensaje llegue dos veces.
Cómo hacer fiables los webhooks
Comprueba la firma o el secreto que el proveedor adjunta a cada mensaje, para que nadie pueda enviarte eventos falsos. Responde rápido y haz el procesamiento pesado en segundo plano; si no, el proveedor puede dar la entrega por fallida y repetirla. Guarda un identificador de cada evento procesado e ignora los duplicados. Mantén un registro de los mensajes recibidos para poder investigar los problemas.
La combinación práctica
En la práctica, las integraciones más sólidas combinan ambos enfoques. Los webhooks entregan los eventos en tiempo real y una comprobación periódica -por ejemplo, cada hora o cada noche- compara el estado en ambos lados y recupera lo que se perdió mientras se actualizaba tu servidor o el proveedor tenía una caída.
En resumen
El polling es sencillo, pero más lento y derrochador; los webhooks son rápidos, pero requieren cuidado. Usa webhooks por velocidad, protégelos con firmas y control de duplicados y añade una conciliación periódica para que no se pierda ningún evento.