# 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: ```bash 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)