B2B Revenue Autopilot Kit

Guía técnica · 17 de octubre de 2026 · 11 min de lectura

Generación de leads con n8n: las cinco etapas de un flujo que corre solo

Casi todas las plantillas de «prospección con IA» se rompen en los mismos tres puntos: el precio de la API de mapas, la memoria del nodo de duplicados y el modelo devolviendo algo que no es JSON. Esta es la arquitectura que sobrevive a los tres, con los números que medimos en una corrida real.

Qué tiene que hacer el flujo, en realidad

Sin marketing, prospectar a mano son cinco pasos repetidos por una persona: encontrar negocios candidatos, decidir cuáles tienen un problema visible, anotar por qué vale la pena contactarlos, redactar el primer mensaje y dejar el resultado donde un CRM pueda leerlo. Cada uno de esos pasos es un nodo.

El flujo de abajo es un scheduleTrigger con 13 nodos ejecutables. Corre a las 08:00, produce una hoja y un CSV, y no le escribe a nadie: el envío queda manual y tuyo, por diseño.

Etapa 1 — Encontrar candidatos sin sobrepagar el mapa

Usa Places API (New) con el endpoint places:searchText. La API antigua está cerrada a clientes nuevos desde 2025, así que la mitad de los tutoriales que encuentres apuntan a un endpoint que responde 403 en un proyecto nuevo de Google Cloud.

El detalle importante y poco documentado es que la máscara de campos define el precio. Google factura la SKU más alta presente en la respuesta. Pide displayName y formattedAddress y estás en Essentials. Agrega rating y estás en Pro. Agrega nationalPhoneNumber o websiteUri y estás en Enterprise, a USD 35 por 1.000 solicitudes en vez de gratis.

X-Goog-FieldMask: places.id,places.displayName,places.formattedAddress,
  places.primaryTypeDisplayName,places.rating,places.userRatingCount,
  places.businessStatus,places.nationalPhoneNumber,places.websiteUri

Es a propósito. Una lista de nombres sin teléfono ni web no es una lista de leads: es un directorio. Los dos campos que hacen contactable a un prospecto son justamente los dos que te suben a Enterprise, así que presupuesta eso en lugar de llevarte la sorpresa:

Leads buscadosSolicitudesCosto PlacesCosto IATotal
60 (una corrida diaria)30,1050,0030,11
1.000501,750,0561,81
10.0005000 (tramo gratis)0,560,56
20.0001.0000 (tramo gratis)1,121,12
100.0005.000140,005,60145,60

USD, medido el 16/10/2026: tramo Enterprise de Google Text Search (las primeras 1.000 solicitudes del mes son gratis, lo que cubre unos 20.000 leads) y deepseek-flash con 660 tokens de entrada y ~120 de salida por lead. Los precios de los proveedores cambian: re-verifica antes de un mes grande.

La paginación es donde vive la segunda sorpresa. Google pide un par de segundos entre páginas antes de que nextPageToken sea válido; pagina a toda velocidad y la API responde 400. El nodo HTTP Request de n8n tiene paginación nativa: pon Max Requests en 3 y un requestInterval de 2000 ms. Tres páginas × 20 resultados = 60 negocios por corrida, y el bucle se detiene solo cuando la respuesta deja de traer token.

Etapa 2 — Normalizar a una fila por negocio

Nunca dejes que la forma de la respuesta de una API se filtre al resto del flujo. Un solo nodo Code aplana cada lugar a una fila fija: placeId, nombre, dirección, rubro, calificación, cantidad de reseñas, teléfono, web, y una pequeña heurística de brecha digital calculada con esos campos — sin web propia, sitio solo móvil, pocas reseñas, cerrado permanentemente. Esa heurística no es el puntaje final: es un prior barato que mantiene honesto al modelo caro.

Etapa 3 — Deduplicar (sabiendo que este nodo recuerda)

El nodo removeDuplicates con la operación Remove Items Seen in Previous Executions guarda las claves que ya vio, por workflow, en la base de datos de la instancia — no en la ejecución. Esa es la función que quieres: una corrida diaria no debe volver a mandar al CRM los leads de ayer.

También es la razón más común por la que una plantilla «funciona una vez y después no devuelve nada». Segunda corrida, mismos datos, 0 items, la cadena se detiene. Si estás depurando exactamente eso, la explicación completa y el remedio de un clic están en el post-mortem del dedupe.

Etapa 4 — Puntuar y redactar con un modelo, en lotes

Un solo nodo HTTP Request al modelo, en lotes de 4 items con 1,2 s de intervalo. Dos ajustes importan más que el prompt:

El prompt debe devolver el id que recibió, y el nodo Code siguiente debe reconstruir el mapa placeId → negocio en vez de confiar en el orden de los items. Las respuestas por lote vuelven desordenadas, parciales o no vuelven; emparejar por identificador hace el flujo determinista igual.

{
  "places": [
    { "id": "ChIJ...", "score": 78, "senales": ["sin web propia", "3 resenas"],
      "dolor": "no aparece al buscar su servicio",
      "pitch": "Hola, vi que ..." }
  ]
}

Y envuelve el parseo en try/catch. Perder un lead de un lote es barato; perder la corrida completa de 60 leads porque la salida número 41 traía una coma de más no lo es.

Etapa 5 — Ramificar salidas y filtrar con un umbral

Un nodo if compara el puntaje del modelo con un minScore que configuras una vez. Arriba: Google Sheets, luego CSV y, opcionalmente, un webhook a tu CRM. Abajo: un no-op para poder contar los descartes y ver si tu rúbrica está calibrada. Las salidas cuelgan en paralelo de la misma rama, así que puedes desactivar Sheets sin romper el CSV.

Empieza con minScore en 60 y súbelo a 70 cuando tengas una semana de salida real. Subirlo no cuesta nada y ahorra tokens; bajarlo es cómo terminas con 200 filas que nadie llama.

Qué verificar antes de confiar en cualquier plantilla (incluida la nuestra)

  1. Impórtala en una instancia limpia y cuenta los tipos de nodo resueltos. Un tipo que no existe en tu versión falla al importar, en silencio o con ruido según la versión.
  2. Ejecuta la lógica con los terceros simulados, para que la única variable sean tus datos.
  3. Revisa el techo de typeVersion. Un flujo hecho con un paquete más nuevo puede correr en una instancia más vieja —n8n usa la versión más nueva que tenga—, pero eso es una razón para preferir una instancia actual, no una garantía.
  4. Lee la lista de fallos antes de necesitarla. Todo workflow tiene un conjunto pequeño de fallos que va a reproducir en una máquina nueva.

Eso es lo que corrimos sobre nuestro propio kit: los dos flujos importados y ejecutados en instancias limpias de n8n 2.43.6 y n8n 1.60.0, 28/28 tipos de nodo resueltos, 13/13 y 8/8 nodos en success, y un CSV real de 1.065 bytes producido por la corrida.

Si prefieres no construirlo desde cero

El kit Starter es exactamente este flujo más el de notas de reunión a CRM, el nodo de configuración de 8 campos, un validador, un script de auto-diagnóstico y seis documentos en ES/EN — USD 49, pago único, corre en el n8n que ya tienes.

Ver qué incluye Siguiente: la rúbrica de puntaje

Relacionado: una rúbrica de puntaje que aguanta datos reales · por qué tu flujo devuelve 0 items la segunda vez · todos los artículos