Automatizaciones sin código (n8n, Make, Zapier)

Las plantillas de n8n que vienen con StockAI, cómo importarlas y qué hace cada una, y cómo armar los mismos flujos en Make o Zapier.

En esta página
  1. Las plantillas
  2. Importar una plantilla de webhook
  3. Importar la plantilla de Google Drive
  4. Make y Zapier

Con los webhooks y la API puedes conectar StockAI a Slack, Google Sheets, Jira o Google Drive sin escribir un programa. StockAI trae tres plantillas para n8n, en la carpeta integrations/n8n/ del código fuente.

Las plantillas

ArchivoQué haceNecesita
order-approved-to-slack-and-sheets.jsonCuando se aprueba una orden (purchase_order.approved), manda un mensaje a un canal de Slack y agrega una fila a una hoja de Google Sheets con orden, bodega, SKUs, unidades, valor, monto aprobado, quién aprobó, id del evento y fecha.Un webhook de StockAI, Slack y Google Sheets.
stockout-imminent-to-jira.jsonCuando un SKU entra en riesgo de quiebre (stockout.imminent), crea una incidencia en Jira: «Stockout risk: SKU en bodega (N days of cover)».Un webhook de StockAI y Jira.
drive-file-to-dataset.jsonCuando cae un archivo nuevo en una carpeta de Google Drive, lo descarga y reemplaza el archivo de una fuente de ventas de StockAI (POST /api/v1/data-sources/{id}/file). Si StockAI lo rechaza, avisa por Slack.Una llave de escritura, Google Drive y Slack.

Importar una plantilla de webhook

  1. En n8n, crea un flujo nuevo e impórtale el archivo JSON (menú del flujo → importar desde archivo).
  2. Abre el primer nodo, «StockAI webhook», y copia su URL de producción.
  3. En StockAI, abre Automatización → «Avisos automáticos», pulsa «Agregar webhook», pega esa URL y marca solo el evento de la plantilla (purchase_order.approved o stockout.imminent). Guarda.
  4. Copia la «Clave de firma del webhook» (se muestra una sola vez).
  5. En n8n, guarda esa clave en la variable de entorno STOCKAI_WEBHOOK_SECRET y permite el módulo crypto con NODE_FUNCTION_ALLOW_BUILTIN=crypto.
  6. Elige tus credenciales y completa los campos vacíos: el canal de Slack y la hoja, o el proyecto y el tipo de incidencia de Jira.
  7. Activa el flujo y, en StockAI, pulsa «Enviar prueba» en el webhook. Revisa «Entregas» para ver que llegó.

Importar la plantilla de Google Drive

  1. Busca el id de tu fuente de ventas con GET /data-sources o en Mis ventas.
  2. Importa drive-file-to-dataset.json en n8n.
  3. En el nodo «Replace the dataset», cambia REPLACE_WITH_DATA_SOURCE_ID por ese id. Si tu StockAI no es app.stockai.es, cambia también el dominio.
  4. Crea en n8n una credencial «Header Auth» con nombre Authorization y valor Bearer sk_live_... (una llave de escritura) y asígnala a ese nodo.
  5. Elige la carpeta de Drive en el primer nodo y el canal de Slack en «Say it failed».
  6. Activa el flujo y deja un archivo en la carpeta. La fuente conserva su mapeo de columnas, y si la sesión tiene una tarea programada, StockAI reentrena solo.

Make y Zapier

Make y Zapier no importan un archivo nuestro, así que el mismo flujo se arma con sus módulos genéricos:

Recibir un evento de StockAI
Make: «Custom webhook». Zapier: «Catch Hook». Pega su URL al crear el webhook en StockAI.
Verificar la firma
Necesita código. En Zapier, un paso «Code by Zapier» con la receta de abajo; en Make, un módulo que calcule HMAC-SHA256.
Llamar a StockAI
Make: «HTTP > Make a request». Zapier: «Webhooks by Zapier > Custom Request». URL https://app.stockai.es/api/v1/<ruta>, cabecera Authorization: Bearer <llave> (de escritura para POST/PATCH/DELETE). Un archivo va como multipart/form-data con el campo file.
// Code by Zapier (JavaScript). Inputs: secret, signature (the X-StockAI-Signature header), body (raw text)
const crypto = require('crypto')
const parts = Object.fromEntries(inputData.signature.split(',').map(p => p.split('=')))
const fresh = Math.abs(Date.now() / 1000 - Number(parts.t)) <= 300
const expected = crypto.createHmac('sha256', inputData.secret)
  .update(parts.t + '.' + inputData.body).digest('hex')
output = [{ valid: fresh && expected === parts.v1 }]

Ojo: el paso de código tiene que recibir el cuerpo crudo de la entrega, tal como llegó. Si la herramienta ya lo interpretó como JSON y lo vuelve a armar, la firma no coincide.