Leads en Make, n8n y Zapier
Recetas para llevar cada contacto del tour a un sistema sin conector nativo: una tarjeta en Pipefy, una fila en Google Sheets o una persona y un lead en Pipedrive. GuiaFlow envía un POST https firmado. Hace falta el plan Pro.
Conectar el webhook
- Publica el tour y abre los contactos del enlace permanente. La sección Webhook está en ese diálogo.
- Pega la URL https que muestre Make, n8n o Zapier. Solo https, puerto 443, en un host público.
- Genera un secreto
whsec_…o pega el que creó el destino. Guárdalo: el valor completo no vuelve a mostrarse. - Guarda y haz clic en Enviar prueba. El evento de prueba tiene
typelead.test.
El evento activo por defecto es lead.created (formulario de apertura, source: "start", y formulario final, source: "contact"). lead.session_completed es opcional y avisa cuando la persona termina el tour, con progress.reachedStep.
Vista general del campo: Integraciones.
Qué llega en el POST
Content-Type: application/json. En lead.created, webhook-id es el id del lead y se repite en cada reintento. El teléfono viene en E.164. lead.consent trae given, el texto que vio la persona (text) y el 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": "Acepto que usen estos datos para contactarme sobre el tour.",
"at": "2026-10-25T14:00:00.000Z"
}
},
"tour": {
"slug": "checkout",
"title": "Tour del checkout",
"url": "https://guiaflow.pro/p/checkout"
},
"context": {
"referrerHost": "linkedin.com",
"utm_source": "linkedin",
"utm_medium": "social",
"utm_campaign": "lanzamiento",
"embed": false,
"device": "desktop"
}
}
Comprobar la firma
Estándar Standard Webhooks. Los tres encabezados:
| Encabezado | Uso |
|---|---|
webhook-id | Id estable del evento. Igual en cada reenvío. |
webhook-timestamp | Segundos unix de cuándo se firmó este intento. |
webhook-signature | v1, y el base64 del HMAC. Puede haber más de una, separadas por espacio. |
El contenido firmado es webhook-id + . + webhook-timestamp + . + el cuerpo crudo del POST (no vuelvas a armar el JSON). La clave es el base64 que va después de whsec_. El HMAC es SHA-256 y el resultado va en base64. Rechaza un reloj con más de 5 minutos de diferencia.
Ejemplo en Node, el mismo algoritmo del envío: 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,
});
Los modelos de n8n ya traen este paso (opción Raw Body en el webhook y el nodo Verificar assinatura). Cambia whsec_COLE_O_SEGREDO. Make y Zapier responden 200 en cuanto aceptan la llamada, antes de los módulos siguientes: no rechazan una firma inválida en la respuesta HTTP. Usa n8n o el ejemplo en Node cuando haga falta rechazar un POST falso.
Google Sheets
Una fila por contacto, en la hoja Leads. Crea la primera fila con estos encabezados, en este orden:
id, criado_em, origem, nome, email, telefone, mensagem, tour, url, utm_source, utm_medium, utm_campaign, referrer, consentimento.
Make
- Crea un escenario. Módulo Webhooks → Custom webhook, botón Add, ponle un nombre y copia la URL en GuiaFlow.
- Guarda el webhook en el editor y haz clic en Enviar prueba. En Make, Run once para que aprenda el JSON.
- Añade Google Sheets → Add a row. Conecta la cuenta de Google, elige la hoja de cálculo y la pestaña Leads.
- Mapea cada columna:
nomesale delead.name,emaildelead.email,telefonedelead.phone(E.164),tourdetour.title,urldetour.url,iddel id del evento, losutm_*yreferrerdecontext, yconsentimentodelead.consent.given. - Activa el escenario.
Modelo HTTP, si ya tienes un token OAuth de Google con la API de Sheets: make-google-sheets.json. Impórtalo en un escenario nuevo (menú de tres puntos → Import blueprint). En el primer módulo, crea un webhook nuevo. Cambia SEU_ID_DA_PLANILHA y SEU_TOKEN_GOOGLE. La fila se añade en la pestaña Leads, en el orden de los encabezados de arriba.
n8n
- Importa n8n-google-sheets.json (menú del flujo → Import from file).
- En el nodo Verificar assinatura, pega el
whsec_…. En Acrescentar linha, conecta Google y cambiaSEU_ID_DA_PLANILHApor el id que aparece en/spreadsheets/d/en la URL de la hoja. La pestaña tiene que llamarse Leads. - Abre la URL de producción del webhook (no la de prueba) y pégala en GuiaFlow. Envía la prueba y activa el flujo.
En Zapier el disparador es Webhooks by Zapier → Catch Hook y la acción es Google Sheets → Create Spreadsheet Row. Mira Zapier.
Pipefy
Crea una tarjeta directo en una fase. El número del pipe está en la URL: https://app.pipefy.com/pipes/123456. Los ids de la fase y de los campos salen de esta query (token de app.pipefy.com/tokens o cuenta de servicio, que es el camino recomendado en producción):
{
pipe(id: 123456) {
name
phases { id name }
start_form_fields { id label required type }
}
}
POST https://api.pipefy.com/graphql con Authorization: Bearer y el token. La documentación de la mutation es createCard.
Make
- Importa make-pipefy.json. En el webhook, haz clic en Add y copia la URL en GuiaFlow.
- En el módulo HTTP, cambia
SEU_TOKEN_PIPEFY. En el cuerpo,pipeyphaseestán en"0": pon los ids. Losfield_idde ejemplo sonnome,emailytelefone— usa los ids de la query e incluye los campos obligatorios del formulario inicial. - Envía la prueba desde el editor. La respuesta tiene que traer
data.createCard.card.id. Si vieneerrors, la tarjeta no se creó. - Activa el escenario. Se puede hacer lo mismo con el módulo Pipefy → Create a Card, eligiendo el pipe y la fase en la lista y mapeando
lead.name,lead.emailylead.phone.
n8n
- Importa n8n-pipefy.json.
- Pega el secreto en el nodo de la firma. En el nodo Criar card, cambia el token,
pipe,phasey losfield_id. - Pega la URL de producción en GuiaFlow, envía la prueba y activa.
En Zapier: Webhooks by Zapier → Catch Hook, después Pipefy → Create Card.
Pipedrive
Crea la persona en la API v2 y un lead ligado a ella (POST /api/v1/leads). El host es el de tu cuenta, el mismo de la barra del navegador: https://SUA_EMPRESA.pipedrive.com. El token está en Preferencias personales → API y va en el encabezado x-api-token. Referencia: personas (v2) y leads.
Make
- Importa make-pipedrive.json. Crea el webhook en el primer módulo y pega la URL en GuiaFlow.
- En los dos módulos HTTP, cambia
SUA_EMPRESAySEU_TOKEN_PIPEDRIVE. El segundo módulo lee eldata.idde la persona creada y guarda el id del lead de GuiaFlow enorigin_id. - Si el contacto llega sin correo o sin teléfono, borra el array vacío correspondiente en el cuerpo de la persona. Envía la prueba y revisa la persona y el lead en Pipedrive.
- El mismo flujo existe en los módulos Pipedrive → Create a Person y Create a Lead, mapeando nombre, correo y teléfono.
n8n
- Importa n8n-pipedrive.json.
- Pega el secreto. En los nodos Criar pessoa y Criar lead, cambia el subdominio y el token.
- URL de producción en GuiaFlow, prueba y activación.
En Zapier: Webhooks by Zapier → Catch Hook, después Pipedrive → Create Person. Un paso siguiente puede crear el lead con el id de la persona.
Zapier
Zapier entra por el disparador Webhooks by Zapier, evento Catch Hook. No hay un conector con el nombre GuiaFlow.
- Crea un Zap. En el disparador, elige Webhooks by Zapier → Catch Hook y copia la URL en el webhook del tour.
- En el editor de GuiaFlow, guarda y haz clic en Enviar prueba. En Zapier, prueba el disparador para que muestre los campos
lead,tourycontext. - La acción depende del destino: Google Sheets → Create Spreadsheet Row, Pipefy → Create Card o Pipedrive → Create Person. Mapea nombre, correo, teléfono y el título del tour.
- Publica el Zap.
Catch Hook no comprueba el HMAC. Para rechazar un POST sin firma válida, usa el modelo de n8n o verify-signature.mjs.
Entrega y reintentos
- GuiaFlow espera como máximo 5 segundos y no sigue redirecciones. Una respuesta 2xx cuenta como entregada.
- Si la llamada falla, el mismo mensaje se reenvía con el mismo
webhook-idy una firma nueva. Los intervalos después del intento inmediato son 1 minuto, 5 minutos, 30 minutos, 2 horas y 12 horas. - Unas 20 fallas seguidas apagan el webhook. Guardar de nuevo, o girar el secreto, pone el conteo en cero.
- Un destino que responde 200 y solo después graba la tarjeta puede duplicar el contacto si la grabación pasa de 5 segundos: GuiaFlow lo intenta otra vez. El
iddel lead es la clave para reconocer el duplicado.
Dudas: [email protected].