Visão geral
Este fluxo do n8n busca conversas no Chatwoot, seleciona contatos no estágio CONTATO e, conforme a "idade" da última interação, envia templates do WhatsApp (Cloud API) para reengajar. Após o disparo, registra uma nota privada na conversa e atualiza atributos do contato no Chatwoot (ex.: ultimo_modelo
, ultima_atualizacao
).
Objetivo do documento: explicar como o fluxo funciona, onde alterar textos/templates, como publicar/editar templates no WhatsApp e cuidados de operação/segurança.
Como o fluxo funciona (passo a passo)
-
Agendamento
O gatilho usa cron para rodar entre 08h e 20h, a cada 2 horas (0 8-20/2 * * *
). O node é o Schedule Trigger.
Referência: n8n Schedule Trigger (timezone, ativação do fluxo, cron). -
Coleta de conversas (Chatwoot)
-
Node Campos define
apikey
econta
. -
Node Capturar conversas chama
GET /api/v1/accounts/{account_id}/conversations
comapi_access_token
no header e paginação. -
Referência de API: Conversations List e Conversation Details (Chatwoot).
- Tratamento dos dados
- Node TRATAR DADOS organiza as conversas: pega
last_non_activity_message
, identifica quem falou por último (empresa x cliente), filtra somente contatos cujosender.custom_attributes.estgio
contém "CONTATO", normaliza horário e monta um array consolidadoconversations
para a próxima etapa.
- Escolha do template e montagem do payload (Meta WhatsApp)
-
Node PEGAR TODOS TEMPLATES lista templates aprovados da conta WhatsApp.
-
Node VERIFICAR SE DEVE ENVIAR TEMPLATE faz:
-
cálculo de dias desde a última mensagem;
-
escolhe o template conforme faixas (2, 3, 7, 14, 21, 28 dias);
-
evita repetir o mesmo template do último envio (
ultimo_modelo
); -
formata telefone (DDI 55) e cria o payload no padrão WhatsApp Cloud API
/v21.0/{PHONE_NUMBER_ID}/messages
comtype: "template"
,template.name
,language.code
e components (HEADER/BODY/BUTTONS).
-
-
Referências: envio de mensagens e message templates (Cloud API); componentes do template (HEADER/BODY/FOOTER/BUTTONS) e placeholders.
- Envio do template (WhatsApp Cloud API)
-
Node SEND TEMPLATE faz
POST /{PHONE_NUMBER_ID}/messages
com o JSON montado. -
Referência: endpoint de mensagens da Cloud API.
- Registro e atualização no Chatwoot
-
Node CRIAR NOVA MENSAGEM cria uma nota privada na conversa com o texto do template (para auditoria).
-
Node ATUALIZAR CONTATO faz
PUT /api/v1/accounts/{account_id}/contacts/{contact_id}
em custom_attributes (ultimo_modelo
,ultima_atualizacao
). -
Referências: Create New Message e atualização de contato (Chatwoot APIs).
Onde alterar o conteúdo das mensagens
Importante: conteúdo de templates do WhatsApp não é editado livremente no código. Você seleciona qual template aprovado enviar, e passa valores para placeholders (
{{1}}
,{{2}}
…) nos components do template. O texto-base é gerenciado no WhatsApp Manager (Meta Business Manager) e precisa de aprovação.
1) Alterar o mapping de templates no n8n
-
Abra o node VERIFICAR SE DEVE ENVIAR TEMPLATE.
-
Revise a lógica de seleção por faixa de dias (
diffDays
) e os nomes dos templates, por exemplo:-
>= 28
:gatilho_de_escassez_contato
-
>= 21
:suporte_completo_contato
-
>= 14
:depoimento_contato
-
>= 7
:oportunidade_imperdivel_contato
-
>= 3
:tentativa_3_d2
-
>= 2
:tentativa_2_d1__reforo_do_interesse
-
-
Ajuste os nomes para os templates exatamente como aprovados no WhatsApp Manager.
-
Caso adicione novos templates, garanta que o node PEGAR TODOS TEMPLATES consiga listá-los e que o
find(t => t.name === templateSelecionado)
funcione.
2) Editar o texto-base de um template (WhatsApp Manager)
-
Acesse Meta Business Manager → WhatsApp Manager → Message Templates.
-
Crie/edite um template: HEADER/BODY/FOOTER/BUTTONS, defina placeholders (
{{n}}
) apenas onde serão preenchidos via API. -
Envie para aprovação. Somente templates com status
APPROVED
podem ser usados. -
Após aprovado, use o
name
(ex.:oportunidade_imperdivel_contato
) na lógica do n8n.
Observações úteis
-
Templates são a única forma de enviar mensagens fora da janela de 24h.
-
Você não edita o texto de um template no momento do envio; você apenas preenche os placeholders nas components.
-
Ao editar um template aprovado, ele volta para revisão e fica pendente até nova aprovação. Em muitos provedores/UI, o template pode ter limites de edição por janela de tempo.
3) Preenchendo placeholders (no n8n)
-
No node VERIFICAR SE DEVE ENVIAR TEMPLATE, a função
generatePayload(...)
monta os components. -
Para
HEADER
/BODY
com{{1}}
,{{2}}
, etc., atribuaparameters
do tipoTEXT
na mesma ordem. -
Para botões (
BUTTONS
), usesub_type
(ex.quick_reply
) epayload
/text
conforme a definição do template. -
Exemplo de
template.components
aceitos: HEADER (IMAGE/TEXT), BODY, BUTTONS.
Como publicar um novo template (resumo operacional)
-
Crie o template no WhatsApp Manager (nome, idioma, categoria, conteúdo e placeholders).
-
Envie para aprovação e aguarde o status
APPROVED
. -
No n8n, adicione o nome do novo template à lógica de seleção (node VERIFICAR SE DEVE ENVIAR TEMPLATE).
-
Faça um teste controlado (contato interno) e verifique se:
-
o envio via
/messages
retorna 200; -
a nota privada e a atualização de atributos no Chatwoot ocorreram;
-
o fluxo não repetiu o mesmo template para o mesmo contato (regra
ultimo_modelo
).
-
Regras de negócio adotadas
-
Janela de 24h (WhatsApp): fora dessa janela, apenas templates aprovados podem ser enviados.
-
Evitar repetição: não envia o mesmo template consecutivamente para o mesmo contato.
-
Janelas por "dias sem resposta": mapeamento por
diffDays
escolhido para escalar o tom (reforço de interesse → prova social → suporte → escassez). Ajuste conforme sua estratégia de marketing. -
Estágio do contato: o fluxo só age para contatos em
estgio
contendo "CONTATO" (ajuste esse filtro de acordo com seu funil).
Operação segura e boas práticas
-
Segredos/Tokens: não versionar tokens no fluxo; use n8n Credentials/variáveis de ambiente.
-
Retentativas: configure
retryOnFail
e intervalos de paginação/limite de requisições. -
Idempotência: antes de enviar, verifique
ultimo_modelo
e, se possível, adote umecho_id
/message_id
único nas notas para evitar duplicidade. -
Auditoria: mantenha as mensagens privadas no Chatwoot com resumo do que foi enviado (data, template, parâmetros).
-
Consentimento: certifique-se de que há opt-in para mensagens de marketing, conforme a política de Business Messaging do WhatsApp.
Padrões técnicos (referências rápidas)
-
WhatsApp Cloud API – enviar mensagens: endpoint
/v{version}/{PHONE_NUMBER_ID}/messages
(template, texto, mídia, interativos). -
WhatsApp Cloud API – templates: criação/gestão e componentes (HEADER, BODY, FOOTER, BUTTONS) com placeholders.
-
Templates aprovados: só status
APPROVED
pode enviar; edição exige nova aprovação. -
Janela de 24h: templates podem ser usados fora da janela; mensagens não-template apenas dentro.
-
Chatwoot API – conversas: listar/paginar via
api_access_token
. -
Chatwoot API – mensagens: criação de mensagem/nota na conversa.
-
n8n – Schedule Trigger: cron, timezone e ativação do workflow.
Checklist rápido para o cliente
-
Template criado e aprovado no WhatsApp Manager, com placeholders corretos.
-
Nome do template idêntico no node VERIFICAR SE DEVE ENVIAR TEMPLATE.
-
Placeholders mapeados na função
generatePayload
(ordem{{1}}
,{{2}}
, …). -
Teste de envio em contato interno (retorno 200; nota privada e atualização no Chatwoot).
-
Tokens guardados em Credentials do n8n.
-
Fluxo ativado e cron conferido no timezone correto.
Links úteis (documentação)
-
WhatsApp Cloud API – Mensagens (endpoint
/messages
). -
WhatsApp Cloud API – Templates (criar/enviar, componentes, diretrizes).
-
Janela de 24h e uso de templates (envio fora da janela).
-
Política de Business Messaging (WhatsApp).
-
Chatwoot – Conversations API (listar/filtrar/detalhes) e Messages API (criar mensagem).
-
n8n – Schedule Trigger (cron, timezone, ativação).
Em caso de dúvidas, a Conexão Azul pode ajustar a lógica de seleção, publicar novos templates e revisar os textos para aderência às políticas do WhatsApp e às melhores práticas de engajamento.