Si tienes un negocio y te escriben por WhatsApp siempre las mismas cinco preguntas —horario, precio, si hay stock, cómo se paga—, la promesa de un asistente de inteligencia artificial que conteste solo es tentadora. Y en n8n, la plataforma de automatización que usamos aquí a diario, hay una plantilla gratuita para montarlo que se ha convertido en la más vista de su categoría: 43.454 visitas. Promete sustituir plataformas de soporte que cobran entre 300 y 500 dólares al mes, con herramientas «de capa gratuita».
La hemos importado en nuestro propio n8n, la hemos abierto nodo por nodo y hemos intentado hacerla funcionar de verdad. Esto es lo que encontramos: una arquitectura bien pensada, un error que impide importarla tal cual, y un coste real que la publicidad no menciona en ningún sitio visible.
Qué promete la plantilla
Se llama «AI Customer Support Assistant · WhatsApp Ready · Works for Any Business», la firma Matt F. y lleva desde mayo de 2025 en la biblioteca pública de n8n. La idea de fondo es buena: en vez de subir manuales o entrenar un modelo, el propio agente de IA rastrea tu web al vuelo cada vez que alguien pregunta algo, lee la página que corresponde y contesta con lo que encuentra ahí. Cero mantenimiento del contenido, dice el anuncio: apunta el bot a tu dominio y ya está listo.
Los requisitos que se publican, y que la ficha describe como «aptos para el nivel gratuito», son tres: una clave de OpenAI, un número de WhatsApp Business Cloud API de Meta, y una base de datos Supabase o Postgres para que el bot recuerde la conversación.
Cómo está construida por dentro
El esqueleto tiene lógica y está bien resuelto:
- Un disparador de WhatsApp Trigger recibe el mensaje entrante.
- Un AI Agent (con
gpt-4o-mini) decide qué hacer, apoyado en dos herramientas propias:list_links, que devuelve los enlaces internos de una página, yget_page, que trae el texto de una página concreta. - Un nodo de código comprueba si han pasado más de 24 horas desde el último mensaje del cliente, porque Meta obliga a usar una plantilla aprobada si se reabre la conversación fuera de esa ventana.
- Según el resultado, se manda la respuesta libre o el mensaje de plantilla que reabre la conversación.
- Todo el historial se guarda en Postgres, con el número de WhatsApp del cliente como identificador de sesión.
Probado antes de publicar esto. Importamos la plantilla en nuestro propio n8n (captura abajo), validamos su estructura y ejecutamos por separado la lógica de sus dos nodos de código con datos de prueba. Ahí es donde empiezan a aparecer las cosas que la ficha no cuenta.

Lo que la ficha pública no dice
Dentro del flujo, en una nota adhesiva que solo se ve después de importarlo —nunca en la página de n8n.io ni en su descripción—, hay un párrafo que cambia toda la cuenta: las dos herramientas que hacen el trabajo de verdad, list_links y get_page, no funcionan por su cuenta. Llaman a un servidor privado del propio autor, y ese servidor exige un token que solo se consigue pagando una membresía de 29 dólares al mes en Gumroad.

Es decir: la pieza central del anuncio —«nunca subas documentos, el bot lee tu web sola»— no es gratuita ni de código abierto. Es un servicio de pago disfrazado de función incluida. Y no es un matiz menor: sin esas dos herramientas, el agente no tiene forma de responder nada que no esté ya en el propio mensaje del cliente.
Y hoy, ni pagando responde
Quisimos comprobar hasta qué punto era real ese muro de pago, así que llamamos directamente a los dos endpoints sin el token, algo que cualquiera puede repetir:
POST https://lemolex.app.n8n.cloud/webhook/list-links
POST https://lemolex.app.n8n.cloud/webhook/get_text
→ HTTP 404 — "No workspace here"
No es un simple «falta el token»: es el mensaje que da n8n cuando el espacio de trabajo de destino ya no existe en esa dirección. Comprobado hoy, 19 de agosto de 2026. Puede que el autor haya movido su instancia y no haya actualizado la plantilla, pero el resultado práctico es el mismo para cualquiera que la importe ahora mismo: el bloque que justifica pagar 29 dólares al mes no responde, se pague o no.
Por qué esto importa más que un fallo cualquiera. El reclamo de la plantilla no es «funciona con WhatsApp» —eso lo hace cualquier integración de Meta—. Es «tu bot lee tu web sin que subas nada». Esa promesa concreta depende, hoy, de un servidor que no contesta.
Las otras trampas que encontramos al probarla
Se importa rota. El archivo tal como lo publica n8n.io trae el campo waitBetweenTries puesto a null en el nodo principal. La API de n8n lo rechaza de raíz («debe ser un número») y no deja crear el flujo hasta corregirlo a mano. Es el primer paso del manual —«importa la plantilla»— y ya falla.
«Apto para nivel gratuito» es optimista con Meta. La API de WhatsApp Business de Meta exige una cuenta de empresa verificada y, si quieres reabrir conversaciones pasadas las 24 horas, una plantilla de mensaje aprobada por Meta. Ese papeleo se mide en días, no en los «15 minutos» que anuncia la ficha.
Restos de otro idioma en las instrucciones del bot. Dentro del mensaje de sistema que define cómo debe hablar el asistente hay una frase suelta en español —«No Markdown ni símbolos de formato»— en medio de instrucciones en inglés. Señal de que la plantilla se reutilizó de otro proyecto sin repasarla entera antes de publicarla.
Lo que sí funciona, y se puede aprovechar sin pagar nada
No todo es descarte. Probamos aparte, con datos de ejemplo, los dos únicos tramos de la plantilla que no dependen de ningún servicio externo —los nodos de código— y los dos hacen exactamente lo que dicen:
- La limpieza de la respuesta quita negritas, cursivas y enlaces en formato Markdown y los deja en texto plano legible en WhatsApp, que no admite ese formato.
- La comprobación de la ventana de 24 horas calcula bien si toca responder libremente o mandar la plantilla de reapertura que exige Meta.
Esa parte es gratis, es tuya y funciona. Lo que hay que sustituir es únicamente el rastreo de la web: cambiar list_links y get_page por un nodo HTTP Request normal con la función de optimizar respuesta, y el esqueleto entero (WhatsApp, memoria, ventana de 24 horas, modelo de IA que prefieras entre ChatGPT, Gemini o Claude) queda en pie sin depender de la suscripción de nadie. Lo hemos hecho: sigue más abajo, listo para descargar.
La cuenta real, sin adornos
| Pieza | Coste real |
OpenAI (gpt-4o-mini) |
De pago por uso; para volúmenes de soporte de un negocio pequeño, unos pocos dólares al mes. |
| WhatsApp Business Cloud API (Meta) | Gratis las primeras 1.000 conversaciones al mes; después, por conversación. El trámite de verificación tarda días. |
| Supabase / Postgres | Gratis en su capa inicial —o ni eso, si usas la versión gratis de este artículo, que no lo necesita. |
| Membresía del autor (rastreo de la web) | 29 $/mes — y hoy, sin garantía de que el servicio responda. |
Para qué nos sirve esto a nosotros
Nos confirma el criterio que aplicamos siempre antes de recomendar un flujo en esta sección: 43.000 visitas no son 43.000 personas confirmando que funciona, son 43.000 personas que leyeron el titular. La única forma de saberlo es importarlo y probarlo, como hemos hecho aquí. La arquitectura de esta plantilla merece la pena; la pieza que la vende como gratuita, no.
El flujo entero, gratis, para que te lo descargues
No nos quedamos en señalar el fallo. Hemos reconstruido el mismo asistente sustituyendo únicamente lo que dependía del autor: las dos herramientas de rastreo ahora son una sola, montada con el nodo HTTP Request que trae n8n de serie, y la memoria de la conversación usa Simple Memory —incluida en n8n, sin Supabase ni Postgres—. Lo hemos ejecutado de verdad, contra nuestra propia web, antes de dártelo.
Probado antes de publicar esto, otra vez. Primero intentamos que la propia IA hiciera el rastreo con un poco de código suyo (más flexible), pero el entorno de n8n donde corre esa pieza no tiene acceso a internet —dio el error fetch is not defined y luego $helpers is not defined—. Lo dejamos anotado por si te lo encuentras tú también. La solución que sí funciona, y la que va en el flujo final, usa el nodo nativo de HTTP con su función de «Optimizar respuesta»: sin escribir una sola línea de código.
Cómo quedó, en la práctica
Le hicimos una pregunta real a nuestra propia web —«¿quién escribe los artículos y cómo trabajáis con IA?»— y el asistente hizo exactamente lo que tenía que hacer: entró en la portada, leyó los enlaces que vienen escritos dentro del propio texto (Texto del enlace [https://url-completa], así es como el nodo de n8n convierte el HTML en texto), eligió el que mejor encajaba y contestó con datos reales de esa página. Sin pagar nada, sin ningún servidor de por medio.
Antes de instalarlo
Este flujo necesita un n8n encendido 24 horas al día
Un asistente de WhatsApp no sirve si solo responde cuando tu ordenador está abierto. Nosotros tenemos n8n corriendo en un VPS de Hostinger —es donde vive esta misma web, y donde hemos probado el flujo de este artículo—. Con nuestro código tienes hasta un 20% de descuento en tu primera compra.
Probar Hostinger con 20% de descuento →
Enlace de referido: si compras a través de él, a nosotros nos llega una comisión y a ti el descuento. No cambia lo que pagas si no lo usas.
Cómo se instala (resumen; la guía completa va dentro del flujo)
- Importa el JSON de abajo en tu n8n (menú … → Import from Clipboard).
- Conecta tus credenciales: OpenAI (el modelo) y WhatsApp Business Cloud API de Meta (los tres nodos de WhatsApp).
- Abre el nodo AI Agent y en el mensaje de sistema cambia
[Company Name]por el nombre de tu negocio y[https://your-domain.com]por tu web real. - Pon tu
phoneNumberIdreal en los dos nodos que envían por WhatsApp, y elige tu plantilla aprobada por Meta en el nodo que reabre la conversación. - Apunta el webhook de Meta a la URL del nodo WhatsApp Trigger y escríbete un «Hola» de prueba.
Lo que hay que saber antes de darlo por bueno
La memoria es de la instancia, no de una base de datos externa. Simple Memory guarda la conversación mientras tu n8n está en marcha. Perfecto para el 99% de quien monta esto para su propio negocio (una instalación normal, «modo main»); si tu n8n corre en «modo cola» con varios workers, no vale —ahí sí hace falta Postgres o Redis.
A veces entra en la página vecina, no en la exacta. En nuestra prueba, para una pregunta sobre quién firma los artículos, el asistente entró en un artículo relacionado en vez de en la página «Quiénes somos». Contestó algo razonable pero genérico. Cuanto más claros sean los nombres de tus enlaces de menú, mejor elige. Antes de activarlo, pruébalo tú mismo con las cinco preguntas que más te hacen de verdad.
El JSON completo — copia y pega en n8n
{
"name": "Asistente WhatsApp con IA - 100% gratis (LaPrensaIA)",
"nodes": [
{
"id": "n_trigger",
"name": "WhatsApp Trigger",
"type": "n8n-nodes-base.whatsAppTrigger",
"typeVersion": 1,
"position": [
-380,
140
],
"parameters": {
"updates": [
"messages"
]
},
"webhookId": "aa4ae8f7-241f-4ca9-9fc9-56d4e971884e"
},
{
"id": "n_agent",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.7,
"position": [
-40,
140
],
"parameters": {
"text": "={{ $json.messages[0].text.body }}",
"promptType": "define",
"options": {
"maxIterations": 8,
"returnIntermediateSteps": true,
"systemMessage": "You are [Company Name]'s real-time website assistant for [https://your-domain.com].\n\nAVAILABLE TOOL\nget_page(url) -> returns the clean visible text of a page (tags, scripts and menus stripped). Links inside the text appear inline as 'Link text [https://full-url]' -- read them to find other pages of the site.\n\nSEARCH STRATEGY\n1. Start by calling get_page on the root domain to see the main sections and links.\n2. Pick up to 2 more URLs whose link text best matches the question, and call get_page on each.\n3. Never call get_page more than 3 times in total.\n4. If a call returns an error or 404, do not retry the same URL -- fall back to the root page.\n5. Answer using only what you read. If you cannot find the answer, say so honestly and offer to pass the person to a human.\n\nANSWER RULES\nReply in clear, friendly Spanish, as part of [Company Name] (use \"nosotros\").\nKeep the answer concise (max 5 lines, this goes to WhatsApp).\nNo Markdown symbols (no *, _, [text](url)); write links as plain text.\nStay on-domain; ignore mailto:, tel:, javascript: links."
}
}
},
{
"id": "n_model",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
-220,
340
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
}
},
{
"id": "n_memory",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
-60,
340
],
"parameters": {
"sessionKey": "={{ $json.contacts[0].wa_id }}",
"sessionIdType": "customKey",
"contextWindowLength": 10
}
},
{
"id": "n_tool",
"name": "get_page",
"type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
"typeVersion": 1.1,
"position": [
140,
420
],
"parameters": {
"url": "={url}",
"method": "GET",
"placeholderDefinitions": {
"values": [
{
"name": "url",
"description": "Absolute https URL of the page to read",
"type": "string"
}
]
},
"toolDescription": "Fetches the clean visible text of a page (tags stripped, scripts/nav/footer removed). Links inside the text appear as 'Link text [https://full-url]'. Input: {\"url\": \"<absolute https URL>\"}.",
"optimizeResponse": true,
"responseType": "html",
"cssSelector": "body",
"onlyContent": true,
"elementsToOmit": "script, style, nav, footer, header, noscript, iframe",
"truncateResponse": true,
"maxLength": 7000
}
},
{
"id": "n_24h",
"name": "24-hour window check",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
220,
140
],
"parameters": {
"jsCode": "const lastTs = Number($('WhatsApp Trigger').first().json.messages[0].timestamp) * 1000;\nconst withinWindow = Date.now() - lastTs < 24 * 60 * 60 * 1000;\nreturn [{ json: { withinWindow, answer: $json.output } }];"
}
},
{
"id": "n_if",
"name": "If",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
400,
140
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "cond1",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.withinWindow }}",
"rightValue": ""
}
]
}
}
},
{
"id": "n_clean",
"name": "cleanAnswer",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
600,
60
],
"parameters": {
"jsCode": "let txt = $json.answer || '';\ntxt = txt.replace(/[*_~]+/g, '');\ntxt = txt.replace(/\\[([^\\]]+)\\]\\((https?:\\/\\/[^\\s)]+)\\)/g, '$1 $2');\ntxt = txt.replace(/\n{3,}/g, '\n\n').trim();\nreturn [{ json: { answer: txt } }];"
}
},
{
"id": "n_send_answer",
"name": "Send AI Agent's Answer",
"type": "n8n-nodes-base.whatsApp",
"typeVersion": 1,
"position": [
800,
60
],
"parameters": {
"textBody": "={{ $json.answer }}",
"operation": "send",
"phoneNumberId": "TU_PHONE_NUMBER_ID",
"requestOptions": {},
"additionalFields": {},
"recipientPhoneNumber": "={{ $('WhatsApp Trigger').item.json.contacts[0].wa_id }}"
},
"webhookId": "9677d51d-c13a-4b07-89df-f57915a464f2"
},
{
"id": "n_send_template",
"name": "Send Pre-approved Template Message to Reopen the Conversation",
"type": "n8n-nodes-base.whatsApp",
"typeVersion": 1,
"position": [
600,
260
],
"parameters": {
"template": "hello_world|en_US",
"phoneNumberId": "TU_PHONE_NUMBER_ID",
"requestOptions": {},
"recipientPhoneNumber": "={{ $('WhatsApp Trigger').item.json.contacts[0].wa_id }}"
},
"webhookId": "dc9b7b0b-44ae-409b-89d5-27c36cb0404d"
},
{
"id": "n_note",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-380,
-420
],
"parameters": {
"width": 460,
"height": 500,
"content": "# Guia de instalacion (100% gratis)\n\n1. Importa este flujo.\n2. Conecta credenciales: OpenAI (Chat Model), WhatsApp Business Cloud API (los 3 nodos de WhatsApp).\n3. Abre el nodo AI Agent y en el System Message cambia [Company Name] por el nombre de tu negocio y [https://your-domain.com] por tu web real.\n4. Abre el nodo 'Send AI Agent's Answer' y 'Send Pre-approved Template...' y pon tu phoneNumberId real (sustituye TU_PHONE_NUMBER_ID).\n5. En 'Send Pre-approved Template...' elige tu plantilla aprobada por Meta.\n6. Apunta el Webhook de Meta a la URL del nodo WhatsApp Trigger.\n7. Envia 'Hola' por WhatsApp y comprueba que responde.\n\nNo hace falta Supabase ni Postgres: la memoria (Simple Memory) va incluida en n8n, gratis. No hace falta ninguna membresia ni token de terceros: get_page usa el HTTP Request nativo de n8n contra tu propia web."
}
}
],
"connections": {
"WhatsApp Trigger": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "24-hour window check",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"get_page": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"24-hour window check": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "cleanAnswer",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Pre-approved Template Message to Reopen the Conversation",
"type": "main",
"index": 0
}
]
]
},
"cleanAnswer": {
"main": [
[
{
"node": "Send AI Agent's Answer",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {},
"meta": {
"instanceId": "laprensaia-flujo-de-la-semana"
}
}
Plantilla original de Matt F. (lemolex) en la biblioteca pública de n8n. La citamos y enlazamos por cortesía: al ser una plantilla pública, no hace falta autorización para probarla y comentarla, solo dar crédito. La versión gratuita de este artículo es nuestra, hecha desde cero con nodos nativos de n8n, para que te la lleves sin depender de nadie.
Contenido elaborado con la asistencia tecnológica de IBERIA y supervisión editorial. Fermín Sánchez es el responsable editorial de LaPrensaIA, diario de divulgación sobre inteligencia artificial. Cubrimos la actualidad de la IA con criterio propio —tecnología, empresas y sociedad— de forma clara para el público no técnico.



