O que é a Evolution API
É uma API open source, mantida pela Evolution Foundation, que conecta números de WhatsApp a sistemas por requisições HTTP. Tem licença Apache 2.0, roda em Docker e usa PostgreSQL (ou MySQL), com Redis recomendado como cache.
Ela conecta de dois jeitos: pelo WhatsApp Web (biblioteca Baileys), gratuito e pareado por QR Code, ou pela API oficial do WhatsApp Cloud, da Meta, que segue as regras e a cobrança por mensagem da Meta.
Por que usar com o n8n
A Evolution API recebe e envia as mensagens; quem decide o que responder é o n8n. A cada mensagem recebida, a Evolution chama um webhook do n8n, que pode consultar uma planilha, um CRM ou um agente de IA e devolver a resposta pelo node da Evolution API.
- Atendimento automático com IA e passagem para um humano
- Confirmação de pedido e código de rastreio
- Lembrete de agendamento e de cobrança
- Captura de leads direto para o CRM
Do que você precisa
| Item | Para quê |
|---|---|
| VPS com 4 a 6 GB de RAM | n8n, Evolution API, PostgreSQL e Redis no mesmo servidor |
| n8n instalado com Docker | siga o guia como instalar o n8n na VPS; este post continua a partir dele |
| Um subdomínio para a API | por exemplo evo.seudominio.com.br, apontando para o IP da VPS |
| Um número de WhatsApp | de preferência um chip só para a automação |
Passo 1: crie o banco da Evolution
A ideia é rodar tudo no mesmo docker-compose.yml do n8n: a Evolution aproveita o PostgreSQL que já existe e o Caddy passa a atender os dois domínios. Comece criando o banco da Evolution:
cd ~/n8n
docker compose exec postgres createdb -U n8n evolution
Passo 2: o arquivo evolution.env
Na pasta do projeto, crie o evolution.env com as variáveis da documentação oficial. A chave de API pode ser qualquer texto longo e aleatório, e a senha do banco é a mesma do .env do n8n:
AUTHENTICATION_API_KEY=troque-por-uma-chave-longa
SERVER_URL=https://evo.seudominio.com.br
DATABASE_ENABLED=true
DATABASE_PROVIDER=postgresql
DATABASE_CONNECTION_URI=postgresql://n8n:troque-esta-senha@postgres:5432/evolution
CACHE_REDIS_ENABLED=true
CACHE_REDIS_URI=redis://redis:6379/1
CACHE_LOCAL_ENABLED=false
Passo 3: os serviços novos no docker-compose
No docker-compose.yml, os serviços evolution-api e redis entram dentro de services:, o bloco caddy substitui o antigo (sai o command, entra o Caddyfile) e o bloco volumes: substitui o anterior. Em produção, troque latest pela versão que você testou.
evolution-api:
image: evoapicloud/evolution-api:latest
restart: always
env_file:
- evolution.env
volumes:
- evolution_instances:/evolution/instances
depends_on:
- postgres
- redis
redis:
image: redis:7
restart: always
volumes:
- redis_data:/data
caddy:
image: caddy:2
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
volumes:
db_data:
n8n_data:
caddy_data:
evolution_instances:
redis_data:
Passo 4: o Caddyfile com os dois domínios
Crie o Caddyfile na mesma pasta. O Caddy emite e renova o HTTPS dos dois domínios sozinho:
n8n.seudominio.com.br {
reverse_proxy n8n:5678
}
evo.seudominio.com.br {
reverse_proxy evolution-api:8080
}
Rode docker compose up -d e acompanhe com docker compose logs -f evolution-api.
Passo 5: conecte o WhatsApp pelo QR Code
Abra o Manager, o painel web da Evolution, em https://evo.seudominio.com.br/manager, e entre com a sua AUTHENTICATION_API_KEY.
Crie uma instância com a conexão Baileys (WhatsApp Web), clique para conectar e leia o QR Code no celular, em WhatsApp > Aparelhos conectados.
Passo 6: instale o node da Evolution API no n8n
n8n-nodes-evolution-api, aceite os termos e confirme.Passo 7: receba e responda mensagens
MESSAGES_UPSERT, que dispara a cada mensagem recebida.data.message.conversation e o contato em data.key.remoteJid. Trate a mensagem (um IF, uma planilha ou um agente de IA) e responda com o node da Evolution API.data.key.fromMe vem como true), senão o workflow responde a si mesmo sem parar.
Cuidados para o número não ser bloqueado
A conexão pelo WhatsApp Web não é oficial da Meta. Ela funciona bem para atendimento, mas o WhatsApp pode banir números que desrespeitam os termos de uso.
- Responda a quem falou com você; disparo em massa para quem não pediu é o caminho mais rápido para o bloqueio.
- Use um chip dedicado à automação, não o seu número pessoal.
- Coloque intervalos entre as mensagens e evite textos idênticos em sequência.
- Para volume alto em escala comercial, avalie a API oficial do WhatsApp Cloud, que a Evolution também suporta.