{"id":11036,"date":"2026-09-24T12:07:32","date_gmt":"2026-09-24T15:07:32","guid":{"rendered":"https:\/\/z-api.io\/blog\/?p=11036"},"modified":"2026-09-24T12:07:37","modified_gmt":"2026-09-24T15:07:37","slug":"como-usar-webhooks-de-whatsapp-para-crear-automatizaciones-en-tiempo-real-con-z-api","status":"publish","type":"post","link":"https:\/\/z-api.io\/blog\/es\/como-usar-webhooks-de-whatsapp-para-crear-automatizaciones-en-tiempo-real-con-z-api\/","title":{"rendered":"C\u00f3mo usar webhooks de WhatsApp para crear automatizaciones en tiempo real con Z-API"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Existe un recurso t\u00e9cnico que hace que cualquier automatizaci\u00f3n sea m\u00e1s inteligente y eficiente: <strong>los webhooks de WhatsApp<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En la pr\u00e1ctica, los webhooks son los que permiten que tu sistema sepa, en tiempo real, que ha llegado un nuevo mensaje. Sin ellos, tu integraci\u00f3n queda pr\u00e1cticamente a ciegas: <strong>no sabe cu\u00e1ndo escribi\u00f3 el cliente, no puede responder autom\u00e1ticamente y tampoco puede activar flujos que dependen de la interacci\u00f3n del usuario<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un webhook es un mecanismo utilizado en internet para que una aplicaci\u00f3n se comunique con otra y env\u00ede datos en tiempo real cada vez que ocurre un evento determinado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De esta manera, ambos sistemas pueden intercambiar informaci\u00f3n sin necesidad de que exista una acci\u00f3n externa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cada vez que el n\u00famero conectado recibe o genera una interacci\u00f3n, <strong>Z-API realiza una solicitud POST a una URL configurada previamente, con un cuerpo JSON espec\u00edfico para cada tipo de evento<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este art\u00edculo, veremos con m\u00e1s detalle c\u00f3mo funcionan los webhooks de Z-API, cu\u00e1les est\u00e1n disponibles, c\u00f3mo configurar cada uno y c\u00f3mo utilizarlos para construir automatizaciones confiables en tiempo real.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 son los webhooks de WhatsApp y qu\u00e9 funci\u00f3n cumplen en las automatizaciones?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de entrar en los detalles t\u00e9cnicos, conviene reforzar el concepto principal: <strong>un webhook es una URL de tu servidor que Z-API llama autom\u00e1ticamente cada vez que ocurre un evento en la instancia<\/strong>.<\/p><div class=\"advads-blog-ads-no-post advads-entity-placement\" style=\"text-align: center;\" id=\"advads-4134816098\"><div id=\"advads-1111378887\"><a href=\"https:\/\/hubs.li\/Q04pCy0Y0\" target=\"_blank\" aria-label=\"Banner_001\"><img src=\"https:\/\/z-api.io\/blog\/wp-content\/uploads\/2026\/06\/Banner_001.jpg\" alt=\"\"  srcset=\"https:\/\/z-api.io\/blog\/wp-content\/uploads\/2026\/06\/Banner_001.jpg 1200w, https:\/\/z-api.io\/blog\/wp-content\/uploads\/2026\/06\/Banner_001-300x88.jpg 300w, https:\/\/z-api.io\/blog\/wp-content\/uploads\/2026\/06\/Banner_001-1024x299.jpg 1024w, https:\/\/z-api.io\/blog\/wp-content\/uploads\/2026\/06\/Banner_001-768x224.jpg 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" width=\"1200\" height=\"350\"   \/><\/a><\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando se recibe un mensaje, cuando un mensaje enviado es entregado, cuando la instancia se desconecta o cuando cambia el estado de un chat, Z-API env\u00eda un payload HTTP POST a la URL que configuraste con todos los detalles del evento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La diferencia entre polling y webhook es fundamental para entender por qu\u00e9 los webhooks son el modelo adecuado para automatizaciones de WhatsApp:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Polling:<\/strong> ocurre cuando tu sistema consulta peri\u00f3dicamente la API preguntando: \u201c\u00bfhay alg\u00fan mensaje nuevo?\u201d. Cada 5, 10 o 30 segundos se realiza una solicitud. La mayor\u00eda no devuelve novedades y, cuando finalmente llega un mensaje, el sistema solo lo detecta en la siguiente consulta. Esto genera retrasos en la respuesta, consumo innecesario de recursos y problemas de escalabilidad en operaciones con muchas instancias.<\/li>\n\n\n\n<li><strong>Webhook:<\/strong> invierte esta l\u00f3gica. Tu sistema no necesita preguntar. Z-API lo notifica en el momento exacto en que ocurre el evento, sin necesidad de consultas repetitivas y sin depender de cu\u00e1ntas instancias est\u00e9n activas.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Para automatizaciones que necesitan responder en tiempo real, como atenci\u00f3n al cliente, calificaci\u00f3n de leads y notificaciones bidireccionales, esta diferencia puede determinar si una integraci\u00f3n funciona de manera fluida o genera frustraci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un punto importante de la documentaci\u00f3n oficial: <strong>no es necesario configurar todos los webhooks. Sin embargo, cuanto mayor sea el control sobre tu instancia, m\u00e1s recursos podr\u00e1s aprovechar y m\u00e1s valor podr\u00e1s construir con Z-API<\/strong>. Configura los que tengan sentido para tu caso de uso y ampl\u00eda la estructura a medida que evoluciona la operaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Los webhooks disponibles en Z-API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La documentaci\u00f3n de Z-API organiza los webhooks de WhatsApp en cuatro tipos principales, cada uno con una funci\u00f3n espec\u00edfica:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Delivery (Al enviar)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El webhook de delivery informa que tu mensaje fue entregado a WhatsApp. Importante: <strong>esto no significa necesariamente que el contacto lo haya recibido. Para obtener informaci\u00f3n sobre recepci\u00f3n y lectura, es necesario monitorear el webhook de status<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El endpoint para configurar este webhook es:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>PUT https:\/\/api.z-api.io\/instances\/{instanceId}\/token\/{token}\/update-webhook-delivery<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El payload de retorno incluye los siguientes campos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>phone:<\/strong> n\u00famero de tel\u00e9fono de destino del mensaje<\/li>\n\n\n\n<li><strong>zaapId:<\/strong> identificador del mensaje dentro de la conversaci\u00f3n<\/li>\n\n\n\n<li><strong>messageId:<\/strong> identificador del mensaje en WhatsApp<\/li>\n\n\n\n<li><strong>instanceId:<\/strong> identificador de la instancia<\/li>\n\n\n\n<li><strong>momment:<\/strong> timestamp en milisegundos del momento en que se gener\u00f3 el evento<\/li>\n\n\n\n<li><strong>type:<\/strong> tipo del evento, en este caso <code>DeliveryCallback<\/code><\/li>\n\n\n\n<li><strong>error:<\/strong> aparece solo en casos de error y contiene la descripci\u00f3n del problema ocurrido durante el env\u00edo<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ejemplo de retorno exitoso:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"phone\": \"554499999999\",\n  \"zaapId\": \"A20DA9C0183A2D35A260F53F5D2B9244\",\n  \"messageId\": \"A20DA9C0183A2D35A260F53F5D2B9244\",\n  \"instanceId\": \"instance.id\",\n  \"momment\": 1777494009341,\n  \"type\": \"DeliveryCallback\"\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este webhook es especialmente \u00fatil para sistemas que necesitan confirmar que el mensaje lleg\u00f3 a WhatsApp antes de activar el siguiente paso del flujo, como actualizar un estado en el CRM o iniciar una etapa posterior de la automatizaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para ver todos los ejemplos de retorno seg\u00fan cada situaci\u00f3n, incluidos escenarios de error, consulta la <a href=\"https:\/\/developer.z-api.io\/webhooks\/on-message-send-examples\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>p\u00e1gina de ejemplos de retorno de Al enviar<\/strong><\/a> en la documentaci\u00f3n oficial.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Receive (Al recibir)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este es el webhook m\u00e1s utilizado en automatizaciones. Se ejecuta cada vez que alguien interact\u00faa con el n\u00famero de WhatsApp conectado, es decir, cada vez que llega un mensaje.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El endpoint para configurarlo es:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>PUT https:\/\/api.z-api.io\/instances\/{instanceId}\/token\/{token}\/update-webhook-received<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un detalle importante de la documentaci\u00f3n: este webhook tambi\u00e9n puede ejecutarse cuando la instancia est\u00e1 configurada para notificar mensajes enviados por el propio n\u00famero conectado. Veremos esto m\u00e1s adelante en la secci\u00f3n sobre <code>update-notify-sent-by-me<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Otro punto relevante para quienes trabajan con archivos multimedia: <strong>los archivos como im\u00e1genes, documentos y audios permanecen disponibles durante 30 d\u00edas en el almacenamiento de Z-API<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s de ese per\u00edodo, los archivos se eliminan. Esto debe tenerse en cuenta en arquitecturas que dependen del procesamiento posterior de contenido multimedia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El webhook de recepci\u00f3n admite todos los tipos de mensajes de WhatsApp.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para consultar ejemplos de payload seg\u00fan el tipo de mensaje, incluidos texto, imagen, audio, documento, ubicaci\u00f3n, contacto, encuesta y botones, consulta la <a href=\"https:\/\/developer.z-api.io\/webhooks\/on-message-received-examples\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>p\u00e1gina de ejemplos de retorno de Al recibir<\/strong><\/a> en la documentaci\u00f3n oficial.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Status<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El webhook de status notifica todos los cambios de estado que atraviesa un mensaje: <strong>si fue recibido, le\u00eddo, respondido o eliminado<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un punto importante de la documentaci\u00f3n: <strong>un mismo mensaje puede pasar por varios estados e incluso recibir el mismo estado m\u00e1s de una vez, como puede ocurrir con \u201crespondido\u201d<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto significa que tu sistema debe estar preparado para recibir m\u00faltiples eventos de status para un mismo mensaje y tratarlos de acuerdo con la l\u00f3gica de negocio correcta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este webhook es fundamental para sistemas que necesitan saber si el cliente ley\u00f3 un mensaje antes de activar el siguiente paso, por ejemplo, enviar un follow-up autom\u00e1tico solo a quienes no lo han le\u00eddo o actualizar el CRM cuando el mensaje se confirme como le\u00eddo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Disconnected (Al desconectar)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este webhook se ejecuta cada vez que Z-API detecta alg\u00fan tipo de indisponibilidad en la comunicaci\u00f3n, ya sea entre el tel\u00e9fono y WhatsApp o entre el tel\u00e9fono y Z-API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En operaciones de producci\u00f3n, monitorear los eventos de desconexi\u00f3n es fundamental, <strong>porque una instancia desconectada sin ser detectada puede hacer que lleguen mensajes que no se procesan y que la operaci\u00f3n se detenga sin que nadie lo note<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con el webhook de desconexi\u00f3n configurado, tu sistema recibe la alerta inmediatamente y puede activar autom\u00e1ticamente un proceso de reconexi\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfC\u00f3mo configurar los webhooks en Z-API?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La documentaci\u00f3n de Z-API ofrece dos formas de configurar los webhooks:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Desde el panel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Accede al panel de administraci\u00f3n. En Instancias, haz clic en el icono de visualizaci\u00f3n de la instancia correspondiente y, en el men\u00fa de tres puntos, selecciona <strong>\u201ceditar\u201d<\/strong>. El campo de webhook aparecer\u00e1 en la pantalla de edici\u00f3n de la instancia.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mediante la API<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cada webhook tiene su propio endpoint de configuraci\u00f3n mediante PUT. Debes enviar la URL de tu sistema en el campo <code>value<\/code> del body de la solicitud.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un punto cr\u00edtico de la documentaci\u00f3n: <strong>Z-API no acepta webhooks que no utilicen HTTPS. Antes de configurar cualquier webhook, aseg\u00farate de que la URL de tu endpoint cuente con un certificado SSL v\u00e1lido<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Durante el desarrollo local, herramientas como ngrok pueden utilizarse para crear un t\u00fanel HTTPS temporal para realizar pruebas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Actualizar todos los webhooks de una sola vez<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para quienes quieren apuntar todos los webhooks a la misma URL de una forma m\u00e1s sencilla, Z-API ofrece un endpoint espec\u00edfico:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>PUT https:\/\/api.z-api.io\/instances\/{instanceId}\/token\/{token}\/update-all-webhooks<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El body acepta dos campos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"value\": \"https:\/\/direccion-de-tu-sistema.com\/instancia\/TU_INSTANCIA\/webhook\",\n  \"notifySentByMe\": true\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El campo <code>value<\/code> define la URL de todos los webhooks. El campo opcional <code>notifySentByMe<\/code> habilita las notificaciones de webhook para mensajes recibidos y enviados por el propio n\u00famero conectado, algo que veremos con m\u00e1s detalle en la siguiente secci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este endpoint es especialmente \u00fatil durante la configuraci\u00f3n inicial o <strong>cuando necesitas migrar todos los webhooks a una nueva URL sin tener que llamar a cada endpoint individualmente<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La funci\u00f3n notifySentByMe: qu\u00e9 es y cu\u00e1ndo utilizarla<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Esta configuraci\u00f3n merece especial atenci\u00f3n porque modifica el comportamiento predeterminado del webhook de recepci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por defecto, el webhook Al recibir solo notifica los mensajes que otras personas env\u00edan a tu n\u00famero. Cuando se habilita <code>notifySentByMe<\/code>, tambi\u00e9n empieza a notificar los mensajes enviados por el propio n\u00famero conectado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El endpoint para configurar esta funci\u00f3n de forma individual es:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>PUT https:\/\/api.z-api.io\/instances\/{id}\/token\/{token}\/update-notify-sent-by-me<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con el siguiente body:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"notifySentByMe\": true\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Una advertencia importante de la documentaci\u00f3n: para que esta funci\u00f3n opere correctamente, debe existir un webhook configurado para el evento Al recibir. De lo contrario, no habr\u00e1 un endpoint al que entregar esas notificaciones.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfCu\u00e1ndo tiene sentido utilizar esta funci\u00f3n?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En sistemas de atenci\u00f3n multiagente, donde distintos agentes env\u00edan mensajes desde el mismo n\u00famero, habilitar <code>notifySentByMe<\/code> permite que el sistema registre todos los mensajes enviados, independientemente de qui\u00e9n los haya enviado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Esto garantiza que el historial de conversaciones en el CRM est\u00e9 completo, incluyendo los mensajes enviados por la empresa al cliente<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En arquitecturas de auditor\u00eda, donde es necesario registrar toda la comunicaci\u00f3n que pasa por el n\u00famero, esta funcionalidad ayuda a garantizar que ning\u00fan mensaje quede fuera del log.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En sistemas de sincronizaci\u00f3n entre m\u00faltiples dispositivos, <code>notifySentByMe<\/code> permite que el sistema sepa qu\u00e9 se envi\u00f3 en cada sesi\u00f3n y mantenga un estado consistente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consulta tambi\u00e9n: <a href=\"https:\/\/z-api.io\/blog\/es\/como-integrar-una-api-de-whatsapp-con-tu-crm-una-estrategia-validada\/\" target=\"_blank\" rel=\"noreferrer noopener\">C\u00f3mo integrar una API de WhatsApp con tu CRM.<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3mo configurar el webhook de recepci\u00f3n: paso a paso<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Este es el flujo completo para poner en funcionamiento el webhook de recepci\u00f3n en producci\u00f3n:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Crear el endpoint en tu sistema<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tu servidor debe exponer una URL HTTPS que acepte solicitudes POST. Este endpoint recibe los payloads de Z-API y debe devolver un status 200 para confirmar la recepci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Configurar la URL en Z-API<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Realiza una solicitud PUT al endpoint de configuraci\u00f3n con la URL de tu sistema:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>PUT https:\/\/api.z-api.io\/instances\/{instanceId}\/token\/{token}\/update-webhook-received<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Body:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"value\": \"https:\/\/direccion-de-tu-sistema.com\/instancia\/TU_INSTANCIA\/receive\"\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Procesar el payload recibido<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando llega un mensaje al n\u00famero conectado, Z-API realiza una solicitud POST a la URL configurada con el payload del mensaje. Tu sistema extrae los campos relevantes, procesa el mensaje y ejecuta la l\u00f3gica de negocio correspondiente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Habilitar notifySentByMe si es necesario<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si tu caso de uso tambi\u00e9n necesita recibir notificaciones de los mensajes enviados por el propio n\u00famero, configura:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>PUT https:\/\/api.z-api.io\/instances\/{id}\/token\/{token}\/update-notify-sent-by-me<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Body:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"notifySentByMe\": true\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Casos de uso donde los webhooks marcan la diferencia<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Con los webhooks de WhatsApp configurados correctamente, estos son algunos de los casos de uso que se vuelven posibles en producci\u00f3n:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Atenci\u00f3n en tiempo real con un agente de IA<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El webhook de recepci\u00f3n es el disparador de cualquier automatizaci\u00f3n inteligente en WhatsApp. Cuando llega el mensaje, el payload se env\u00eda al sistema, el LLM procesa el contenido y la respuesta vuelve a enviarse mediante Z-API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sin un webhook de recepci\u00f3n confiable, el agente no puede operar en tiempo real<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Confirmaci\u00f3n de entrega y lectura en el CRM<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El webhook de delivery confirma que el mensaje lleg\u00f3 a WhatsApp. El webhook de status confirma cu\u00e1ndo fue recibido y le\u00eddo por el destinatario.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Al procesar ambos eventos, el CRM puede actualizar autom\u00e1ticamente el estado real de cada comunicaci\u00f3n sin intervenci\u00f3n manual<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Detecci\u00f3n y recuperaci\u00f3n autom\u00e1tica de desconexiones<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El webhook de desconexi\u00f3n permite que el sistema detecte inmediatamente cuando una instancia pierde la conexi\u00f3n y active de forma autom\u00e1tica el proceso de reconexi\u00f3n, minimizando el tiempo de inactividad de la operaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Historial completo de conversaciones<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Con <code>notifySentByMe<\/code> habilitado, el sistema registra tanto los mensajes recibidos como los enviados, construyendo un historial completo de cada conversaci\u00f3n que cualquier agente puede consultar desde el CRM.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Automatizaciones bidireccionales<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Se env\u00eda una notificaci\u00f3n al cliente mediante Z-API. Cuando el cliente responde, el webhook de recepci\u00f3n entrega esa respuesta al sistema. El sistema la procesa y activa autom\u00e1ticamente la siguiente etapa del flujo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Todo el ciclo ocurre sin intervenci\u00f3n humana.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Buenas pr\u00e1cticas para garantizar confiabilidad en producci\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Configurar los webhooks es solo el primer paso. Garantizar que funcionen de forma confiable en producci\u00f3n requiere algunas pr\u00e1cticas adicionales:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Responder 200 r\u00e1pidamente<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El endpoint debe devolver status 200 inmediatamente despu\u00e9s de recibir el payload.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si el procesamiento tarda m\u00e1s tiempo, env\u00eda el evento a una cola as\u00edncrona y devuelve el 200 antes de procesarlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Si el endpoint tarda demasiado en responder, Z-API puede interpretar la solicitud como un fallo<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gestionar duplicados con idempotencia<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En situaciones de inestabilidad de red, Z-API puede volver a enviar el mismo evento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Utiliza el identificador \u00fanico del mensaje presente en el payload para comprobar si el evento ya fue procesado antes de ejecutar cualquier acci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Procesar el mismo mensaje dos veces puede generar respuestas duplicadas para el cliente<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Utilizar siempre HTTPS<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La documentaci\u00f3n es clara: <strong>Z-API no acepta webhooks que no utilicen HTTPS<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aseg\u00farate de que tu endpoint tenga un certificado SSL v\u00e1lido antes de configurar cualquier webhook.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Monitorear la salud de los endpoints<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Configurar alertas para detectar cu\u00e1ndo los webhooks dejan de recibir eventos es fundamental para identificar fallos de configuraci\u00f3n o problemas de infraestructura antes de que afecten la operaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">No compartir ID ni token<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La documentaci\u00f3n de Z-API refuerza este punto: <strong>nunca compartas el ID ni el token de la instancia con terceros<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estas credenciales proporcionan acceso completo a la instancia y deben tratarse como informaci\u00f3n sensible.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Recursos de documentaci\u00f3n para profundizar<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para quienes quieren ir m\u00e1s all\u00e1 de lo b\u00e1sico, la documentaci\u00f3n oficial de Z-API incluye recursos adicionales para escenarios m\u00e1s avanzados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La <a href=\"https:\/\/developer.z-api.io\/webhooks\/on-message-send-examples\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>p\u00e1gina de ejemplos de retorno de Al enviar<\/strong><\/a> detalla los distintos escenarios posibles del webhook de delivery, incluidos los tipos de error que pueden aparecer en el campo <code>error<\/code> del payload.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La <a href=\"https:\/\/developer.z-api.io\/webhooks\/on-message-received-examples\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>p\u00e1gina de ejemplos de retorno de Al recibir<\/strong><\/a> incluye ejemplos de payload para todos los tipos de mensajes compatibles, como texto, imagen, audio, video, documento, ubicaci\u00f3n, contacto, encuesta, botones y m\u00e1s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La <a href=\"https:\/\/developer.z-api.io\/webhooks\/introduction\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>introducci\u00f3n a los webhooks<\/strong><\/a> ofrece una visi\u00f3n general completa de todos los tipos disponibles y las instrucciones de configuraci\u00f3n tanto desde el panel como mediante la API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El endpoint para <a href=\"https:\/\/developer.z-api.io\/webhooks\/update-every-webhooks\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>actualizar todos los webhooks<\/strong><\/a> resulta especialmente \u00fatil durante la configuraci\u00f3n inicial o en migraciones, cuando es necesario dirigir todos los webhooks a una nueva URL al mismo tiempo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configura tus webhooks en Z-API y construye tus automatizaciones<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Los webhooks de WhatsApp son la base t\u00e9cnica de cualquier automatizaci\u00f3n que necesita operar en tiempo real.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/z-api.io\/es\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Z-API<\/strong><\/a> ofrece un conjunto completo de webhooks que cubre los principales eventos de una operaci\u00f3n: <strong>recepci\u00f3n de mensajes, confirmaci\u00f3n de entrega, cambios de estado, desconexiones de la instancia y mensajes enviados por el propio n\u00famero conectado<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Configurar correctamente, utilizar HTTPS, responder 200 r\u00e1pidamente, gestionar duplicados y monitorear la salud de los endpoints son pr\u00e1cticas que convierten un webhook funcional en una infraestructura confiable a largo plazo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para quienes est\u00e1n construyendo automatizaciones con Z-API, la documentaci\u00f3n oficial contiene todo lo necesario para implementar cada webhook con precisi\u00f3n, desde los endpoints de configuraci\u00f3n hasta ejemplos completos de payload para cada tipo de evento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Consulta la documentaci\u00f3n de webhooks de Z-API y pru\u00e9balos en la pr\u00e1ctica.<\/strong> \ud83d\udc49 <a href=\"https:\/\/app.z-api.io\/app\/auth\/new-account\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Crea tu cuenta gratis<\/strong><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-right kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;right&quot;,&quot;id&quot;:&quot;11036&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;Avalie este post&quot;,&quot;legend&quot;:&quot;5\\\/5 - (1 voto)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;C\u00f3mo usar webhooks de WhatsApp para crear automatizaciones en tiempo real con Z-API&quot;,&quot;width&quot;:&quot;142.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 142.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            5\/5 - (1 voto)    <\/div>\n    <\/div>\n<div class=\"advads-banner-cta advads-entity-placement\" id=\"advads-672439558\"><div id=\"advads-3818815133\"><a href=\"https:\/\/hubs.li\/Q04pCy0Y0\" target=\"_blank\" aria-label=\"Banner_005\"><img src=\"https:\/\/z-api.io\/blog\/wp-content\/uploads\/2026\/06\/Banner_005.jpg\" alt=\"\"  srcset=\"https:\/\/z-api.io\/blog\/wp-content\/uploads\/2026\/06\/Banner_005.jpg 1200w, https:\/\/z-api.io\/blog\/wp-content\/uploads\/2026\/06\/Banner_005-300x88.jpg 300w, https:\/\/z-api.io\/blog\/wp-content\/uploads\/2026\/06\/Banner_005-1024x299.jpg 1024w, https:\/\/z-api.io\/blog\/wp-content\/uploads\/2026\/06\/Banner_005-768x224.jpg 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" width=\"1200\" height=\"350\"   \/><\/a><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Acceda y aprenda a usar los webhooks de WhatsApp para recibir respuestas en tiempo real a sus automatizaciones. Y vea c\u00f3mo usar Z-API para automatizarlo todo f\u00e1cilmente.<\/p>\n","protected":false},"author":16,"featured_media":11037,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[207],"tags":[],"class_list":["post-11036","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-api-de-whatsapp-es"],"_links":{"self":[{"href":"https:\/\/z-api.io\/blog\/es\/wp-json\/wp\/v2\/posts\/11036","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/z-api.io\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/z-api.io\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/z-api.io\/blog\/es\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/z-api.io\/blog\/es\/wp-json\/wp\/v2\/comments?post=11036"}],"version-history":[{"count":1,"href":"https:\/\/z-api.io\/blog\/es\/wp-json\/wp\/v2\/posts\/11036\/revisions"}],"predecessor-version":[{"id":11038,"href":"https:\/\/z-api.io\/blog\/es\/wp-json\/wp\/v2\/posts\/11036\/revisions\/11038"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/z-api.io\/blog\/es\/wp-json\/wp\/v2\/media\/11037"}],"wp:attachment":[{"href":"https:\/\/z-api.io\/blog\/es\/wp-json\/wp\/v2\/media?parent=11036"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/z-api.io\/blog\/es\/wp-json\/wp\/v2\/categories?post=11036"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/z-api.io\/blog\/es\/wp-json\/wp\/v2\/tags?post=11036"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}