Skip to main content
Os Webhooks permitem que o Evolution Go envie notificações em tempo real para sua aplicação quando eventos ocorrem no WhatsApp, como recebimento de mensagens, atualizações de conexão, chamadas e muito mais.

Guia Rápido

Siga estes passos para configurar e receber webhooks do Evolution Go.

Pré-requisitos

Antes de configurar webhooks, você precisa:
  1. Ter o Evolution Go instalado e rodando — veja o guia de instalação
  2. Ter uma instância criada — veja Configuração Inicial
  3. Ter sua API Key (GLOBAL_API_KEY configurada no .env)
  4. Ter uma URL acessível para receber os eventos
Para testes rápidos, use o webhook.site para gerar uma URL temporária e visualizar os eventos recebidos em tempo real. Para desenvolvimento local, use o ngrok para expor seu servidor local à internet.

Passo 1: Conectar a instância com webhook

Configure o webhook ao conectar sua instância enviando uma requisição para o endpoint de conexão.

Método

A API Key é o valor da variável GLOBAL_API_KEY configurada no arquivo .env do Evolution Go. Nunca exponha essa chave publicamente. Veja mais detalhes em Configuração Inicial.

Body

Exemplo com cURL

Exemplo com JavaScript

Exemplo com Python

Passo 2: Parear com o WhatsApp

Após a conexão, você receberá um evento QRCode no seu webhook com a imagem do QR Code em base64:
  1. Abra o WhatsApp no celular
  2. Vá em Configurações > Dispositivos conectados > Conectar dispositivo
  3. Escaneie o QR Code recebido no webhook (decodifique o campo qrcode base64 para exibir a imagem)
Se preferir usar Pairing Code ao invés de QR Code, envie o campo phone no body:

Passo 3: Confirmar a conexão

Após o pareamento bem-sucedido, você receberá uma sequência de eventos: PairSuccessConnectedOfflineSyncCompleted. Se recebeu esses 3 eventos, seu webhook está configurado corretamente.

Passo 4: Receber mensagens

A partir de agora, toda mensagem recebida no WhatsApp será enviada como evento Message para sua URL.

Processando no seu servidor

Seu endpoint deve responder com status HTTP 2xx (200-299) em até 30 segundos. Caso contrário, o Evolution Go fará até 5 retentativas com intervalo de 30 segundos entre cada uma.

Configuração Detalhada

A configuração de webhooks é feita no momento da conexão da instância, através do endpoint POST /instance/connect.

Webhook por Instância

Ao conectar uma instância, você pode definir a URL do webhook e os eventos que deseja receber:
POST /instance/connect

Parâmetros

Webhook Global

Você pode definir um webhook global via variável de ambiente. Ele receberá eventos de todas as instâncias, além dos webhooks individuais de cada instância.
.env
Quando configurados, ambos os webhooks são acionados: o global (definido por WEBHOOK_URL) e o da instância (definido em webhookUrl). Isso permite ter um sistema centralizado de monitoramento junto com integrações específicas por instância.

Tipos de Eventos

Ao configurar o webhook, você pode se inscrever nos seguintes tipos de eventos:
Use "ALL" na lista de subscribe para receber todos os eventos sem precisar listar cada um individualmente.

Estrutura do Payload

Todos os webhooks são enviados como requisições HTTP POST com Content-Type: application/json. A estrutura base do payload é:

Payloads por Evento

QRCode

Emitido quando um novo QR Code é gerado para pareamento.

PairSuccess

Emitido quando o pareamento do dispositivo é concluído com sucesso.

Message

Emitido quando uma mensagem é recebida. O payload varia conforme o tipo de mensagem. Todos os eventos de mensagem compartilham a mesma estrutura base em data, com o objeto Info contendo metadados e Message contendo o conteúdo.

Campos comuns do objeto Info

Campos comuns adicionais

Text

Image

Quando WEBHOOK_FILES=true (padrão), o campo base64 contém a imagem codificada. Caso contrário, mediaUrl apontará para o armazenamento MinIO/S3.

Video

Audio

Document

Quando WEBHOOK_FILES=true (padrão), mensagens com mídia incluem o conteúdo do arquivo como base64 dentro do objeto Message. Se o MinIO/S3 estiver configurado, o campo mediaUrl será adicionado em vez do base64.

Receipt

Emitido para confirmações de leitura e entrega. O campo state no nível raiz indica o tipo: Read, ReadSelf ou Delivered.

Connected

Emitido quando a instância se conecta ao WhatsApp com sucesso.

LoggedOut

Emitido quando a instância é desconectada do WhatsApp.

OfflineSyncCompleted

Emitido quando a sincronização offline de mensagens é concluída após a reconexão.

CallOffer

Emitido quando uma chamada é recebida.

CallRelayLatency

Emitido com informações de latência durante uma chamada em andamento.

CallTerminate

Emitido quando uma chamada é encerrada.

JoinedGroup

Emitido quando a instância entra em um grupo.

GroupInfo

Emitido quando informações de um grupo são atualizadas (nome, descrição, participantes, etc.).

NewsletterJoin

Emitido quando a instância entra em um canal/newsletter.