Integração Gmail
O Gmail é a plataforma de email mais utilizada no mundo, e a integração com n8n permite automatizar processos de comunicação, criar workflows de email marketing e gerenciar correspondências de forma inteligente.
Visão Geral
A integração n8n-Gmail oferece:
- Envio automático de emails baseado em eventos
- Processamento de emails recebidos com filtros inteligentes
- Automação de respostas e follow-ups
- Integração com CRM e sistemas de vendas
- Email marketing automatizado com personalização
- Monitoramento de caixa de entrada e alertas
Configuração
1. Configurar Google Cloud Project
- Acesse console.cloud.google.com
- Crie um novo projeto ou selecione um existente
- Ative a Gmail API
- Configure a tela de consentimento OAuth
2. Criar Credenciais OAuth 2.0
- Vá para "APIs & Services" > "Credentials"
- Clique em "Create Credentials" > "OAuth 2.0 Client IDs"
- Configure o tipo de aplicação (Web application)
- Adicione URIs de redirecionamento autorizados
- Copie o Client ID e Client Secret
3. Configurar Credenciais no n8n
- No n8n, vá para Settings > Credentials
- Clique em "Add Credential"
- Selecione "Gmail"
- Insira o Client ID e Client Secret
- Autorize o acesso à conta Gmail
4. Permissões Necessárias
O app solicitará as seguintes permissões:
- Read and send emails - Ler e enviar emails
- Manage drafts and send emails - Gerenciar rascunhos
- View and modify but not delete your email - Visualizar e modificar emails
- View your email address - Visualizar endereço de email
Nós Disponíveis
1. Gmail Trigger
Dispara workflows baseado em eventos do Gmail.
Eventos disponíveis:
- Novo email recebidomessageReceived
- Email enviadomessageSent
- Rascunho criadodraftCreated
- Label adicionadalabelAdded
Configuração:
{
"event": "messageReceived",
"filters": {
"from": "cliente@exemplo.com",
"subject": "pedido",
"hasAttachment": true
}
}
2. Send Email
Envia emails através do Gmail.
Configuração básica:
{
"to": "destinatario@exemplo.com",
"subject": "Confirmação de Pedido",
"text": "Seu pedido foi confirmado com sucesso!",
"html": "<h1>Pedido Confirmado</h1><p>Obrigado pela compra!</p>"
}
Configuração avançada:
{
"to": "{{ $json.email }}",
"cc": "gerente@empresa.com",
"bcc": "admin@empresa.com",
"subject": "Pedido #{{ $json.pedido_id }} - {{ $json.status }}",
"html": "{{ $('Template Node').json.html_template }}",
"attachments": [
{
"name": "fatura.pdf",
"data": "{{ $binary.fatura.data }}"
}
]
}
3. Get Emails
Busca emails da caixa de entrada com filtros.
Configuração:
{
"query": "from:cliente@exemplo.com subject:pedido",
"maxResults": 10,
"includeAttachments": true
}
4. Reply to Email
Responde automaticamente a emails.
Configuração:
{
"messageId": "{{ $json.id }}",
"text": "Recebemos sua mensagem e responderemos em breve.",
"html": "<p>Obrigado pelo contato!</p>"
}
Casos de Uso Práticos
1. Sistema de Suporte Automatizado
Cenário: Processamento automático de tickets de suporte via email.
Configuração do Trigger:
{
"event": "messageReceived",
"filters": {
"to": "suporte@empresa.com",
"subject": "suporte OR ajuda OR problema"
}
}
Configuração da Auto-Resposta:
{
"messageId": "{{ $json.id }}",
"html": `
<h2>Ticket Recebido</h2>
<p>Olá {{ $json.from.name }},</p>
<p>Recebemos sua solicitação de suporte e criamos o ticket #{{ $json.ticket_id }}.</p>
<p><strong>Assunto:</strong> {{ $json.subject }}</p>
<p><strong>Prioridade:</strong> {{ $json.prioridade }}</p>
<p>Nossa equipe entrará em contato em até 24 horas.</p>
<p>Atenciosamente,<br>Equipe de Suporte</p>
`
}
2. Email Marketing Automatizado
Cenário: Sequência de emails para leads qualificados.
Configuração do Email:
{
"to": "{{ $json.email }}",
"subject": "{{ $json.nome }}, conheça nossa solução!",
"html": `
<div style="font-family: Arial, sans-serif;">
<h1>Olá {{ $json.nome }}!</h1>
<p>Obrigado por se interessar pela nossa solução.</p>
<p>Baseado no seu perfil, acreditamos que podemos ajudar com:</p>
<ul>
<li>{{ $json.interesse_1 }}</li>
<li>{{ $json.interesse_2 }}</li>
</ul>
<p><a href="{{ $json.link_demo }}">Agendar Demonstração</a></p>
</div>
`
}
3. Processamento de Pedidos
Cenário: Confirmação automática de pedidos recebidos por email.
Configuração da Extração:
// Code Node - Extrair dados do email
const emailBody = $json.body;
const pedidoRegex = /pedido[:\s]*#?(\d+)/i;
const valorRegex = /valor[:\s]*R?\$?\s*([\d,]+\.?\d*)/i;
const pedidoMatch = emailBody.match(pedidoRegex);
const valorMatch = emailBody.match(valorRegex);
return {
pedido_id: pedidoMatch ? pedidoMatch[1] : null,
valor: valorMatch ? parseFloat(valorMatch[1].replace(',', '.')) : null,
cliente_email: $json.from.email,
cliente_nome: $json.from.name,
status: 'pendente'
};
4. Monitoramento de Caixa de Entrada
Cenário: Alertas quando emails importantes são recebidos.
Configuração do Filtro:
{
"event": "messageReceived",
"filters": {
"subject": "urgente OR emergência OR crítico",
"from": "gerente@empresa.com OR diretor@empresa.com"
}
}
Expressões e Data Mapping
Emails Dinâmicos
// Email personalizado baseado em dados
{
"to": "{{ $json.email }}",
"subject": "{{ $json.nome }}, seu pedido #{{ $json.pedido_id }} foi processado",
"html": `
<h1>Olá {{ $json.nome }}!</h1>
<p>Seu pedido foi processado com sucesso.</p>
<p><strong>Valor:</strong> R$ {{ $json.valor.toFixed(2) }}</p>
<p><strong>Prazo de entrega:</strong> {{ $json.prazo_entrega }}</p>
`
}
Templates Condicionais
// Template baseado no status
const template = $json.status === 'aprovado'
? $('Template Aprovado').json.html
: $('Template Pendente').json.html;
return {
"to": $json.email,
"subject": `Pedido ${$json.status.toUpperCase()}`,
"html": template
};
Filtros Dinâmicos
// Filtro baseado em horário
const hora = $now.getHours();
const filtroHora = hora >= 9 && hora <= 18 ? 'normal' : 'urgente';
return {
"query": `from:cliente@exemplo.com subject:${filtroHora}`,
"maxResults": 5
};
Tratamento de Erros
Retry para Falhas de Envio
// Configuração de retry
{
"maxTries": 3,
"waitBetweenTries": 5000,
"continueOnFail": false
}
Fallback para Outros Canais
Boas Práticas
1. Organização de Labels
- Automação - Emails processados automaticamente
- Suporte - Tickets de suporte
- Vendas - Leads e oportunidades
- Financeiro - Faturas e pagamentos
- Urgente - Requer atenção imediata
2. Templates de Email
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{{ subject }}</title>
</head>
<body style="font-family: Arial, sans-serif; line-height: 1.6;">
<div style="max-width: 600px; margin: 0 auto; padding: 20px;">
<header style="background: #f8f9fa; padding: 20px; text-align: center;">
<h1 style="color: #333;">{{ empresa_nome }}</h1>
</header>
<main style="padding: 20px;">
{{ conteudo }}
</main>
<footer style="background: #f8f9fa; padding: 20px; text-align: center; font-size: 12px; color: #666;">
<p>{{ footer_texto }}</p>
</footer>
</div>
</body>
</html>
3. Rate Limiting
// Respeitar limites do Gmail
{
"maxEmailsPerDay": 500,
"waitBetweenEmails": 1000, // 1 segundo
"batchSize": 10
}
4. Privacidade e Compliance
- Não envie dados sensíveis por email
- Respeite leis de proteção de dados (LGPD)
- Implemente unsubscribe em emails marketing
- Monitore logs de envio
Troubleshooting
Problemas Comuns
Erro: "Invalid credentials"
- Verifique se as credenciais OAuth estão corretas
- Reautorize o acesso à conta Gmail
- Confirme se o app tem as permissões necessárias
Erro: "Quota exceeded"
- Reduza a frequência de envio
- Implemente rate limiting
- Use contas diferentes para diferentes tipos de email
Erro: "Message not found"
- Verifique se o messageId está correto
- Confirme se o email ainda existe na caixa de entrada
- Use IDs relativos em vez de absolutos
Debugging
// Log para debugging
console.log('Gmail Debug:', {
to: $json.to,
subject: $json.subject,
timestamp: $now,
status: 'sending'
});
Integração com Outros Nós
Fluxo Completo
Exemplo de Workflow Completo
// 1. Gmail Trigger - Novo email
{
"event": "messageReceived",
"filters": {
"to": "vendas@empresa.com"
}
}
// 2. Code Node - Extrair lead
const email = $json;
const lead = {
nome: email.from.name,
email: email.from.email,
telefone: extrairTelefone(email.body),
interesse: extrairInteresse(email.subject),
origem: 'email',
data_recebimento: $now
};
return lead;
// 3. Database - Salvar lead
{
"operation": "insert",
"table": "leads",
"data": $json
}
// 4. Slack - Notificar equipe
{
"channel": "#vendas",
"text": `🎯 Novo lead via email: ${$json.nome} (${$json.email})`
}
// 5. Gmail - Auto-resposta
{
"messageId": "{{ $('Gmail Trigger').json.id }}",
"html": `
<p>Olá {{ $json.nome }},</p>
<p>Recebemos sua mensagem e entraremos em contato em breve!</p>
`
}
Referências
- Gmail Trigger - Triggers baseados em eventos do Gmail
- Code Node - Processamento customizado de emails
- Database Nodes - Armazenamento de dados de email
- Error Handling - Tratamento de erros em workflows
Esta documentação está em processo de validação. Os exemplos práticos e configurações de nós apresentados precisam ser testados e validados em ambientes reais. A intenção é sempre fornecer práticas e exemplos que funcionem corretamente em produção. Se encontrar inconsistências ou problemas, por favor, reporte para que possamos melhorar a qualidade da documentação.
Dica: Use a integração Gmail para criar workflows de comunicação automatizados que melhoram a experiência do cliente e aumentam a eficiência da sua equipe. Lembre-se de sempre testar seus templates de email antes de usar em produção.