Como montar um workflow de vendas usando n8n e APIs externas

Como montar um workflow de vendas usando n8n e APIs externas
Resumo:
Este artigo mostra, passo a passo, como construir um fluxo de vendas automatizado usando a plataforma low‑code n8n. Você vai conectar um CRM (HubSpot), uma ferramenta de e‑mail marketing (SendGrid) e um gateway de pagamento (Stripe) exclusivamente por meio de APIs REST e webhooks, garantindo que a equipe de marketing digital tenha dados em tempo real e menos tarefas manuais.
Introdução
A automação de processos empresariais deixou de ser um diferencial e se tornou uma necessidade. Quando o funil de vendas depende de várias ferramentas – captura de leads, nutrição por e‑mail, validação de pagamento e registro no CRM – a coordenação manual gera atrasos, erros e perda de oportunidades.
Por que usar n8n?
- Open‑source: sem custos de licença e com possibilidade de hospedagem própria.
- Flexibilidade: suporta centenas de conectores nativos e permite criar nós personalizados em JavaScript ou Python.
- Visibilidade: a interface gráfica segue a notação BPMN (Business Process Model and Notation), facilitando a comunicação entre TI e áreas de negócio.
Ao final, você terá um workflow pronto para ser reproduzido em outros projetos de marketing digital.
Desenvolvimento
1. Conceitos básicos de orquestração de processos
| Conceito | Descrição | Exemplo no fluxo |
|---|---|---|
| Webhook | Endpoint HTTP que recebe eventos externos. | Formulário de captura de lead envia JSON para n8n. |
| API REST | Interface de comunicação baseada em recursos HTTP. | HubSpot, SendGrid e Stripe são consumidos via chamadas GET/POST. |
| BPMN | Notação visual para modelar processos de negócio. | Cada nó do n8n representa uma atividade BPMN (Task, Event, Gateway). |
| Retry/Back‑off | Estratégia de re‑tentativa automática em caso de falha. | n8n permite definir número máximo de tentativas e intervalo exponencial. |
| Logging centralizado | Registro estruturado de eventos para auditoria. | Utilizamos o nó “Write Binary File” para salvar logs em S3. |
Esses pilares garantem que o fluxo seja resiliente, auditável e escável sem exigir código complexo.
2. Por que escolher n8n como engine low‑code
| Recurso | n8n | Alternativas populares |
|---|---|---|
| Código aberto | Sim – hospedagem própria ou cloud n8n.io | Zapier (SaaS proprietária) |
| Customização | Nodes em JavaScript, Python, ou Docker | Integromat (limitado a scripts) |
| Escalabilidade | Deploy em Kubernetes, Docker Swarm ou serverless | Power Automate (dependente de licenças) |
| Preço | Gratuito até 2M de execuções/mês (auto‑hosted) | Planos pagos a partir de US$ 20/mês |
| Comunidade | 3k+ contribuições no GitHub, plugins criados por usuários | Marketplace fechado |
Além disso, o n8n oferece credenciais seguras (OAuth2, API Key) que podem ser reutilizadas em vários fluxos, reduzindo a exposição de segredos.
3. Construindo o fluxo de vendas end‑to‑end
3.1. Preparação do ambiente
docker run -d --name n8n \
-p 5678:5678 \
-v ~/.n8n:/root/.n8n \
n8nio/n8n
A interface ficará disponível em http://localhost:5678.
- HubSpot OAuth2 (clientId, clientSecret, refreshToken) - SendGrid API Key - Stripe Secret Key
3.2. Modelando o workflow
A seguir, a estrutura lógica (em BPMN) do fluxo:
Start Event (Webhook) → Task (HubSpot) → Task (SendGrid) → Parallel Gateway
↘︎ ↙︎
Task (Stripe Checkout) Task (Log to S3)
↘︎ ↙︎
End Event (Payment webhook) → Task (HubSpot Update)
3.3. Passo a passo no n8n
3.3.1. Webhook de captura de lead
- Node: Webhook
- Método: POST
- Path:
/lead-capture
{
"email": "joao.silva@example.com",
"nome": "João Silva",
"empresa": "Acme Corp",
"produto_interesse": "SaaS Analytics"
}
3.3.2. Criação/atualização no HubSpot
- Node: HubSpot → “Create or Update Contact”
- Mapeamento:
email → email
- nome → firstname
- empresa → company
- produto_interesse → custom_property_product_interest
// Exemplo de expressão n8n (JavaScript) para garantir que o contato exista
{{ $json.email ? $json.email : '' }}
3.3.3. Envio de e‑mail de boas‑vindas via SendGrid
- Node: SendGrid → “Send Email”
- From:
marketing@empresa.com - To:
{{$json.email}} - Subject: “Obrigado pelo seu interesse, {{ $json.nome }}!”
- HTML Content:
<p>Olá {{ $json.nome }},</p>
<p>Obrigado por se interessar pelo nosso {{ $json.produto_interesse }}. Clique no link abaixo para concluir a compra:</p>
<p><a href="{{ $node["Stripe Checkout"].json.url }}">Finalizar pagamento</a></p>
<p>Qualquer dúvida, responda este e‑mail.</p>
3.3.4. Criação da sessão de checkout no Stripe
- Node: HTTP Request (POST)
- URL:
https://api.stripe.com/v1/checkout/sessions - Auth: Bearer Token (Stripe Secret Key)
- Body (JSON):
{
"payment_method_types": ["card"],
"line_items": [
{
"price_data": {
"currency": "brl",
"product_data": {
"name": "{{ $json.produto_interesse }}"
},
"unit_amount": 19900
},
"quantity": 1
}
],
"mode": "payment",
"success_url": "https://empresa.com/sucesso?session_id={CHECKOUT_SESSION_ID}",
"cancel_url": "https://empresa.com/cancelado"
}
- Output: O campo
urlretornado será usado no e‑mail enviado anteriormente.
3.3.5. Webhook de confirmação de pagamento (Stripe)
Crie um novo Webhook no n8n com path /stripe-webhook. No painel Stripe, adicione esse endpoint e selecione o evento checkout.session.completed.
- Node: Webhook → “Stripe Checkout Completed”
- Payload: Contém
session_id,customer_email,amount_total.
3.3.6. Atualização do status no HubSpot
- Node: HubSpot → “Update Contact”
- Search by:
email = {{$json.customer_email}} - Set property:
lead_status = "Cliente"
3.3.7. Log centralizado (opcional)
- Node: Write Binary File → Salva o JSON completo da transação em um bucket S3 (ou bucket MinIO).
- Configuração: Bucket →
sales-logs, Key →{{ $now.format("YYYY/MM/DD") }}/{{ $json.session_id }}.json.
3.4. Testando o fluxo
curl:
curl -X POST http://localhost:5678/webhook/lead-capture \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","nome":"Teste Usuário","empresa":"Demo Ltda","produto_interesse":"Plataforma X"}'
4242 4242 4242 4242. 

