Gestión de Inventario con Alertas
El problema
El stock se agota en silencio. Un producto lleva tres días en cero unidades mientras los pedidos siguen llegando, el cliente recibe un email de "producto no disponible", y la venta se pierde. O peor: alguien detecta el problema, envía un email al proveedor, pero nadie sabe si llegó, si respondieron, o cuándo llega el restock. El inventario es uno de esos procesos donde un sistema simple salva miles de euros mensuales.
Este flujo revisa el stock cada mañana, identifica productos bajo umbral, y dispara automáticamente: alerta al equipo en Slack y email de pedido al proveedor.
Herramientas necesarias
- n8n (self-hosted o cloud)
- Schedule Trigger — ejecución diaria a las 8am
- Google Sheets (node nativo n8n) — leer niveles de stock actuales
- IF — filtrar productos por debajo del umbral mínimo
- Slack (node nativo n8n) — alerta al equipo de operaciones
- Gmail (node nativo n8n) — email automático al proveedor
- Credenciales: Google OAuth2 (Sheets), Slack Bot Token, Gmail OAuth2
- Requisito: hoja de cálculo con columnas:
SKU,Nombre,Stock_Actual,Stock_Minimo,Email_Proveedor,Nombre_Proveedor
Configuración paso a paso
Nodo 1 — Schedule Trigger
- Trigger:
Cron - Expression:
0 8 * * 1-5(lunes a viernes a las 8:00am) - Timezone:
Europe/Madrid
Nodo 2 — Google Sheets (Read Rows)
- Operation:
Read Rows - Spreadsheet ID: ID de tu hoja (de la URL de Google Sheets)
- Sheet Name:
Inventario - Return All:
true - First Row as Header:
true
Nodo 3 — IF (filtro de stock bajo)
- Condition:
{{ $json.Stock_Actual }}menor o igual a{{ $json.Stock_Minimo }} - Ambos campos son numéricos — asegúrate de que en Sheets estén como número, no texto
- Rama TRUE → productos que necesitan pedido
- Rama FALSE → descartados (no hacer nada)
Nodo 4 — Slack (Send Message)
- Channel:
#inventario-alertas - Text:
⚠️ *Stock bajo detectado*
*Producto:* {{ $json.Nombre }} (SKU: {{ $json.SKU }})
*Stock actual:* {{ $json.Stock_Actual }} unidades
*Mínimo requerido:* {{ $json.Stock_Minimo }} unidades
*Proveedor:* {{ $json.Nombre_Proveedor }}
_Pedido automático enviado al proveedor._
- Si hay múltiples productos, el IF en n8n itera sobre cada item: cada producto bajo mínimo genera su propio mensaje
Nodo 5 — Gmail (Send Email al proveedor)
- From: tu email de empresa
- To:
{{ $json.Email_Proveedor }} - Subject:
Pedido de reposición — {{ $json.Nombre }} ({{ $now.format('DD/MM/YYYY') }}) - Body HTML: email profesional con datos del producto, cantidad solicitada (puedes calcularla: Stock_Maximo - Stock_Actual si tienes esa columna), y datos de entrega
- Añade campo
Cantidad_Pedidoa tu hoja de Sheets para que el email incluya la cantidad exacta
Nodo 6 — Google Sheets (Update Row)
- Operation:
Update Row - Actualiza columna
Pedido_EnviadoaSIyFecha_Pedidoa{{ $now.toISO() }} - Esto evita que el próximo día se envíe el mismo pedido si no ha llegado el stock aún
Ejemplo de prompt IA
Este flujo no usa IA por defecto, pero puedes añadir un nodo Claude antes del email al proveedor para personalizar el mensaje:
Redacta un email profesional de pedido de reposición de inventario.
DATOS:
- Proveedor: {{ $json.Nombre_Proveedor }}
- Producto: {{ $json.Nombre }}
- SKU: {{ $json.SKU }}
- Cantidad a pedir: {{ $json.Cantidad_Pedido }} unidades
- Urgencia: {{ $json.Stock_Actual === 0 ? 'URGENTE - producto agotado' : 'Normal - stock bajo mínimo' }}
Tono: profesional y conciso. Incluye referencia al número de pedido automático: PED-{{ $now.format('YYYYMMDD') }}-{{ $json.SKU }}. Máximo 150 palabras.
Ahorro estimado
- Revisión diaria de stock: 20 min/día eliminados
- Emails manuales a proveedores: 10 min/pedido eliminados
- Productos agotados no detectados: prácticamente eliminados
- Total: 2-3 horas semanales + prevención de ventas perdidas por falta de stock