BDS0.1

Email Capture

Lê o e-mail dos vendedores copiado para a non-reply@, resolve o contexto do CRM e registra cada e-mail; inativo até configurar.

Revisado 2026-11-06Markdown
Plataforma
n8n · Abrir no n8n
Status
Ativo
ID do workflow
SAyagoahreVjMNmE
Nós
11
Versão no n8n
8bd6ad9b-9bcf-4481-8878-2ae51a9b4d40
Último salvamento no n8n
2026-11-06T19:42:09.676Z

O Email Capture guarda o registro dos e-mails entre vendedores e clientes. O Google Workspace copia todo e-mail externo enviado ou recebido por um membro do grupo sales-crm@snackprompt.com para a caixa de captura non-reply@snackprompt.com. Este workflow lê essas cópias, acha o vendedor e o cliente nos sistemas e entrega cada e-mail ao Communication — Record Email, que grava uma Message no Communication e uma Interaction por thread no CRM. Depois marca o e-mail no Gmail com um marcador de status. Nunca cria uma pessoa e nunca apaga e-mail.

O workflow está ativo desde 06/11/2026. Antes de ativar guarda a lista de preparação e o que ainda falta. Ele substitui o Email Logging, que precisava de uma credencial do Gmail por vendedor.

O maintainer do Communication cuida da caixa de captura e das Messages; o do CRM cuida das Interactions e das regras de follow-up; o do Tooling and Access cuida da Tool Account de cada vendedor.

Fluxo

Gerado da versão do n8n do quadro acima: cada caixa é um nó e cada seta é uma ligação no n8n. Pílulas rosa são gatilhos, hexágonos amarelos são nós If e Switch com as saídas nas setas, cilindros azuis leem (Airtable, Data Table, HTTP GET), cilindros verdes gravam, caixas roxas chamam outro workflow e setas tracejadas são saídas de erro.

Marcadores de status

Resolver e registrar

Ler a caixa de captura

sim

não

erro

Gmail Trigger

Config

List Labels

Normalize

Resolve CRM Context
CRM — Resolve Context

Known Person?

Record Email
Communication — Record Email

Label Registered

Label No Match

Label Error

Código Mermaid
flowchart TD
  subgraph g0["Ler a caixa de captura"]
    n1(["Gmail Trigger"]):::trigger
    n0["Config"]:::logic
    n6["List Labels"]:::logic
    n7["Normalize"]:::logic
  end
  subgraph g1["Resolver e registrar"]
    n9["Resolve CRM Context<br/><small>CRM — Resolve Context</small>"]:::subflow
    n2{{"Known Person?"}}:::decision
    n8["Record Email<br/><small>Communication — Record Email</small>"]:::subflow
  end
  subgraph g2["Marcadores de status"]
    n5["Label Registered"]:::logic
    n4["Label No Match"]:::logic
    n3["Label Error"]:::logic
  end
  n1 --> n0
  n0 --> n6
  n6 --> n7
  n7 --> n9
  n9 --> n2
  n2 -->|sim| n8
  n2 -->|não| n4
  n8 --> n5
  n8 -.->|erro| n3
  classDef trigger fill:#fde7f3,stroke:#d6409f,color:#111
  classDef decision fill:#fff7e0,stroke:#c99a00,color:#111
  classDef read fill:#e8f1ff,stroke:#3b82f6,color:#111
  classDef write fill:#e7f8ee,stroke:#16a34a,color:#111
  classDef subflow fill:#f3e8ff,stroke:#9333ea,color:#111
  classDef wait fill:#f1f1f1,stroke:#888,color:#111
  classDef logic fill:#ffffff,stroke:#999,color:#111

Sistemas que ele toca

Este workflow não lê nem grava nenhuma tabela do Airtable diretamente. Ele lê o Gmail e chama dois sub-workflows que fazem o trabalho no Airtable.

Sistema Por meio de Lê Grava
Gmail (caixa de captura) Gmail Trigger, List Labels, nós Label Cópias marcadas, lista de marcadores Marcadores de status em cada cópia
Tooling and Access, CRM CRM — Resolve Context Tool Account, Membership, People, Deal Nada
Communication, CRM Communication — Record Email Message, Interaction, Person Message, Interaction

Como as cópias chegam na caixa

Duas regras de roteamento no Admin Console do Google Workspace copiam o e-mail dos membros de sales-crm@: uma para o enviado, entregue em non-reply+crm-out@, e outra para o recebido, entregue em non-reply+crm-in@. A cópia leva três headers: X-capture-source: external-contacts, X-capture-direction (outbound ou inbound) e, nas cópias recebidas, X-Gm-Original-To com o endereço do vendedor. A cópia do cliente não leva nenhum deles. Filtros do Gmail na caixa de captura marcam as cópias com CRM/CRM - Outbound e CRM/CRM - Inbound e pulam a caixa de entrada. E-mail entre domínios internos não é copiado.

Gatilho e configuração

O Gmail Trigger consulta a caixa de captura a cada minuto com a busca deliveredto:non-reply+crm-out@snackprompt.com OR deliveredto:non-reply+crm-in@snackprompt.com (os mesmos endereços dos filtros do Gmail), lidas e não lidas, e devolve as mensagens completas com headers. Cada cópia nova é um item.

O Config define cinco valores que os nós seguintes leem: mailbox (o endereço de captura), internalDomains (domínios da empresa separados por vírgula) e os nomes dos três marcadores de status: labelRegistered, labelNoMatch e labelError.

O List Labels lê a lista de marcadores da caixa uma vez por execução, para o Normalize converter os nomes nos ids que os nós Label precisam.

O que o Normalize mantém

Valor Como é definido
Mantida ou descartada Descartada quando X-capture-source existe e não é external-contacts, quando a cópia não foi entregue em um endereço +crm-, ou quando a cópia já leva o marcador CRM/CRM - Registered
Direção X-capture-direction; fallback: o endereço de entrega +crm-out ou +crm-in, depois o domínio do From
Vendedor Enviado: o endereço do From. Recebido: X-Gm-Original-To, depois o primeiro endereço interno em To ou Cc. Descartada quando não há vendedor interno
Contraparte Recebido: o remetente. Enviado: o primeiro endereço externo em To, depois Cc. Descartada quando é interna ou automática (no-reply, mailer-daemon, notifications)
Cc externos Os outros endereços externos em To e Cc
Participantes internos Os outros endereços internos em To e Cc, sem o vendedor
Message-ID, In-Reply-To Dos headers, sem os sinais de maior e menor
Assunto, enviada em, corpo, snippet Assunto cortado em 250 caracteres; a data da mensagem ou o horário do processamento; texto puro cortado em 20.000 caracteres; uma linha cortada em 300 caracteres
Link da thread https://mail.google.com/mail/u/0/#all/ mais o id da thread do Gmail na caixa de captura
Ids dos marcadores Ids dos três marcadores de status, vazios quando um marcador não existe

Quando todas as cópias de uma consulta são descartadas, a execução termina no Normalize.

Resolver e registrar

O Resolve CRM Context chama o CRM — Resolve Context uma vez por e-mail com o endereço do vendedor, o endereço e o nome da contraparte. Ele devolve a Membership e a empresa do vendedor, a pessoa, a empresa da pessoa e o Deal aberto, mais notas.

O Known Person? só segue quando a pessoa foi achada no mirror People do CRM. O Record Email então chama o Communication — Record Email com o e-mail normalizado e o contexto. Esse sub-workflow grava a Message e a Interaction e aplica a tag email-log-n8n.

Marcadores de status

Resultado Marcador Efeito
Message e Interaction gravadas CRM/CRM - Registered Feito
Pessoa fora do mirror People do CRM CRM/CRM - No match Nada gravado; revise a pessoa e tire o marcador para reprocessar
Record Email falhou CRM/CRM - Error Tire o marcador e deixe o gatilho pegar a cópia de novo

Os nós Label adicionam o marcador na cópia da caixa de captura. Quando um nome de marcador do Config não existe no Gmail, o nó Label não tem id para adicionar e segue sem erro. Nenhum nó tira marcadores, marca como lida ou apaga e-mail: o Evidence URL da Interaction aponta para a thread nesta caixa.

Nós

O workflow tem 11 nós: 10 que executam e uma nota adesiva. Num nó If, a saída 0 é verdadeiro e a saída 1 é falso. O Record Email tem uma segunda saída para erros.

Nó Tipo O que faz
Gmail Trigger gmailTrigger Consulta a caixa de captura a cada minuto pelos dois marcadores de captura
Config set Caixa, domínios internos e os nomes dos três marcadores de status
List Labels gmail Lê a lista de marcadores uma vez por execução
Normalize code Um item por cópia; lê os headers de captura; descarta o que não é contato com cliente
Resolve CRM Context executeWorkflow Chama o CRM — Resolve Context por e-mail
Known Person? if Segue só quando a contraparte é uma pessoa do CRM
Record Email executeWorkflow Chama o Communication — Record Email; saída de erro em falha
Label Registered gmail Adiciona CRM/CRM - Registered na cópia
Label No Match gmail Adiciona CRM/CRM - No match na cópia
Label Error gmail Adiciona CRM/CRM - Error na cópia
Sticky Note stickyNote Nota de configuração no canvas; não executa

Ligações

De Saída Para
Gmail Trigger 0 Config
Config 0 List Labels
List Labels 0 Normalize
Normalize 0 Resolve CRM Context
Resolve CRM Context 0 Known Person?
Known Person? 0 Record Email
Known Person? 1 Label No Match
Record Email 0 Label Registered
Record Email 1 Label Error

Configurações e tratamento de erro

Configuração Valor
Status Ativo desde 06/11/2026
Ordem de execução v1
Workflow de erro Nenhum
On error Record Email: segue pela saída de erro. Nós Label: seguem pela saída normal. Outros nós: param o workflow (padrão)
Chamadas de sub-workflow Uma chamada por item, esperando o resultado
Caller policy Workflows do mesmo dono
Retenção dos dados de execução Padrão da instância; este workflow não define

Antes de ativar

Passo Onde Estado na última revisão
O Gmail Trigger, o List Labels e os três nós Label usam a credencial OAuth de non-reply@snackprompt.com n8n Feito: os cinco usam a credencial no-reply mail
Os marcadores CRM/CRM - Registered, CRM/CRM - No match e CRM/CRM - Error existem na caixa de captura Gmail Feito
As regras de roteamento e os filtros do Gmail estão prontos e testados Google Workspace Configurados; os cinco testes do documento de configuração estão pendentes
Todo membro de sales-crm@ tem uma Tool Account (Google Workspace, Login Alias = e-mail) com Identity Binding Tooling and Access Pendente
Os dois sub-workflows existem e podem ser chamados n8n Criados, inativos; um sub-workflow não precisa estar ativo para ser chamado
O Channel da non-reply@ está Active Communication Feito

Lacunas conhecidas

Estas vêm da configuração dos nós e do lado Google.

Lacuna Efeito
Cliente só em Cco de um e-mail enviado não aparece nos headers da cópia Esse e-mail fica sem contraparte e é descartado
Só o primeiro endereço externo é a contraparte Uma mensagem para vários clientes é registrada em um deles; os outros vão para Receivers (Person) ou ficam como cc: em About Keys
E-mail entre domínios internos não é copiado pelo Google Threads internas nunca são registradas, de propósito
“Hoje” e “mais três dias” usam a data UTC E-mail processado no fim da noite no Brasil fica com o dia seguinte
O link da thread abre na caixa de captura Só o admin da caixa abre o Evidence URL
Os bounces são suprimidos no endereço de captura Uma regra de roteamento quebrada falha em silêncio; o Email Capture — Health Check cobre isso

Recuperar uma gravação parcial

O que foi salvo O que fazer
Cópia com CRM/CRM - Error Corrija a causa e tire o marcador; a próxima consulta reprocessa a cópia e o sub-workflow atualiza no lugar
Cópia com CRM/CRM - No match Crie ou ache a pessoa no Core, espere o mirror do CRM e tire o marcador
Message gravada, Interaction faltando Tire o marcador de status; o Record Email atualiza a Message e cria a Interaction pelo link da thread

Manter esta página em dia

O quadro no topo mostra a versão do n8n que esta página descreve. Abra o workflow no n8n: quando o último salvamento dele é mais novo que a data do quadro, esta página está desatualizada até a próxima revisão. Todos os nós e todas as ligações dessa versão estão em Nós e Ligações.