ecom-store/workflows/README-FASE5-OPENWA-TWENTY.md
Iris Florencio 0a0061a914 feat(workflows): fase 5 — integração WhatsApp (OpenWA) ↔ Twenty CRM
Work feito nesta sessão:
- Traefik routes.yml: crm.m5digital.net.br → twenty-crm (Twenty substitui Hermes CRM)
- Backup pre-fase3 salvo em /root/backups/2026-07-06_pre-crm-reorg/
- 3 IPs hardcoded substituídos por container names (video, chatwoot, twenty)
- API key OpenWA recuperada do .api-key (regenerada em 29/jun/2026)
- Workflows n8n JSON prontos para WhatsApp → CRM e CRM → WhatsApp
- Documentação completa em workflows/README-FASE5-OPENWA-TWENTY.md

Pendência: import manual dos workflows via n8n UI após login wizard.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-06 16:49:26 -03:00

4.1 KiB

Fase 5 — Integração WhatsApp (OpenWA) ↔ Twenty CRM via n8n

Status atual (06/jul/2026)

O que está pronto

  • OpenWA rodando (https://wa.m5digital.net.br), API funcional
  • API key OpenWA recuperada: gravada em /app/data/.api-key (regenerada em 29/jun/2026)
  • https://crm.m5digital.net.br apontando para Twenty CRM
  • n8n rodando, 3 webhooks ativos (twenty-webhook, chatwoot-webhook, saleor-webhook)
  • URL pública https://n8n.m5digital.net.br/webhook/{path} acessível externamente
  • Workflows JSON prontos em:
    • /root/ecommerce/workflows/m5-openwa-to-twenty.json (entrada WhatsApp → CRM)
    • /root/ecommerce/workflows/m5-twenty-to-openwa.json (saída CRM → WhatsApp)

⚠️ Pendência: login do n8n

Ao longo da investigação:

  • API key correta: n8n_api_6878ecab2c6a0c5a58be3b265e1227075a3c60e3c7f430c574ec2043029bdc2d
  • Email correto do owner: admin@m5online.com.br
  • Senha foi resetada (user-management:reset) — você precisa definir nova senha via wizard

Ação sua: ir em https://n8n.m5digital.net.br, completar setup wizard (vai pedir email + senha nova).


Como importar os workflows via n8n UI (depois do login)

Workflow 1: M5 — OpenWA → Twenty CRM

  1. Abrir https://n8n.m5digital.net.br
  2. Clicar Workflows no menu lateral
  3. Botão + New workflow (canto superior direito)
  4. Clicar nos 3 pontinhos (⋮) → Import from File...
  5. Selecionar /root/ecommerce/workflows/m5-openwa-to-twenty.json
  6. Activate (toggle no topo)

O que ele faz:

  • Recebe POST https://n8n.m5digital.net.br/webhook/openwa-incoming
  • Filtra apenas evento message.received do OpenWA
  • Extrai phone, name, message do payload
  • Cria Note no Twenty CRM com [Phone: 5511999999999] mensagem do cliente

Campos que serão gravados no Twenty (assumindo schema padrão):

  • note.body — texto da mensagem com prefixo do telefone
  • note.title — "WhatsApp"

Workflow 2: M5 — Twenty CRM → OpenWA (resposta)

  1. Importar /root/ecommerce/workflows/m5-twenty-to-openwa.json
  2. Activate

O que ele faz:

  • Recebe POST https://n8n.m5digital.net.br/webhook/twenty-outgoing
  • Pega person.phone + note.body do payload
  • Envia via OpenWA API POST /api/sessions/marcos-pessoal/messages/send-text

Como registrar o webhook no OpenWA (depois)

Quando você tiver uma sessão WhatsApp ativa (READY no dashboard), registrar webhook:

OPENWA_KEY="owa_k1_1e56b98c39a2daa5bdb537d04f35da17117021bedc8c1de80eaba2926c584b39"
SESSION="marcos-pessoal"
N8N_HOOK="https://n8n.m5digital.net.br/webhook/openwa-incoming"

curl -sk -X POST "https://wa.m5digital.net.br/api/sessions/$SESSION/webhooks" \
  -H "X-API-Key: $OPENWA_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"url\": \"$N8N_HOOK\",
    \"events\": [\"message.received\", \"session.status\"],
    \"secret\": \"defina-seu-segredo-aqui\"
  }"

Saída esperada: 201 Created com id, sessionId, url, events, active: true.


Como conectar o Twenty → n8n (saída CRM)

  1. Login no Twenty: https://crm.m5digital.net.br
  2. Settings → Webhooks (canto superior direito)
  3. New webhook:
    • URL: https://n8n.m5digital.net.br/webhook/twenty-outgoing
    • Events: note.created, person.updated
    • Secret: mesma do n8n
  4. Salvar

Validação end-to-end

  1. Enviar mensagem WhatsApp para o número da sessão marcos-pessoal
  2. OpenWA dispara webhook → n8n recebe
  3. n8n extrai dados → chama https://crm.m5digital.net.br/graphql
  4. Verificar no Twenty: nova Note com [Phone: ...] mensagem

Reverse:

  1. No Twenty, criar Note manualmente com texto "teste via CRM"
  2. Webhook do Twenty dispara → n8n recebe
  3. n8n chama OpenWA send-text
  4. WhatsApp recebe a mensagem

Próximas melhorias (depois que validação passar)

  • Adicionar filtro por número (não criar Note de contatos bloqueados)
  • Adicionar idempotência (não duplicar Note se mesma mensagem chegar 2x)
  • Adicionar suporte a mídia (imagem, áudio, documento)
  • Adicionar Lookup de Company por nome se a mensagem mencionar empresa
  • Adicionar twilio de 24h após última msg (regra WhatsApp Business)