Skip to main content
Los Webhooks permiten que Evolution Go envíe notificaciones en tiempo real a su aplicación cuando ocurren eventos en WhatsApp, como recepción de mensajes, actualizaciones de conexión, llamadas y más.

Guía Rápida

Siga estos pasos para configurar y recibir webhooks de Evolution Go.

Prerrequisitos

Antes de configurar webhooks, necesita:
  1. Tener Evolution Go instalado y ejecutándose — vea la guía de instalación
  2. Tener una instancia creada — vea Primeros Pasos
  3. Tener su API Key (GLOBAL_API_KEY configurada en .env)
  4. Tener una URL accesible para recibir los eventos
Para pruebas rápidas, use webhook.site para generar una URL temporal y visualizar los eventos recibidos en tiempo real. Para desarrollo local, use ngrok para exponer su servidor local a internet.

Paso 1: Conectar la instancia con webhook

Configure el webhook al conectar su instancia enviando una solicitud al endpoint de conexión.

Método

La API Key es el valor de la variable GLOBAL_API_KEY configurada en el archivo .env de Evolution Go. Nunca exponga esta clave públicamente. Vea más detalles en Primeros Pasos.

Body

Ejemplo con cURL

Ejemplo con JavaScript

Ejemplo con Python

Paso 2: Emparejar con WhatsApp

Después de la conexión, recibirá un evento QRCode en su webhook con la imagen del QR Code en base64:
  1. Abra WhatsApp en su celular
  2. Vaya a Configuración > Dispositivos vinculados > Vincular un dispositivo
  3. Escanee el QR Code recibido en su webhook (decodifique el campo qrcode base64 para mostrar la imagen)
Si prefiere usar Pairing Code en vez de QR Code, envíe el campo phone en el body:

Paso 3: Confirmar la conexión

Después del emparejamiento exitoso, recibirá una secuencia de eventos: PairSuccessConnectedOfflineSyncCompleted. Si recibió estos 3 eventos, su webhook está correctamente configurado.

Paso 4: Recibir mensajes

A partir de ahora, cada mensaje recibido en WhatsApp será enviado como evento Message a su URL.

Procesando en su servidor

Su endpoint debe responder con estado HTTP 2xx (200-299) en hasta 30 segundos. De lo contrario, Evolution Go realizará hasta 5 reintentos con un intervalo de 30 segundos entre cada uno.

Configuración Detallada

La configuración de webhooks se realiza al momento de conectar la instancia, a través del endpoint POST /instance/connect.

Webhook por Instancia

Al conectar una instancia, puede definir la URL del webhook y los eventos que desea recibir:
POST /instance/connect

Parámetros

Webhook Global

Puede definir un webhook global mediante variable de entorno. Recibirá eventos de todas las instancias, además de los webhooks individuales de cada instancia.
.env
Cuando están configurados, ambos webhooks se activan: el global (definido por WEBHOOK_URL) y el de la instancia (definido en webhookUrl). Esto permite tener un sistema centralizado de monitoreo junto con integraciones específicas por instancia.

Tipos de Eventos

Al configurar el webhook, puede suscribirse a los siguientes tipos de eventos:
Use "ALL" en la lista de subscribe para recibir todos los eventos sin necesidad de listar cada uno individualmente.

Estructura del Payload

Todos los webhooks se envían como solicitudes HTTP POST con Content-Type: application/json. La estructura base del payload es:

Payloads por Evento

QRCode

Emitido cuando se genera un nuevo QR Code para emparejamiento.

PairSuccess

Emitido cuando el emparejamiento del dispositivo se completa exitosamente.

Message

Emitido cuando se recibe un mensaje. El payload varía según el tipo de mensaje. Todos los eventos de mensaje comparten la misma estructura base en data, con el objeto Info conteniendo metadatos y Message conteniendo el contenido.

Campos comunes del objeto Info

Campos comunes adicionales

Text

Image

Cuando WEBHOOK_FILES=true (predeterminado), el campo base64 contiene la imagen codificada. Si MinIO/S3 está configurado, se agrega mediaUrl en vez de base64.

Video

Audio

Document

Cuando WEBHOOK_FILES=true (predeterminado), los mensajes con multimedia incluyen el contenido del archivo como base64 dentro del objeto Message. Si MinIO/S3 está configurado, el campo mediaUrl se agrega en vez de base64.

Receipt

Emitido para confirmaciones de lectura y entrega. El campo state en el nivel raíz indica el tipo: Read, ReadSelf o Delivered.

Connected

Emitido cuando la instancia se conecta exitosamente a WhatsApp.

LoggedOut

Emitido cuando la instancia se desconecta de WhatsApp.

OfflineSyncCompleted

Emitido cuando la sincronización offline de mensajes se completa tras la reconexión.

CallOffer

Emitido cuando se recibe una llamada.

CallRelayLatency

Emitido con información de latencia durante una llamada en curso.

CallTerminate

Emitido cuando una llamada es finalizada.

JoinedGroup

Emitido cuando la instancia entra en un grupo.

GroupInfo

Emitido cuando las informaciones de un grupo son actualizadas (nombre, descripción, participantes, etc.).

NewsletterJoin

Emitido cuando la instancia entra en un canal/newsletter.

Política de Reintentos

Evolution Go posee un sistema automático de reintentos para garantizar la entrega de los webhooks: Si los 5 intentos fallan, el evento se descarta y se registra un log de error.
Asegúrese de que su endpoint de webhook responda con estado HTTP 2xx (200-299) para confirmar la recepción. Cualquier respuesta fuera de ese rango será tratada como fallo y activará un nuevo intento.

Canales de Entrega Alternativos

Además de webhooks HTTP, Evolution Go soporta otros canales de entrega de eventos:

RabbitMQ / AMQP

Envío via colas AMQP. Configure con rabbitmqEnable: "enabled" en la conexión de la instancia y las variables AMQP_URL, AMQP_GLOBAL_ENABLED y AMQP_GLOBAL_EVENTS.

NATS

Envío via NATS messaging. Configure con natsEnable: "enabled" en la conexión y las variables NATS_URL, NATS_GLOBAL_ENABLED y NATS_GLOBAL_EVENTS.

WebSocket

Reciba eventos en tiempo real via WebSocket. Configure con websocketEnable: "enabled" en la conexión de la instancia.
Múltiples canales pueden activarse simultáneamente. Por ejemplo, puede recibir eventos via webhook HTTP y RabbitMQ al mismo tiempo.

Variables de Entorno

Todas las variables de entorno relacionadas con eventos y webhooks: