Algunas herramientas son esenciales en tu caja de herramientas para el desarrollo web moderno. Hemos hablado sobre Websockets, API Gateway, o Cloud. Los webhooks son otro ejemplo, y son una de las soluciones ideales si estás buscando notificaciones en tiempo real, o la sincronización de datos.

¿Qué son webhooks?

Webhooks son mensajes automatizados enviados mediante un protocolo web, desde un aplicación cuando “algo” acontece. Sería algo parecido a las notificaciones SMS que tu banco te envía cuando compras algo.

¿Cómo funciona un webhook?

Un webhook funciona de una forma muy sencilla: se trata de una aplicación, o sitio web de terceros - el proveedor de webhook - que envía una señal cuando ocurre un evento específico, y un listener - una URL - que recibe los webhooks y realiza una acción predefinida.

Técnicamente,  los webhooks son llamadas de retorno HTTP que se desencadenan por un evento específico. Si ocurre un evento en tu sitio web, el webhook ve el evento, recoge los datos y los envía a la URL que hayas especificado.

Ejemplo del funcionamiento de un Webhook.

¿Qué diferencia hay entre los Webhooks y las llamadas a la API?

Mientras las llamadas a la API funcionan con mecanismos de salida basados en peticiones, los Webhooks funcionan con mecanismos de salida basados en eventos. Por lo tanto, los webhooks se parecen a las APIs, pero son más sencillos, ya que con una API tú debes hacer todo el trabajo y tener formas de ejecutar peticiones desde una aplicación a otra.

El objetivo de los webhooks es automatizar procesos sin que tengas que intervenir manualmente. Así puedes, incluso, utilizar un sistema externo para notificar tu sistema sobre algún evento, o actualización. Otro ejemplo de aplicación sería cuando tu proveedor de servicios de pago informa a tu e-commerce sobre el estado de un pago.

“Un evento se puede definir como ‘un cambio significativo en un estado’”

¿Por qué utilizar un webhook?

Como hemos visto anteriormente, el método webhook puede ser una herramienta ideal para “transacciones entre bastidores” si necesitas :

  • Saber si ha pasado algo (si ha ocurrido algún evento)
  • Asegurar que los datos están sincronizados en todas tus aplicaciones web
  • Actualizar las funcionalidades de la aplicación según las necesidades
  • Conectar aplicaciones. Un evento en una aplicación dispararía un evento en otra aplicación

Como en la vida misma, tú no tienes que preguntarle a tu cerebro si tienes hambre,- ¿cierto? Los webhooks emulan este comportamiento, y pueden ser el centro de los sistemas de automatización de las notificaciones en tus proyectos web. ¡Es una forma en que las aplicaciones comuniquen entre sí automáticamente!

Desde mi punto de vista, son una herramienta muy poderosa porque todo se mantiene desacoplado. Un sistema no tiene que conocer la naturaleza de lo que debe ser ejecutado, y solamente necesita mantener un registro de la ruta para notificar.

¿Ejemplos de utilización en la vida real?

Si no has trabajado directamente con webhooks, es muy probable que los hayas visto en algún sitio, pues son utilizados por herramientas que conoces como Paypal, Stripe, Pipedrive, o las tres siguientes aplicaciones:

Netlify

Netlify - y no confundir con Netflix  :) - es una solución integral para el flujo de trabajo completo para techies. Netlify combina el despliegue global, la integración continua y HTTPS. Por eso te permite conectar de forma fácil con tus repositorios de Bitbucket o GitHub. Lo interesante para nuestro artículo es que además de numerosas características, Netlify soporta webhooks entrantes y salientes. Los webhooks entrantes notifican a los servidores de Netlify para que realicen alguna acción y los webhooks salientes hacen la petición a otro servicio para que este haga algo cuando un evento ocurre en tu sitio web. Puedes utilizar los webhooks entrantes para disparar nuevos despliegues si hay una actualización de contenido en tu CMS - por ejemplo Drupal -  y utilizar los webhooks y notificaciones de Netlify, para notificar cuando alguien envía un nuevo formulario desde tu aplicación.

Shopify

Shopify, la solución e-commerce, tiene un conjunto de webhooks que te informan siempre que un producto, o un carrito es actualizado, o si se ha realizado un pago. La idea es que siempre sepas sobre el estado de tus pedidos, o el estado del envío. Otras aplicaciones de los webhooks de Shopify son:

  • Hacer un pedido
  • Cambiar el precio de un producto
  • Recopilar datos para el almacenamiento de datos
  • Integrar con tu software de contabilidad
  • Mantener partes de tu e-commerce actualizadas, para que no tengas que hacerlo de forma manual.

Mailchimp

Mailchimp, la plataforma de marketing para pequeños negocios, utiliza los webhooks para los eventos tipo Suscripciones, Cancelación de suscripciones, o actualizaciones de perfil. Lo que hace la herramienta es recopilar información sobre los eventos en las listas (audiencias) mientras estos acontecen en Mailchimp. Posteriormente te notifican cuando se haya cambiado algún email para que lo puedas actualizar en tu CRM - por ejemplo Salesforce. Mailchimp también usa un webhook para registrar usuarios de tu sitio web en tu newsletter.

Conclusión

Creo que queda claro cuales son los beneficios de los webhooks: notificaciones en tiempo real,  eficiencia, y poder para escalar tus aplicaciones. Es por eso que creo que los webhooks deben estar en tu caja de herramientas para el desarrollo web. Me imagino que ya estarás pensando en aplicaciones para este método. Como siempre, es necesario conocer bien sus implicaciones en todo el ciclo de desarrollo del producto y saber decidir si vale realmente la pena invertir en webhooks, o si una API  “típica” es suficiente para aquella acción específica de tu aplicación. Otro elemento a tener en cuenta es la autenticación. La validación no es obligatoria, pero es buena práctica tener siempre presente la seguridad.

¿Crees que los webhooks son el próximo paso en la evolución de las comunicaciones en Internet? ¿Son realmente esenciales para el desarrollo web moderno? ¿Estás utilizando webhooks en tus proyectos? ¿Qué tal la experiencia?

Fotografía: Chris Delgado en Pixabay

Fuentes: