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
    Dica
    O HTTPS é obrigatório para ambos os serviços — o WhatsApp Web não envia mensagens para endpoints HTTP. Use Nginx com Let's Encrypt conforme descrito no artigo sobre WordPress com HTTPS (o processo é idêntico para qualquer app).

    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
    Dica
    O QR Code expira em 45 segundos. Se expirar, chame o endpoint /connect novamente. Após escanear, a conexão fica ativa indefinidamente enquanto o container Evolution API estiver rodando.

    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"

    $ runstack deploy --plan starter

    Não quer configurar manualmente?

    Não quer configurar manualmente? Implante o Chatwoot em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.

    Perguntas frequentes