Tutorial

n8n + Claude: un workflow real de principio a fin

Workflow real con IA: un webhook recibe leads, Claude los clasifica y redacta la respuesta, y n8n te avisa solo cuando hay un cliente caliente.

AvanzadoAutomatización4 min de lectura

En este tutorial armamos algo que yo uso en serio: un clasificador de leads con IA. Llega un mensaje por webhook, Claude lo lee, decide si el interesado está caliente o frío, redacta una respuesta y n8n avisa solo cuando vale la pena. Es nivel avanzado: asumo que ya moviste nodos en n8n y sabés lo que es un trigger.

Antes de empezar

  • n8n funcionando (nube o self-hosted) y soltura básica con el editor.
  • Una API key de Anthropic (se crea en su consola de desarrolladores). Ojo: esto se paga por uso — cada ejecución del workflow hace una llamada al modelo y cuesta una fracción de centavo o algunos centavos según el largo del texto. No es gratis, pero para volúmenes de PYME es poca plata.
  • Algo para disparar el webhook: curl en la terminal o cualquier cliente HTTP.

Paso 1 — El disparador: un Webhook

Agregá un nodo Webhook (una URL que n8n publica para que otros sistemas le manden datos):

  • Método: POST
  • Path: leads
  • Respond: Using 'Respond to Webhook' Node (así controlamos qué devuelve al final)

n8n te da dos URLs y acá se cae medio mundo: la de prueba (/webhook-test/...) solo escucha un ratito después de que apretás «Listen for test event»; la de producción (/webhook/...) solo funciona con el workflow activo.

Probalo desde la terminal:

curl -X POST https://tu-n8n.com/webhook-test/leads \
  -H "Content-Type: application/json" \
  -d '{"nombre":"Ana","mensaje":"Quiero precios para automatizar mi tienda"}'

Detalle importante: lo que mandás por POST llega adentro de body. O sea, el mensaje vive en $json.body.mensaje, no en $json.mensaje.

Paso 2 — Conectá Claude

Agregá un nodo Basic LLM Chain (la forma más simple de llamar a un modelo de lenguaje en n8n). Vas a ver que abajo pide un sub-nodo de modelo: enchufale un Anthropic Chat Model, creá la credencial pegando tu API key y elegí el modelo de Claude que tengas habilitado.

Al Basic LLM Chain también podés colgarle un Structured Output Parser: un sub-nodo que obliga a que la respuesta del modelo salga como JSON con la estructura que definas, en vez de texto suelto. Usalo. Te ahorra el 80% de los dolores de cabeza con IA.

Paso 3 — El prompt que hace el trabajo

En el campo de texto del LLM Chain, escribí las instrucciones y metele el dato real con una expresión (los dobles corchetes son la forma de n8n de inyectar datos dinámicos):

Sos el asistente comercial de una agencia.
Analizá este mensaje de un interesado:

Nombre: {{ $json.body.nombre }}
Mensaje: {{ $json.body.mensaje }}

Clasificá el lead como "caliente" (pide precio, plazo o quiere reunirse),
"tibio" (pregunta general) o "frio" (spam o no aplica).
Redactá una respuesta breve y cordial en español.

En el Structured Output Parser definí el esquema de salida:

{
  "categoria": "caliente",
  "respuesta": "texto de la respuesta sugerida"
}

Ejecutá el nodo con los datos de prueba fijados (el «pin» de n8n) y verificá que salga el JSON limpio.

Paso 4 — Decidí con un IF y respondé

  • Agregá un nodo IF: categoria → equals → caliente.
  • En la rama true, poné tu aviso: un Gmail o un Telegram con el nombre, el mensaje original y la respuesta que sugirió Claude. Vos solo entrás cuando hay plata en juego.
  • Las dos ramas terminan en un nodo Respond to Webhook que devuelve {{ $json.output.respuesta }} al sistema que llamó. Así el que disparó el webhook (tu web, tu bot) recibe la respuesta generada al instante.

Paso 5 — Probá, activá y vigilá

Mandá tres curls: uno pidiendo precios, uno preguntando algo genérico y uno de spam. Verificá que el aviso llegue solo en el primero. Después activá el workflow y pasate a la URL de producción.

No lo abandones ahí: el panel de Executions guarda el historial de cada corrida con sus datos, y en la pestaña de ajustes de cada nodo podés prender Retry On Fail para que reintente solo si la API tiene un mal momento.

Errores comunes

  • El webhook de prueba «no responde». Se venció la ventana de escucha. Apretá Listen de nuevo antes de cada curl, o activá el workflow y usá producción.
  • La expresión sale vacía. Te olvidaste del body: es $json.body.mensaje. Mirá el output real del nodo Webhook antes de escribir expresiones.
  • Claude devuelve texto alrededor del JSON. Sin parser estructurado, los modelos «conversan». Poné el Structured Output Parser y pedí explícitamente solo JSON.
  • La factura de API crece sin que te des cuenta. Cada ejecución llama al modelo, incluidos los tests. Revisá el consumo en la consola de Anthropic y ponete un límite de gasto.

Siguiente paso

De acá el camino natural es darle memoria al modelo para sostener conversaciones, pasar del LLM Chain a un AI Agent con herramientas (que puede buscar datos o llamar otros workflows solo), y armar un error workflow que te avise cuando algo se rompa a las 3 de la mañana. Ese último es el que separa un experimento de un sistema que trabaja por vos.

¿Lo querés funcionando en tu negocio?

Mirá cómo trabajamos, o entrá gratis a la comunidad y preguntá lo que te trabó.

Seguí aprendiendo

En esta guía
  1. Antes de empezar
  2. Paso 1 — El disparador: un Webhook
  3. Paso 2 — Conectá Claude
  4. Paso 3 — El prompt que hace el trabajo
  5. Paso 4 — Decidí con un IF y respondé
  6. Paso 5 — Probá, activá y vigilá
  7. Errores comunes
  8. Siguiente paso