Leads no Make, n8n e Zapier
Receitas para levar cada contato do tour a um sistema sem conector nativo: um card no Pipefy, uma linha no Google Sheets ou uma pessoa e um lead no Pipedrive. O GuiaFlow faz um POST https assinado. O plano Pro é necessário.
Se o cliente usa LeadPronto, RD Station ou HubSpot, prefira o conector nativo. Este guia cobre o resto.
Ligar o webhook
- Publique o tour e abra os contatos do link permanente. A seção Webhook fica nesse diálogo.
- Cole a URL https que o Make, o n8n ou o Zapier mostrar. Só https, porta 443, em host público.
- Gere um segredo
whsec_…ou cole o que o destino criou. Guarde: ele não volta a aparecer inteiro. - Salve e clique em Enviar teste. O evento de teste tem
typelead.test.
O evento ligado por padrão é lead.created (formulário de abertura, source: "start", e formulário final, source: "contact"). lead.session_completed é opcional e avisa quando a pessoa termina o tour, com progress.reachedStep.
Visão geral do campo: Integrações.
O que chega no POST
Content-Type: application/json. O webhook-id do lead.created é o id do lead e se repete em todas as tentativas. O telefone vem em E.164. lead.consent traz given, o texto visto (text) e o instante (at).
{
"type": "lead.created",
"id": "6f1c0e2a-4b7d-4e0a-9c3d-1a2b3c4d5e6f",
"createdAt": "2026-10-25T14:00:00.000Z",
"source": "start",
"lead": {
"name": "Ana Souza",
"email": "[email protected]",
"phone": "+5511999999999",
"message": null,
"lang": "pt",
"consent": {
"given": true,
"text": "Aceito que usem estes dados para entrar em contato sobre o tour.",
"at": "2026-10-25T14:00:00.000Z"
}
},
"tour": {
"slug": "checkout",
"title": "Tour do checkout",
"url": "https://guiaflow.pro/p/checkout"
},
"context": {
"referrerHost": "linkedin.com",
"utm_source": "linkedin",
"utm_medium": "social",
"utm_campaign": "lancamento",
"embed": false,
"device": "desktop"
}
}
Conferir a assinatura
Padrão Standard Webhooks. Os três cabeçalhos:
| Cabeçalho | Uso |
|---|---|
webhook-id | Id estável do evento. Igual em cada reenvio. |
webhook-timestamp | Segundos unix de quando esta tentativa foi assinada. |
webhook-signature | v1, e o base64 do HMAC. Pode haver mais de uma, separadas por espaço. |
O conteúdo assinado é webhook-id + . + webhook-timestamp + . + o corpo cru do POST (não monte o JSON de novo). A chave é o base64 que vem depois de whsec_. O HMAC é SHA-256 e o resultado vai em base64. Recuse relógio com mais de 5 minutos de diferença.
Exemplo em Node, o mesmo algoritmo do envio: verify-signature.mjs.
import { verifyStandardWebhook } from "./verify-signature.mjs";
const raw = await readRawBody(req);
const ok = verifyStandardWebhook({
secret: process.env.GUIAFLOW_WEBHOOK_SECRET,
id: req.headers["webhook-id"],
timestamp: req.headers["webhook-timestamp"],
signature: req.headers["webhook-signature"],
body: raw,
});
Os modelos do n8n já trazem esse passo (opção Raw Body no webhook e o nó Verificar assinatura). Troque whsec_COLE_O_SEGREDO. O Make e o Zapier respondem 200 assim que aceitam a chamada, antes dos módulos seguintes: eles não recusam uma assinatura inválida na resposta HTTP. Use o n8n ou o exemplo em Node quando precisar recusar um POST forjado.
Google Sheets
Uma linha por contato, na aba Leads. Crie a primeira linha com estes cabeçalhos, nesta ordem:
id, criado_em, origem, nome, email, telefone, mensagem, tour, url, utm_source, utm_medium, utm_campaign, referrer, consentimento.
Make
- Crie um cenário. Módulo Webhooks → Custom webhook, botão Add, dê um nome e copie a URL para o GuiaFlow.
- Salve o webhook no editor e clique em Enviar teste. No Make, Run once para ele aprender o JSON.
- Adicione Google Sheets → Add a row. Conecte a conta Google, escolha a planilha e a aba Leads.
- Mapeie cada coluna:
nomevem delead.name,emaildelead.email,telefonedelead.phone(E.164),tourdetour.title,urldetour.url,iddo id do evento, osutm_*ereferrerdecontext, econsentimentodelead.consent.given. - Ative o cenário.
Modelo HTTP, se você já tem um token OAuth do Google com a API Sheets: make-google-sheets.json. Importe em um cenário novo (menu de três pontos → Import blueprint). No primeiro módulo, crie um webhook novo. Troque SEU_ID_DA_PLANILHA e SEU_TOKEN_GOOGLE. A linha é acrescentada na aba Leads, na ordem dos cabeçalhos acima.
n8n
- Importe n8n-google-sheets.json (menu do fluxo → Import from file).
- No nó Verificar assinatura, cole o
whsec_…. No nó Acrescentar linha, conecte o Google e troqueSEU_ID_DA_PLANILHApelo id que aparece em/spreadsheets/d/na URL da planilha. A aba tem de se chamar Leads. - Abra a URL de produção do webhook (não a de teste) e cole no GuiaFlow. Envie o teste e ative o fluxo.
No Zapier o gatilho é Webhooks by Zapier → Catch Hook e a ação é Google Sheets → Create Spreadsheet Row. Veja Zapier.
Pipefy
Cria um card direto numa fase. O número do pipe está na URL: https://app.pipefy.com/pipes/123456. Os ids da fase e dos campos saem desta query (token de app.pipefy.com/tokens ou conta de serviço, que é o caminho recomendado em produção):
{
pipe(id: 123456) {
name
phases { id name }
start_form_fields { id label required type }
}
}
POST https://api.pipefy.com/graphql com Authorization: Bearer e o token. A documentação da mutation é a createCard.
Make
- Importe make-pipefy.json. No webhook, clique em Add e copie a URL para o GuiaFlow.
- No módulo HTTP, troque
SEU_TOKEN_PIPEFY. No corpo,pipeephaseestão"0": coloque os ids. Osfield_idde exemplo sãonome,emailetelefone— use os ids da query, e inclua os campos obrigatórios do formulário inicial. - Envie o teste pelo editor. A resposta precisa ter
data.createCard.card.id. Se viererrors, o card não foi criado. - Ative o cenário. Dá para fazer o mesmo com o módulo Pipefy → Create a Card, escolhendo o pipe e a fase na lista e mapeando
lead.name,lead.emailelead.phone.
n8n
- Importe n8n-pipefy.json.
- Cole o segredo no nó de assinatura. No nó Criar card, troque o token,
pipe,phasee osfield_id. - Cole a URL de produção no GuiaFlow, envie o teste e ative.
No Zapier: Webhooks by Zapier → Catch Hook, depois Pipefy → Create Card.
Pipedrive
Cria a pessoa na API v2 e um lead ligado a ela (POST /api/v1/leads). O host é o da sua conta, o mesmo da barra do navegador: https://SUA_EMPRESA.pipedrive.com. O token fica em Configurações pessoais → API e vai no cabeçalho x-api-token. Referência: pessoas (v2) e leads.
Make
- Importe make-pipedrive.json. Crie o webhook no primeiro módulo e cole a URL no GuiaFlow.
- Nos dois módulos HTTP, troque
SUA_EMPRESAeSEU_TOKEN_PIPEDRIVE. O segundo módulo lê odata.idda pessoa criada e grava o id do lead do GuiaFlow emorigin_id. - Se o contato vier sem e-mail ou sem telefone, apague o array vazio correspondente no corpo da pessoa. Envie o teste e confira a pessoa e o lead no Pipedrive.
- O mesmo fluxo existe nos módulos Pipedrive → Create a Person e Create a Lead, mapeando nome, e-mail e telefone.
n8n
- Importe n8n-pipedrive.json.
- Cole o segredo. Nos nós Criar pessoa e Criar lead, troque o subdomínio e o token.
- URL de produção no GuiaFlow, teste e ativação.
No Zapier: Webhooks by Zapier → Catch Hook, depois Pipedrive → Create Person. Um passo seguinte pode criar o lead com o id da pessoa.
Zapier
O Zapier entra pelo gatilho Webhooks by Zapier, evento Catch Hook. Não há conector com o nome GuiaFlow.
- Crie um Zap. No gatilho, escolha Webhooks by Zapier → Catch Hook e copie a URL para o webhook do tour.
- No editor do GuiaFlow, salve e clique em Enviar teste. No Zapier, teste o gatilho para ele mostrar os campos
lead,tourecontext. - A ação depende do destino: Google Sheets → Create Spreadsheet Row, Pipefy → Create Card ou Pipedrive → Create Person. Mapeie nome, e-mail, telefone e o título do tour.
- Publique o Zap.
O Catch Hook não confere o HMAC. Para recusar um POST sem assinatura válida, use o modelo do n8n ou verify-signature.mjs.
Entrega e novas tentativas
- O GuiaFlow espera no máximo 5 segundos e não segue redirect. Resposta 2xx conta como entregue.
- Se a chamada falha, a mesma mensagem é reenviada com o mesmo
webhook-ide uma assinatura nova. Os intervalos depois da tentativa imediata são 1 minuto, 5 minutos, 30 minutos, 2 horas e 12 horas. - Cerca de 20 falhas seguidas desligam o webhook. Salvar de novo, ou girar o segredo, zera a contagem.
- Um destino que responde 200 e só depois grava o card pode duplicar o contato se a gravação estourar os 5 segundos: o GuiaFlow tenta outra vez. O
iddo lead é a chave para reconhecer o duplicado.
Dúvidas: [email protected].