Chatwoot + WhatsApp com Evolution API

Integrar o Chatwoot com WhatsApp via Evolution API permite receber e responder mensagens do WhatsApp diretamente no painel do Chatwoot, junto com outros canais (e-mail, Instagram, Telegram). Toda a stack roda na sua VPS com Docker, sem mensalidade por canal ou limite de conversas.

Arquitetura da integração

A Evolution API atua como bridge entre o WhatsApp Web e o Chatwoot. Ela recebe as mensagens do WhatsApp via WebSocket e as envia para o Chatwoot via webhook HTTP:

bash
# Fluxo de mensagens:
# WhatsApp → Evolution API → webhook → Chatwoot → agente

# Fluxo de resposta:
# Agente no Chatwoot → API Chatwoot → Evolution API → WhatsApp

# Pré-requisitos na mesma VPS:
# - Chatwoot rodando e acessível (HTTPS obrigatório)
# - Evolution API rodando e acessível (HTTPS obrigatório)
# - Número WhatsApp disponível para escanear o QR code

Criar inbox do WhatsApp no Chatwoot

No painel do Chatwoot, crie uma inbox do tipo "API Channel" para receber as mensagens da Evolution API:

bash
# No Chatwoot:
# Settings → Inboxes → Add Inbox → API
# Preencher:
#   Channel Name: WhatsApp Principal
#   Webhook URL: (deixar vazio por enquanto)

# Após criar, anote:
#   - Inbox ID (aparece na URL: /app/accounts/1/settings/inboxes/INBOX_ID)
#   - API Access Token (Settings → Integrations → API → Access Token)

Configurar a Evolution API para o Chatwoot

Na Evolution API, crie uma instância do WhatsApp e configure a integração com o Chatwoot:

bash
# Criar instância na Evolution API
curl -X POST https://evolution.seudominio.com.br/instance/create \
  -H "apikey: SUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "instanceName": "whatsapp-principal",
    "integration": "WHATSAPP-BAILEYS",
    "chatwootAccountId": 1,
    "chatwootToken": "SEU_ACCESS_TOKEN_CHATWOOT",
    "chatwootUrl": "https://chat.seudominio.com.br",
    "chatwootInboxId": INBOX_ID
  }'

# Resposta inclui instanceId — anote para os próximos passos

Conectar o número via QR Code

Após criar a instância, gere o QR Code e escaneie com o WhatsApp:

bash
# Obter QR Code (base64)
curl https://evolution.seudominio.com.br/instance/connect/whatsapp-principal \
  -H "apikey: SUA_API_KEY"

# A resposta traz o campo "qrcode.base64"
# Acesse a interface web da Evolution API para escanear visualmente:
# https://evolution.seudominio.com.br/manager

# Verificar status da conexão
curl https://evolution.seudominio.com.br/instance/connectionState/whatsapp-principal \
  -H "apikey: SUA_API_KEY"
# state: "open" = conectado

Testar a integração

Com a instância conectada, envie uma mensagem de teste para o número WhatsApp. A mensagem deve aparecer como uma nova conversa no Chatwoot:

bash
# Enviar mensagem de teste via API
curl -X POST https://evolution.seudominio.com.br/message/sendText/whatsapp-principal \
  -H "apikey: SUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "number": "5511999999999",
    "text": "Teste de integração Chatwoot + Evolution API"
  }'

# Verificar no Chatwoot:
# A conversa deve aparecer em Conversations com o canal "WhatsApp Principal"

Não quer configurar manualmente?

Implante o Chatwoot em menos de 5 minutos com a Runstack. Infraestrutura da OPEN Datacenter, com servidores em São Paulo.

Perguntas frequentes

Sim, mas com limitações. A Evolution API usa o WhatsApp Web (Baileys), funciona como o WhatsApp Web no browser. Você continua recebendo no celular, mas mensagens enviadas pela Evolution API aparecem no celular como se tivessem sido enviadas pelo WhatsApp Web. O celular precisa ficar com bateria e internet para manter a sessão ativa.

A sessão do WhatsApp Web é salva no volume Docker (pasta de dados da instância). Após reiniciar, a Evolution API restaura a sessão automaticamente, não precisa escanear o QR Code novamente. Se o volume for perdido, a reconexão via QR Code é necessária.

Evolution API usa WhatsApp Web (engenharia reversa), gratuito mas informalmente suportado, risco de ban em uso em massa. WABA é a API oficial do Meta: suporte formal, SLA garantido, cobrança por mensagem iniciada pela empresa. Para até 1000 conversas/mês com equipe pequena, Evolution API é suficiente. Para volumes maiores, considere WABA.

Sim. Crie uma instância na Evolution API para cada número e configure cada uma com uma inbox diferente no Chatwoot. Cada inbox aparece como um canal separado, você pode rotear conversas por equipe ou produto.

Configure o Chatwoot para enviar webhooks para o n8n (Settings → Integrations → Webhooks). O n8n pode processar as mensagens recebidas, chamar IA, consultar CRM e responder via a API do Chatwoot. Veja o artigo sobre Evolution API + n8n para automações com WhatsApp.