Blog · · 4 min de lectura

Cómo recibir avisos de stock bajo y preparar el pedido al proveedor con n8n e IA

Guía paso a paso para que n8n revise cada mañana tu inventario en Google Sheets, te avise de lo que se está acabando y redacte con IA el pedido al proveedor para que solo tengas que revisarlo.

Quedarse sin un producto es dinero perdido: el cliente que venía a por él se va a otra tienda, y el pedido urgente al proveedor sale más caro. En una tienda pequeña, una peluquería que vende producto, un bar o un taller, el inventario suele vivir en una hoja de cálculo que nadie mira hasta que ya es tarde.

En esta guía vas a montar en n8n un flujo que cada mañana revisa tu inventario en Google Sheets, detecta los productos por debajo del mínimo, los agrupa por proveedor y redacta con IA un borrador de pedido en Gmail para cada uno. Tú solo revisas y pulsas enviar.

Qué vas a construir

Un flujo de cinco pasos que funciona solo todos los días:

  1. Disparador diario: un nodo Schedule Trigger se ejecuta a las 8:30.
  2. Lectura del inventario: el nodo Google Sheets lee tu hoja «Inventario».
  3. Filtro y agrupación: un nodo Code se queda con los productos bajo mínimo que no se han pedido ya y los agrupa por proveedor.
  4. Pedido con IA: un nodo Basic LLM Chain escribe un correo de pedido claro y educado para cada proveedor.
  5. Borrador y registro: Gmail crea el borrador (no lo envía) y Google Sheets anota la fecha en pedido_el.

Lo que necesitas

  • Una instancia de n8n (en la nube o instalada gratis en tu ordenador).
  • Google Sheets y Gmail conectados en n8n.
  • Una clave de API de OpenAI u otro proveedor de IA, con un límite mensual de gasto configurado en su panel.
  • Una hoja «Inventario» con estas columnas: producto, referencia, stock, minimo, cantidad_pedido, proveedor, email_proveedor y pedido_el (vacía).

Paso 1: prepara la hoja de inventario

El dato clave es minimo: el stock por debajo del cual quieres reponer. Una regla sencilla es lo que vendes en el tiempo que tarda el proveedor en servir, más un pequeño margen. cantidad_pedido es lo que sueles pedir de cada vez. Si actualizas el stock a mano, hazlo al cerrar el día; si tu TPV exporta a Google Sheets, mejor todavía.

Paso 2: disparador y lectura

Añade un Schedule Trigger diario a las 8:30 (revisa que la zona horaria del flujo, en Settings, sea Europe/Madrid). Conéctalo a Google Sheets → Get Row(s) apuntando a tu hoja «Inventario».

Paso 3: filtra lo que falta y agrupa por proveedor

Añade un nodo Code (modo Run Once for All Items) con este código:

const hoy = new Date();
const limite = new Date(hoy.getTime() - 7 * 86400000); // no repetir pedidos en 7 días
const grupos = {};
for (const i of $input.all()) {
  const p = i.json;
  const pedido = p.pedido_el ? new Date(p.pedido_el) : null;
  if (Number(p.stock) > Number(p.minimo)) continue;
  if (pedido && pedido > limite) continue;
  if (!p.email_proveedor) continue;
  const k = p.email_proveedor;
  grupos[k] = grupos[k] || { proveedor: p.proveedor, email: k, lineas: [] };
  grupos[k].lineas.push(`${p.producto} (ref. ${p.referencia}): ${p.cantidad_pedido} uds. Stock actual: ${p.stock}`);
}
return Object.values(grupos).map(g => ({ json: { ...g, lista: g.lineas.join('\n') } }));

Si no falta nada, el nodo no devuelve nada y el flujo termina sin gastar IA. La regla de los 7 días evita que pidas lo mismo dos veces mientras el pedido anterior está en camino.

Paso 4: redacta el pedido con IA

Añade un Basic LLM Chain con un modelo pequeño y barato (por ejemplo, gpt-4o-mini) y este prompt:

Eres quien gestiona las compras de [NOMBRE DEL NEGOCIO]. Escribe un correo de pedido
para {{ $json.proveedor }} con estas líneas, sin cambiar cantidades ni referencias:
{{ $json.lista }}
- Tono profesional y cercano, en español, máximo 6 frases más la lista.
- Pide confirmación del pedido y del plazo de entrega.
- No inventes precios, descuentos ni fechas.
Devuelve solo el cuerpo del correo.

La instrucción de no cambiar cantidades es importante: la IA redacta, pero los números salen siempre de tu hoja.

Paso 5: crea el borrador y marca como pedido

Conecta un nodo Gmail → Create Draft con el destinatario {{ $('Code').item.json.email }}, el asunto Pedido [NOMBRE DEL NEGOCIO] – {{ $now.format('dd/MM/yyyy') }} y el texto de la IA en el cuerpo. Usar borradores en vez de envío directo te deja revisar antes de comprometerte con un proveedor; es la misma idea que en responder emails con borradores de IA.

Después, para cada producto pedido, un nodo Google Sheets → Update Row que busque por referencia y escriba la fecha de hoy en pedido_el. Cuando llegue la mercancía, actualiza el stock y vacía pedido_el.

Si prefieres no crear borradores, cambia el paso 5 por un aviso a tu móvil con un bot de Telegram que te liste lo que falta.

Cómo probarlo

  1. Pon en una fila de prueba un stock menor que el minimo y tu propio correo como email_proveedor.
  2. Ejecuta el flujo a mano y comprueba que aparece el borrador en Gmail con las cantidades correctas y que pedido_el se rellena.
  3. Ejecútalo otra vez: esta vez no debe crearse ningún borrador.
  4. Sube el stock por encima del mínimo en otra fila y confirma que la salta.

Coste y buenas prácticas

  • Coste: cada pedido redactado cuesta menos de una décima de céntimo en la API de IA. Aunque tengas diez proveedores, el coste mensual es despreciable.
  • Revisa los mínimos cada pocos meses: en temporada alta (Navidad, verano) suele hacer falta subirlos.
  • Avisa de errores: activa un flujo de errores para enterarte si Gmail o la hoja fallan, como explicamos en gestión de errores en n8n.
  • Combínalo con tu informe diario con IA para ver en un solo mensaje las ventas de ayer y lo que hay que reponer.

Empieza con plantillas listas para importar

Si quieres tener ya montada la base de atención al cliente en n8n, descarga gratis el agente de WhatsApp o echa un vistazo al pack completo AgentKiosk: 8 agentes probados en español e inglés, con su workflow, su prompt y su guía, listos para importar y combinar con estos avisos de stock.