O Problema do Cliente
Recentemente, fui procurado por um mentor de negócios (vamos chamá-lo de Marcio). Ele tinha um desafio clássico: precisava de um funil de vendas 100% automatizado para capturar, qualificar, agendar, nutrir e vender suas mentorias, mas com o menor custo mensal possível.
A "solução" óbvia que ele encontrou no mercado era um pesadelo de custos:
- CRM: Kommo (cerca de R$ 400/mês)
- Agendamento: Calendly Pro (para ter webhooks) (cerca de R$ 80/mês)
- Cola (O "Glue"): Zapier (em um plano pago para os fluxos complexos) (cerca de R$ 150/mês) Isso dava mais de R$ 600/mês em custos fixos antes mesmo dele fazer a primeira venda. Ele também tinha uma "dor" principal: o WhatsApp. As soluções "gratuitas" (como a Evolution API) eram um risco gigantesco de banimento que ele, como mentor, não podia correr. Ele me contratou para encontrar uma solução melhor. E nós a construímos.
A Solução: A Arquitetura "Best-of-Breed" de Baixo Custo
O herói da nossa história é o N8N (auto-hospedado). Em vez de pagar centenas de reais por mês para ferramentas "prontas", nós montamos um stack "melhor de cada categoria", onde o N8N seria o cérebro central orquestrando tudo.
Este foi o nosso "Tech Stack" final:
- Automação (O Cérebro): n8n (Self-Hosted), rodando em um container Docker.
- Servidor (O "Backend"): Hostinger VPS (KVM 1), com Ubuntu.
- Acesso/Segurança (O "Porteiro"): Nginx como Proxy Reverso + Let's Encrypt (Certbot) para HTTPS.
- Frontend (As LPs): Vite/React, hospedado em um plano simples de Hostinger Shared Hosting.
- CRM (O "Quadro de Status"): HubSpot CRM Gratuito (Substituindo o Kommo).
- Agendamento (O Gatilho): Cal.com (Gratuito) (Substituindo o Calendly Pro).
- Vendas (O Gatilho): Eduzz (via Webhook).
- Notificações (E-mail): SMTP da Hostinger (para Alertas de Erro, Boas-Vindas e Nutrição). A Implementação: A Lógica dos 3 Fluxos Com as ferramentas definidas, estruturei toda a lógica de negócios em 3 fluxos principais no N8N. Fluxo 1: Captação (Formulário ➔ HubSpot) Este fluxo é o "recepcionista". Ele captura o lead da landing page em React e o qualifica.
- Gatilho: Webhook (recebe o POST do formulário da LP).
- Ação 1 (Qualificação): Um nó IF simples checa o faturamento do lead (ex: "Até R$ 3.999").
- Ação 2 (CRM): HubSpot (Create Contact) e depois HubSpot (Create Deal). Pulo do Gato (O que eu aprendi): A API do HubSpot é poderosa, mas específica. Para o "Deal" (Negócio) aparecer no funil correto, não basta enviar o nome. Você precisa enviar o Deal Owner (ID do Proprietário), o Pipeline (ID do funil) e o Deal Stage (ID da etapa), além de associá-lo ao Contact ID (o vid) que acabamos de criar. Fluxo 2: O Maestro (Agendamento ➔ Nutrição ➔ Recuperação) Este é o fluxo mais complexo, responsável por todo o relacionamento com o lead agendado.
- Gatilho: Cal.com Trigger (o nó nativo do N8N que dispara no evento invitee.created).
- Ação 1 (CRM): Uma sequência de HubSpot (Search Contact) ➔ HubSpot (Search Deal) ➔ HubSpot (Update Deal) para mover o lead para a etapa "Agendado".
- Ação 2 (Nutrição "Início-Meio-Fim"): Um fluxo de múltiplos Wait e IF para garantir a nutrição:
- Wait Until (T-3 dias) ➔ IF (Checar se ainda agendado) ➔ Send Email (Nutrição 2).
- Wait Until (T-24h) ➔ IF (Checar se ainda agendado) ➔ Send Email (Lembrete 24h).
- Wait Until (T-1h) ➔ IF (Checar se ainda agendado) ➔ Send Email (Lembrete 1h).
- Ação 3 (Recuperação):
- Wait Until (T+3 dias) ➔ IF (Checar se o Deal NÃO é "Won") ➔ HubSpot (Update Deal) para "Perdido - Recuperação" ➔ Send Email (Recuperação 1). Pulo do Gato (O "Bug do Ramo"): Encontrei um bug clássico do N8N. Quando você tem ramos de um IF (ex: um ramo "TRUE" com um nó Wait e um "FALSE" sem) e eles se juntam, os dados do nó Wait (como startTime e invitee_name) podem se perder (dão undefined). Resolvi isso de forma simples: adicionei um nó Set no final do ramo "TRUE" para "restaurar" os dados do gatilho (ex: body = {{ $('Cal.com Trigger').item.json.body }}) antes que ele se juntasse ao ramo principal. Fluxo 3: Venda (Eduzz ➔ HubSpot) Este fluxo confirma a vitória.
- Gatilho: Webhook (recebe o POST da Eduzz quando o pagamento é aprovado).
- Ação (CRM): A sequência exata para fechar o negócio no HubSpot é: HubSpot (Search Contact) ➔ HubSpot (Get Contact) (com a Opção Associations: Deal) ➔ HubSpot (Update Deal) (para o Deal Stage: Won).
- Ação (Cliente): Send Email (Boas-vindas, com o link para a área de membros).
Os Desafios (A "Sessão da Terapia")
É aqui que o projeto fica divertido. Nada saiu perfeito de primeira.
- O "Penhasco" do WhatsApp: O cliente queria WhatsApp. Mas a Evolution API era um risco de banimento inaceitável. A API Oficial da Meta, por sua vez, bloqueou a conta dele (...cannot be assigned...). Após muita luta, tomamos a decisão de negócio correta: migrar o funil para 100% E-mail, que é mais barato, seguro e profissional.
- O "Pulo do Gato" do Custo Zero: O Calendly exigia um plano pago (Standard) só para liberar o acesso aos webhooks. O Cal.com (no plano gratuito) oferece webhooks de graça. Foi uma troca óbvia.
- O "Inferno" do Deploy da VPS: Esta foi a parte mais épica.
- Tentei usar um template "fácil" (oriondesign) que usava Docker Swarm. Ele quebrou o docker-compose (KeyError: 'ContainerConfig').
- Solução: Reinstalei a VPS com Docker limpo.
- Tentei rodar o N8N, mas o Nginx (instalado pelo painel da Hostinger) já estava usando as portas 80/443 (Address already in use).
- Solução: Tive que caçar os "processos zumbis" com sudo lsof -i :80 e "matá-los" (sudo killall -9 nginx).
- Descobri que o painel havia criado um nginx.conf que conflitava com a estrutura sites-available.
- Solução Final: Desinstalei o Nginx do painel, instalei via apt, removi o default de sites-enabled e criei o symlink (sudo ln -s /etc/nginx/sites-available/n8n.conf ...) com a linha mágica no proxy reverso: proxy_pass http://127.0.0.1:5678;. Conclusão No final, entregamos um sistema de automação robusto, de nível empresarial, que orquestra React, HubSpot, Cal.com e Eduzz. O resultado? O cliente agora roda seu funil de vendas 100% automático com custos de infraestrutura mínimos (cerca de R$ 45/mês da VPS). Ele economizou mais de R$ 600 por mês que gastaria em ferramentas SaaS prontas, e ganhou um sistema infinitamente mais flexível. Para mim, foi um aprendizado profundo sobre os bugs do N8N e, principalmente, sobre o poder de um proxy reverso Nginx bem configurado.
Top comments (0)