En 30 segundos
- Montas una hoja de Google con tres pestañas: Lineas (ventas), Horas e Historial.
- Las ventas entran desde el TPV por API (Shopify POS, Square, Lightspeed, Holded) o con una exportación que pegas o programas.
- Los KPIs (venta, LFL, tickets, ticket medio, UPT, venta por hora, top y bottom) los calculan fórmulas o un nodo de código. Nunca la IA.
- La IA recibe los números ya hechos y escribe un resumen corto y 3 acciones para la semana.
- n8n o Make lo lanzan cada lunes a las 8:00 y te lo mandan por correo. Tienes la plantilla de n8n para descargar.
Tiempo para montarlo: ~2 tardes con la exportación del TPV; cuenta una más si lo conectas por API.
Necesitas: una hoja de Google, n8n o Make, la exportación o una clave de API de tu TPV, las ventas del año pasado de las mismas semanas y acceso por API a una IA.
Durante años, mi lunes empezaba igual: sacar el informe de ventas, compararlo con el año anterior, mirar qué productos tiraban y cuáles no, y escribir dos líneas para el equipo. No es difícil, pero cada semana se come un rato de la mejor hora del día, y cuando hay prisa se hace mal o no se hace.
Esta guía es para montarlo con la pantalla delante. No hace falta programar: hace falta seguir los pasos en orden y probar cada uno antes de pasar al siguiente.
Qué vas a montar
El correo que te llega tiene dos partes: arriba, la tabla con los números (calculados por el flujo); abajo, el resumen y las tres acciones (borrador de la IA). Si algún día no cuadran, mandan los de arriba.
Números de la semana
| KPI | Esta semana | Año anterior |
|---|---|---|
| Venta | 12.000 € | 11.000 € |
| LFL | +9,1 % | |
| Tickets | 400 | 400 |
| Ticket medio | 30,00 € | 27,50 € |
| UPT | 2,25 | 2,10 |
| Venta por hora | 50,00 € | s/d |
Top 3: Camiseta básica M (1.150 €), Pantalón chino (980 €), Gorra lisa (610 €). Mayor caída: Sudadera con capucha (−320 € frente al año pasado).
Resumen (borrador de la IA)
La venta sube un 9,1 % con los mismos tickets (400). El aumento viene del ticket medio (30,00 € frente a 27,50 €), porque cada cliente lleva más unidades (UPT 2,25 frente a 2,10). Venta por hora sin dato del año pasado.
3 acciones para esta semana
- Repetir la venta sugerida en caja para sostener la UPT (2,25).
- Revisar la reposición de Camiseta básica M, primera del top (1.150 €).
- Revisar en tienda la Sudadera con capucha: sin causa clara en los datos (−320 €).
Lo que necesitas antes de empezar
- Una hoja de Google nueva, solo para esto.
- n8n (en la nube o instalado en tu equipo o servidor) o Make. Cualquiera de los dos sirve; aquí tienes la plantilla de n8n y los pasos para Make.
- Acceso a los datos del TPV: permiso para crear una clave de API o, como mínimo, para exportar las ventas por línea de ticket.
- Una cuenta de IA con acceso por API (la plantilla usa OpenAI; puedes cambiar el nodo por el de otro proveedor).
- Las ventas del año pasado de las mismas semanas. Sin ellas no hay LFL.
Prepara la hoja de Google
Crea tres pestañas con estos nombres exactos y estas cabeceras en la fila 1. Los nombres importan: el flujo busca las columnas por su nombre.
| Pestaña | Columnas (fila 1) | Una fila por… |
|---|---|---|
| Lineas | Fecha · Ticket · Producto · Unidades · Importe | Línea de ticket |
| Horas | Fecha · Horas | Día (horas trabajadas por el equipo) |
| Historial | Semana · Venta · Venta año anterior · LFL % · Tickets · Ticket medio · UPT · Venta por hora · Resumen IA | Semana (la rellena el flujo) |
- Fecha en formato AAAA-MM-DD o DD/MM/AAAA.
- Ticket es el número de ticket, no el de línea. Si se repite en varias líneas, es correcto: así se cuentan los tickets.
- Importe siempre con IVA o siempre sin IVA. Elige uno y no lo mezcles nunca.
- Devoluciones con importe y unidades en negativo, como las saque el TPV.
2026-10-26 · T-1045 · Camiseta básica M · 2 · 39,80. Si ese ticket tenía también una gorra, habrá otra fila con T-1045 y la gorra.| Fecha | Ticket | Producto | Unidades | Importe | F · Ticket nuevo |
|---|---|---|---|---|---|
| 2026-10-26 | T-1045 | Camiseta básica M | 2 | 39,80 | 1 |
| 2026-10-26 | T-1045 | Gorra lisa | 1 | 14,90 | 0 |
| 2026-10-26 | T-1046 | Pantalón chino | 1 | 45,00 | 1 |
| 2026-10-27 | T-1101 | Camiseta básica M | −1 | −19,90 | 1 |
¿Cómo sacar las ventas del TPV a Google Sheets?
Empieza por la opción más sencilla que te funcione. Puedes pasar a la API más adelante sin tocar el resto.
Opción A: exportación (vale para cualquier TPV)
- En tu TPV, busca el informe de ventas por línea de ticket o por artículo vendido, con fecha y número de ticket.
- Expórtalo en CSV o Excel con las semanas que necesites, incluidas las del año pasado.
- Pega las columnas en la pestaña Lineas en el orden de arriba. Borra las que sobren (cliente, vendedor, método de pago…).
- Si tu TPV permite programar el envío del informe por correo, el flujo puede leerlo desde ahí más adelante. Pregúntaselo a tu proveedor.
Opción B: Shopify POS con el nodo de Shopify de n8n
n8n tiene un nodo de Shopify con la operación Order → Get Many. La plantilla trae una rama desactivada que hace esto cada lunes a las 7:00 y añade las líneas a la pestaña Lineas. Tres detalles que te ahorran una tarde:
- En las opciones del nodo, pon Status = Any. Por defecto solo trae pedidos abiertos.
- Sin el permiso
read_all_orders, la API solo devuelve los pedidos de los últimos 60 días (lo explica Shopify en su lista de permisos). Para el año pasado, haz una exportación una sola vez y pégala en Lineas. - Para quedarte solo con la venta de tienda, el código filtra por el campo
source_name. Abre un pedido de prueba de tu TPV en la salida del nodo y comprueba qué valor trae antes de dar el filtro por bueno.
Opción C: Square
La venta está en la Orders API, con el endpoint SearchOrders (POST /v2/orders/search). En n8n se llama con un nodo HTTP Request; en Make hay un módulo de Square llamado Search Orders. Lo que tienes que poner:
location_ids: el identificador de tu tienda (como máximo 10 por llamada).- Un filtro de fecha por
closed_at(de lunes a domingo) y el estadoCOMPLETED. - Paginación con
cursor: si la semana tiene muchos pedidos, no llegan todos en la primera respuesta.
Opción D: Lightspeed u Holded
Lightspeed Retail (X-Series) tiene una API con tokens personales para conectar tu propia cuenta. Holded tiene una API de documentos donde los tickets de venta son el tipo salesreceipt. En los dos casos se usa un HTTP Request y un nodo de código que pase cada línea al formato de la pestaña Lineas. Si no quieres pelearte con la API, la opción A funciona igual de bien.
¿Cómo calcular LFL, ticket medio y UPT en Google Sheets?
El flujo calcula todo en un nodo de código, pero conviene tener las mismas cuentas en una pestaña Resumen para comprobar la primera semana a mano (y para la versión de Make, que lee esta pestaña). Las fórmulas están en Google Sheets en español, con la Fecha como fecha real (no como texto).
Primero, una columna de ayuda en Lineas para contar tickets: en F2, =SI(CONTAR.SI($B$2:B2;B2)=1;1;0) y arrástrala hacia abajo. Vale 1 la primera vez que aparece cada ticket.
| Celda | Qué es | Fórmula |
|---|---|---|
| B1 | Lunes de la semana pasada | =HOY()-DIASEM(HOY();2)-6 |
| B2 | Domingo | =B1+6 |
| C1 / C2 | Misma semana del año pasado (364 días antes, mismos días de la semana) | =B1-364 y =C1+6 |
| B4 | Venta | =SUMAR.SI.CONJUNTO(Lineas!E:E;Lineas!A:A;">="&B1;Lineas!A:A;"<="&B2) |
| B5 | Unidades | La misma, con Lineas!D:D |
| B6 | Tickets | La misma, con Lineas!F:F |
| B7 | Horas | =SUMAR.SI.CONJUNTO(Horas!B:B;Horas!A:A;">="&B1;Horas!A:A;"<="&B2) |
| B8 | Ticket medio | =SI.ERROR(B4/B6;"") |
| B9 | UPT | =SI.ERROR(B5/B6;"") |
| B10 | Venta por hora | =SI.ERROR(B4/B7;"") |
| B11 | LFL | =SI.ERROR(B4/C4-1;"") (con la columna C igual que la B, pero con C1 y C2) |
Si quieres repasar qué mide cada uno: ticket medio, UPT (unidades por ticket), venta por hora y, para comparar bien con el año anterior, qué es el LFL y cómo calcularlo.
El top y el bottom de productos se calculan en el nodo de código: suma la venta de cada producto en la semana, ordena y se queda con los cinco primeros y los cinco últimos que han vendido algo. Además saca las mayores caídas en euros frente a la misma semana del año pasado, que suelen dar más pistas que el bottom.
Monta el flujo en n8n con la plantilla
Descarga la plantilla: n8n-informe-lunes-tpv.json. Es una plantilla de partida: revísala y pruébala con tus datos antes de fiarte de ella.
- Importa el archivo. En n8n, crea un workflow nuevo y, en el menú de los tres puntos, elige Import from File.
- Lee las notas amarillas. Explican cada bloque y los fallos típicos.
- Crea las credenciales de Google Sheets, OpenAI y Gmail. La plantilla no trae ninguna clave: las pones tú en n8n, nunca dentro de un nodo.
- Cambia
TU_ID_DE_HOJAen los nodos de Google Sheets. Es el trozo de la URL de tu hoja entre/d/y/edit. - Rellena el nodo Configuración: tu correo, el nombre de la tienda y cuántos productos quieres en el top y el bottom.
- Prueba con Execute workflow. Abre cada nodo y mira su salida: «Leer líneas de venta» tiene que traer filas; «Calcular KPIs», un solo resultado con la venta y el texto
datos_ia. - Compara con tu Resumen. La venta, los tickets y el LFL del nodo de código tienen que coincidir con las fórmulas. Si no coinciden, no sigas: mira la tabla de fallos de abajo.
- Activa el workflow solo cuando la prueba cuadre. Revisa en los ajustes del workflow que la zona horaria es Europe/Madrid.
El prompt: la IA redacta, no calcula
La regla que más problemas evita: la IA nunca hace cuentas. Recibe el texto que prepara el nodo de código y solo puede usar esas cifras. Esta es la instrucción que lleva la plantilla, por si usas otra IA o lo montas en Make:
Eres el ayudante del responsable de una tienda física. Recibes los KPIs de la semana pasada ya calculados y comparados con la misma semana del año anterior. Reglas: no calcules, redondees ni cambies ninguna cifra; si hay avisos de datos, empieza por ellos; no inventes causas (si los datos no explican algo, escribe «sin causa clara en los datos: revisar en tienda»). Formato: RESUMEN de máximo 6 líneas (si el cambio viene de más o menos tickets o de ticket medio y UPT) y 3 ACCIONES PARA ESTA SEMANA que empiecen por un verbo, cada una ligada a un dato del informe entre paréntesis.
La temperatura del nodo está baja (0,2) para que el texto sea estable de una semana a otra. Si las acciones salen demasiado genéricas, añade al prompt el tipo de tienda y dos o tres cosas que el equipo puede hacer de verdad (cambiar exposición, venta sugerida en caja, revisar reposición de una familia).
Si prefieres Make
La lógica es la misma, pero en Make es más cómodo dejar los cálculos en la pestaña Resumen con las fórmulas de arriba y que el escenario solo los lea:
- Programación: en el escenario, ejecuta cada semana, el lunes a las 8:00. Revisa la zona horaria de tu perfil.
- Google Sheets → Search Rows sobre la pestaña Resumen, o Get a Cell para cada KPI.
- Módulo de IA (OpenAI u otro) con la instrucción de arriba y las cifras de Resumen como datos.
- Gmail para enviar el correo: primero los números leídos de la hoja y debajo el texto de la IA.
- Google Sheets → Add a Row en Historial, para tener la serie semanal.
Si vendes con Square, el módulo Search Orders de Make puede cargar la pestaña Lineas en un escenario aparte, un rato antes del informe.
Cómo probarlo antes de fiarte
- Una semana ya cerrada: compara venta y tickets con el informe del propio TPV. Tienen que coincidir al euro (con la misma regla de IVA).
- Una semana con devoluciones: comprueba que restan venta y que no inflan los tickets más de lo que lo hace tu TPV.
- Una semana sin datos: vacía una copia de Lineas y ejecuta. Te tiene que llegar el correo de aviso «no hay ventas de la semana», no un informe con ceros.
- Un mes seguido: deja que llegue cuatro lunes y revisa el Historial. Si una semana se sale mucho, mira primero los datos y después la tienda.
Fallos típicos y cómo arreglarlos
| Lo que ves | Por qué pasa | Cómo se arregla |
|---|---|---|
| No llega ningún correo | El workflow no está activo, o la pestaña se llama distinto («Líneas» con tilde no es «Lineas») | Actívalo y revisa el nombre exacto de la pestaña en el nodo |
| Llega el aviso de «no hay ventas» | Las fechas no se entienden o la carga del TPV no se ha hecho | Usa AAAA-MM-DD o DD/MM/AAAA; el aviso dice cuántas líneas se han descartado |
| Venta multiplicada por mil o dividida | Importes con punto y coma mezclados («1.200» y «1200,00») | Da a la columna Importe formato de número y no pegues texto con «€» |
| Tickets igual a líneas | La columna Ticket trae el número de línea, no el de ticket | Cambia la exportación o el campo de la API |
| LFL «s/d» | No hay ventas del año pasado en Lineas | Carga las semanas del año anterior una vez desde una exportación |
| Venta por hora «s/d» | La pestaña Horas está vacía esa semana | Pasa las horas del cuadrante o del control horario, en total por día |
| Shopify trae pocos pedidos | Status en «Open» o fuera de los 60 días | Status = Any; el histórico, por exportación |
| La IA cambia una cifra o se inventa una causa | Prompt sin reglas o temperatura alta | Usa el prompt de arriba y fíate de la tabla del correo, no del texto |
¿Y con Microsoft 365?
Si tu tienda trabaja con Excel y Outlook, el informe del lunes se puede montar sin n8n.
Excel y Power Automate
La exportación del TPV a una carpeta de OneDrive, las fórmulas en Excel y un flujo programado de Power Automate que cada lunes te manda las cifras por Outlook. Va con las licencias de empresa, con conectores estándar.
Sheets con Gemini
Si sigues en Google, Gemini en Sheets (Business Standard o superior) te ayuda a escribir las fórmulas de LFL, ticket medio y UPT.
Paso a paso en flujos de Power Automate para una tienda y en el informe de ventas con Gemini en Google Sheets.
Tu primer paso hoy
- Crea la hoja con las tres pestañas y pega a mano las ventas de la semana pasada y de la misma semana del año anterior.
- Pon las fórmulas de Resumen y comprueba que la venta coincide con la de tu TPV.
- Importa la plantilla en n8n y haz una prueba con Execute workflow. Actívala cuando cuadre.
El informe del lunes no tiene que ser perfecto: tiene que llegar todos los lunes, con los mismos números, antes de que abra la tienda.
Preguntas frecuentes
¿Por qué no le paso directamente la exportación a la IA y que lo calcule todo?
Porque la IA puede equivocarse en las cuentas y hacerlo con mucha seguridad. Si los números salen de una fórmula o de un nodo de código, son siempre los mismos y se pueden comprobar. La IA hace lo que mejor se le da: explicar los números en dos líneas y proponer por dónde empezar.
¿Funciona con varias tiendas?
Sí, añadiendo una columna Tienda en Lineas y en Horas y agrupando por ella en el nodo de código. Al principio, monta una sola tienda y, cuando cuadre, amplía.
¿Y si mi TPV no tiene API?
Usa la exportación. Muchos TPV permiten exportar las ventas a CSV o Excel; pegarla cada lunes es un paso manual corto, y todo lo demás sigue siendo automático. Si tu TPV envía informes programados por correo, el flujo también puede leerlos desde ahí.
¿Puedo recibirlo por WhatsApp o Slack en lugar de por correo?
Sí. Cambia el último nodo por el de la herramienta que uses. Mantén siempre los números calculados encima del texto de la IA.
Si quieres más prompts para leer los números de la tienda, tienes el pack de prompts de análisis de ventas.
Fuentes
Consultadas en noviembre de 2026.
- Microsoft Learn: preguntas frecuentes sobre licencias de Power Automate. Las licencias de Microsoft 365 para empresas (Business Basic, Standard y Premium) incluyen flujos en la nube automáticos, programados y con botón, solo con conectores estándar, con un límite de 6.000 acciones al día.
- Microsoft Learn: lista de conectores estándar. Excel Online (Business), Microsoft Forms, Microsoft Teams y Dropbox están entre los conectores estándar de Power Automate.
- Ayuda de Google: Gemini en Hojas de cálculo. Crea tablas, fórmulas y gráficos, y genera análisis a partir de los datos de la hoja.
Para seguir: Cuadros de mando y KPIs automáticos · Ajusta el cuadrante de tu tienda con la venta por hora trabajada y la IA · Black Friday en tienda física: cómo saber si de verdad te ha compensado