Pular para conteúdo

Referencia Tecnica -- Ofertas Bepex

IDs, credenciais, field keys, activity types, dados de teste e snippets para operar o sistema.


IDs dos Workflows n8n

Workflow ID n8n Status Trigger Nos
WF-Oferta-Launcher ud1VP04JVajsAfGK Inativo (manual) Manual Trigger 8
WF-Oferta-Dispatcher LJS7oHdIzQBnjI9O ATIVO (desde 2026-06-11) 2 Crons (8h + 14h BRT, seg-sex) 6
WF-Oferta-Worker fQRxspKUKIj2o8b0 ATIVO (desde 2026-06-11) Webhook GET /webhook/oferta-worker 35

URL base n8n: https://n8n.bepex.com.br URL base webhooks: https://n8n-hook.bepex.com.br

URLs de execucoes: - Launcher: https://n8n.bepex.com.br/workflow/ud1VP04JVajsAfGK/executions - Dispatcher: https://n8n.bepex.com.br/workflow/LJS7oHdIzQBnjI9O/executions - Worker: https://n8n.bepex.com.br/workflow/fQRxspKUKIj2o8b0/executions


Webhook URLs

Workflow URL Metodo
WF-Oferta-Worker https://n8n-hook.bepex.com.br/webhook/oferta-worker GET
WF-Resumo-IA (dependencia) https://n8n-hook.bepex.com.br/webhook/gera-resumo-ia POST

Credenciais no n8n

Nome no n8n ID Tipo Uso
Pipedrive account CHj11AO6T3756SqM pipedriveApi (rw) CRUD de atividades e persons
Bepex Enrico n5IiwdsiIB3dAUQE pipedriveApi (ro) Leitura complementar
Bepex Openrouter SW7yige5BeCOqaRU OpenRouter google/gemini-2.5-flash (temp 0.4)
AWS account kqmbhAWS0tyL5fuI AWS Amazon SES (us-east-2)
Chatwoot Bepex Header Auth FzLnFD8cohSYSYIN Header Auth API Chatwoot chat.bepex.com.br account 2

Workflow dependente

Workflow ID n8n Chamado por Metodo
WF-Resumo-IA BL3me3JQiVmSbzn3 WF-Oferta-Worker POST /webhook/gera-resumo-ia com {person_id}

Campos customizados do Pipedrive

Campo Field key Tipo Opcoes/Notas
aceita_comunicacao 19bc9c4cde5a4a5959809e45e7f032ae7dd9c3a7 enum 394=So Email, 395=So WhatsApp, 396=Email e WhatsApp, 397=Nao aceita
Resumo de IA 366d9e84fbb893e50d04f7d5ec40336fd4ebf970 text Gerado pelo WF-Resumo-IA
nutricao_contexto_ia 9b4cdfbf6c48e938cfc7fb613625d27ee999dfa3 text Contexto acumulado de interacoes
WhatsApp Frio Atribuido 8778c52fdebd7863e34e9c026436d8e26b385cfe varchar ID 9099. Criado 2026-06-10 (campo 100/100)

Activity Types do Pipedrive

Nome key_string ID Canal
Oferta Email oferta_email 54 So email
Oferta WhatsApp oferta_whatsapp 55 So WhatsApp
Oferta Email+WhatsApp oferta_emailwhatsapp 56 Email + WhatsApp

Atividades sao criadas pelo Launcher com done: 0 e marcadas done: 1 pelo Worker apos processamento.


Chatwoot -- Inboxes WhatsApp (pool)

Base URL: https://chat.bepex.com.br/api/v1/accounts/2

Inbox ID Descricao
Prospeccao 3 64 Numero de prospeccao
WhatsApp pre-vendas frio 61 Numero pre-vendas

Round-robin: o Code "Prepara WhatsApp" distribui entre as inboxes do pool [64, 61].


Amazon SES -- Padrao de envio (CRITICO)

Bug do n8n: HTTP Request node com AWS predefined credential double-encodes @ quando usa contentType: "form-urlencoded". Causa erro "Missing final '@domain'" no SES.

Workaround obrigatorio:

Node: HTTP Request
- Method: POST
- URL: https://email.us-east-2.amazonaws.com
- Authentication: Predefined Credential -> AWS (kqmbhAWS0tyL5fuI)
- Service: ses
- Region: us-east-2
- Send Body: ON
- Content Type: Raw
- rawContentType: application/x-www-form-urlencoded
- Body (expression):

={{ 'Action=SendEmail&Source=' + encodeURIComponent($json.email_from) + '&Destination.ToAddresses.member.1=' + encodeURIComponent($json.email_to) + '&Message.Subject.Data=' + encodeURIComponent($json.email_subject) + '&Message.Body.Text.Data=' + encodeURIComponent($json.email_body) }}

NUNCA usar: - Node nativo n8n-nodes-base.awsSes (mesmo bug) - contentType: "form-urlencoded" com AWS auth - SMTP node (nao configurado)

Email senders: FEITO -- relacionamento@bepexmkt.com.br (criado 2026-06-10) e contato@bepexmkt.com.br (reativado 2026-06-10, estava suspenso). Ambos ativos no Hostinger. Round-robin via person_id % 2 no Code "Prepara Email" do Worker.

Unsubscribe: Link automatico no rodape de cada email aponta pro WF4 — Opt-out Email (paffbqyOJHAafePk), reaproveitado do Conteudo Infinito. URL: https://n8n-hook.bepex.com.br/webhook/unsubscribe?pessoa_id={person_id}. Ao clicar, o lead tem aceita_comunicacao atualizado no Pipedrive (394→397, 396→395). O Worker ja checa esse campo em "Checa Aceita Comunicacao" e pula leads com 397.


Dados de teste

Item Valor
Lead 1 Rafael Teste Ofertas (person_id: 59985), phone +5527981155155, email rafaelrcguzzo@gmail.com
Lead 2 Rafael Bepex Teste (person_id: 59986), phone +5519999009995, email rafaelrcguzzo@gmail.com
Filtro Pipedrive TESTE OFERTAS CLAUDE (filter_id: 136451)

Para rodar teste E2E: 1. Editar Config do Launcher com filter_id: 136451, campaign_name: "Teste E2E", tipo_atividade: "oferta_emailwhatsapp" 2. Executar Launcher manualmente 3. Verificar que atividades foram criadas para os 2 leads de teste 4. Ativar Dispatcher e Worker 5. Monitorar execucoes do Worker 6. Verificar email em rafaelrcguzzo@gmail.com e WhatsApp nos telefones de teste


Config do Launcher (Set node editavel)

Parametros que o operador deve editar antes de cada campanha:

Parametro Tipo Exemplo Descricao
filter_id number 136451 ID do filtro Pipedrive com os leads da campanha
campaign_name string "Promo Inverno 2026" Nome da campanha (vai no subject da atividade)
tipo_atividade string "oferta_emailwhatsapp" Canal: oferta_email, oferta_whatsapp ou oferta_emailwhatsapp

Horario comercial (Guard)

Parametro Valor
Janela manha 8h - 12h BRT
Janela tarde 14h - 18h BRT
Dias Segunda a Sexta (1-5)
Timezone America/Sao_Paulo

Implementado em 2 lugares: 1. Dispatcher -- Guard Horario antes de acionar Worker 2. Worker -- Guard Horario Final antes de self-trigger


Resultado Teste E2E (2026-06-10)

Pipeline testado ponta a ponta com 2 leads de teste. Ambos processados com sucesso.

Lead Person ID Execucao Email SES WhatsApp Chatwoot Marca Done IA
Rafael Teste Ofertas 59985 521475 SUCCESS Enviado msg 2392953, inbox 61, conv 118892 act 426256 DONE Mensagem personalizada
Rafael Bepex Teste 59986 521493 SUCCESS Enviado msg 2392982 act 426257 DONE Mensagem personalizada

30 nos rodaram em cada execucao (pipeline completo).

Bugs corrigidos durante o E2E:

  1. Busca 1 Atividade — Pipedrive GET /v1/activities exclui custom types da listagem geral. Fix: query cada tipo explicitamente com &type=oferta_email etc. (Code node com loop)
  2. Envia Email SES — credential key awsApi nao existe, tipo correto e aws. Fix: alterado credentials e nodeCredentialType.
  3. Marca Done — HTTP Request com expression ={"done":1} avalia como JS block+label retornando 1. Fix: convertido para Code node com this.helpers.httpRequest() e referencia explicita $('Extrai Atividade').first().json.activity_id.
  4. Webhook 500 responseresponseMode: "lastNode" retornava output do ultimo no (vazio quando Guard bloqueia). Fix: alterado para "onReceived" (responde 200 imediatamente).
  5. False-positive contact matching no WhatsApp — Chatwoot /contacts/search?q= e busca fuzzy que tambem faz match no campo identifier (substring). Resultado: lead 59986 foi associado ao contato 44903 (identifier 55199990099951513602559 continha 5519999009995 como substring). Fix: Code "Processa Contato" agora itera todos os resultados e so aceita match se phone_number normalizado bater com o telefone do lead. Se nenhum match por telefone, forca criacao de contato novo (needs_create_contact: true).
  6. Marca Done (Skip) — Mesmo bug expression-mode do #3 (={"done":1}1). Atividades de leads com aceita_comunicacao=397 nao estavam sendo marcadas done. Fix: convertido para Code node com this.helpers.httpRequest() (2026-06-10).

Guard Horario Final: Funcionou corretamente — bloqueou self-trigger as 12:50 (almoco) e as 15:55 (tarde, mas sem mais atividades).

Salva Inbox Pipedrive: Codigo ainda comentado (TODO). Nao impede funcionamento.


Pendencias

Item Status Detalhes
Teste E2E FEITO 2 leads processados com sucesso (2026-06-10). Ver secao acima.
Email senders FEITO relacionamento@ criado + contato@ reativado em bepexmkt.com.br (2026-06-10). Round-robin no Worker.
Campo WhatsApp Frio Atribuido FEITO Field key 8778c52fdebd7863e34e9c026436d8e26b385cfe, id 9099. Placeholder substituido no Worker (2026-06-10)
Fix contact matching WhatsApp FEITO + TESTADO "Processa Contato" valida phone_number. Re-teste exec 522708: contact_id=749 (correto, antes era 44903), msg 2394296 enviada, conv 118970.
Unsubscribe automatico FEITO Link pro WF4 (/webhook/unsubscribe?pessoa_id=X) no rodape de cada email. Reusa mecanismo do Conteudo Infinito (2026-06-10).
Salva Inbox Pipedrive TODO Code no Worker esta comentado. Nao-critico — campo existe, so falta descomentar e testar.
Ativacao para primeira campanha FEITO Campanha "Reengajamento Jun 2026" lancada em 2026-06-11. Ver secao abaixo.
Aviso equipe comercial FEITO Enrico (conv 56), Gustavo (conv 428), Raissa (conv 429) notificados via WhatsApp Bepex em 2026-06-12.

Campanha 1: Reengajamento Jun 2026 (2026-06-11)

Parametro Valor
Campanha Reengajamento Jun 2026
Filtro Pipedrive 215 (filtro do Gustavo)
Tipo atividade oferta_emailwhatsapp
Leads no filtro 1974
Leads elegiveis (apos filtro) 1565
Atividades criadas 1565
Descartados 409 (sem email+telefone, ou aceita_comunicacao=397)
Launcher exec ID 525867 (success)
Worker status ATIVO
Dispatcher status ATIVO (cron 8h + 14h BRT seg-sex)

Segmentacao IA: 2 segmentos — Arquitetura (brises, fachadas metalicas decorativas, projetos, galeria de obras) e Industrial (perfurados/expandidos, materia-prima, preco). IA decide pelo Resumo de IA (366d9e84...), nome da empresa e contexto.

Prompt IA v2 (2026-06-11): Reescrito para campanha de reengajamento. campaign_type: 'reengajamento' hardcoded no Code "Monta Contexto" (fixado em 2026-06-11). Tom "falamos um tempo atras". Usa {resumo_ia} como fonte principal de segmentacao (mesmo padrao do Conteudo Infinito). URL correta: https://bepex.com.br/galeria/ (redireciona pra /galeria-de-projetos/). IA NAO declara nome proprio nem cargo. Sem corporatives.

Wait entre leads: Aleatorio 5-15 min (expressao ={{ Math.floor(Math.random() * 11) + 5 }}). Alterado de fixo 10min em 2026-06-11.

Fix tecnico Launcher: Timeout de 300s do servidor impedia criar 1565 atividades com delay de 500ms. Fix: (1) logica de dedup para pular atividades ja criadas, (2) delay reduzido para 100ms a cada 5 criados. Execucao total: ~200s.