Automatización con IA

Dashboard de Métricas Automático

Agrega datos de Stripe, GA y redes en un dashboard de Google Sheets en vivo

Dashboard de Métricas Automático

El problema

Cada mañana necesitas saber tres cosas: cuánto ingresaste ayer, si el tráfico está bien, y si hay algún indicador que requiera atención. Pero obtener esa información significa abrir Stripe, abrir Google Analytics, abrir tu herramienta de soporte, y copiar números manualmente a una hoja. Nadie hace eso sistemáticamente. El resultado: decisiones de negocio basadas en intuición en lugar de datos frescos.

Este flujo ejecuta cada mañana, recoge datos de Stripe, GA4, y Google Sheets, los consolida, pide a Claude que identifique tendencias y anomalías, y te envía un briefing de negocio listo para leer antes de que empiece el día.

Herramientas necesarias

  • n8n (self-hosted o cloud)
  • Schedule Trigger — diario a las 7:30am
  • Stripe (node nativo n8n) — revenue del día anterior
  • HTTP Request — GA4 API (tráfico y conversiones)
  • Google Sheets (node nativo n8n) — escribe métricas históricas
  • HTTP Request (Claude API) — genera insights y anomalías
  • Gmail (node nativo n8n) — envía el briefing diario
  • Credenciales: Stripe API key, Google Service Account (GA4 + Sheets), Anthropic API key, Gmail OAuth2
  • Requisito: Google Cloud project con GA4 Data API habilitada y Service Account con permisos de lectura en la propiedad

Configuración paso a paso

Nodo 1 — Schedule Trigger

  • Expression: 30 7 * * 1-5 (lunes a viernes a las 7:30am)
  • Timezone: Europe/Madrid

Nodo 2 — Stripe (List Charges — ayer)

  • Resource: Charge
  • Operation: Get All
  • Filters:
    • created[gte]: {{ $now.startOf('day').minus({days: 1}).toUnixInteger() }}
    • created[lt]: {{ $now.startOf('day').toUnixInteger() }}
    • status: succeeded
  • Luego agrega con Code node: suma amount (en centavos, dividir por 100) y cuenta transacciones

Nodo 3 — HTTP Request (GA4 API)

  • Method: POST
  • URL: https://analyticsdata.googleapis.com/v1beta/properties/{{ $env.GA4_PROPERTY_ID }}:runReport
  • Authentication: OAuth2 con Service Account (Google API)
  • Body:
{
  "dateRanges": [
    { "startDate": "yesterday", "endDate": "yesterday" },
    { "startDate": "7daysAgo", "endDate": "7daysAgo" }
  ],
  "metrics": [
    { "name": "sessions" },
    { "name": "activeUsers" },
    { "name": "conversions" },
    { "name": "bounceRate" }
  ]
}

Esto devuelve datos de ayer y de hace 7 días para comparación automática.

Nodo 4 — Code node (consolidar todas las métricas)

const stripe = items[0].json; // datos Stripe del nodo anterior
const ga4 = items[1].json;    // datos GA4

const ayer = ga4.rows[0].metricValues;
const semanaAnterior = ga4.rows[1].metricValues;

return [{
  json: {
    fecha: new Date().toLocaleDateString('es-ES'),
    revenue_ayer: stripe.total_revenue,
    transacciones_ayer: stripe.total_transacciones,
    sessions_ayer: parseInt(ayer[0].value),
    usuarios_ayer: parseInt(ayer[1].value),
    conversiones_ayer: parseInt(ayer[2].value),
    bounce_rate: parseFloat(ayer[3].value).toFixed(1),
    sessions_semana_anterior: parseInt(semanaAnterior[0].value),
    variacion_sessions: (((parseInt(ayer[0].value) / parseInt(semanaAnterior[0].value)) - 1) * 100).toFixed(1)
  }
}];

Nodo 5 — Google Sheets (Append Row — histórico)

  • Operation: Append Row
  • Sheet: Metricas_Diarias
  • Escribe todas las métricas consolidadas — esto construye tu histórico para tendencias a largo plazo

Nodo 6 — HTTP Request (Claude API)

  • Model: claude-opus-4-5
  • Genera el briefing ejecutivo con los datos del día (ver prompt)

Nodo 7 — Gmail (Send briefing)

  • To: tu@email.com (y cc a socios si procede)
  • Subject: 📊 Briefing {{ $node['Code'].json.fecha }} — Revenue: ${{ $node['Code'].json.revenue_ayer }}
  • Body HTML: el texto de Claude formateado en HTML limpio

Ejemplo de prompt IA

Eres el analista de datos interno de un negocio digital. Genera el briefing matutino basado en las métricas del día anterior.

MÉTRICAS DE AYER ({{ $json.fecha }}):
- Revenue: ${{ $json.revenue_ayer }} ({{ $json.transacciones_ayer }} transacciones)
- Sesiones web: {{ $json.sessions_ayer }} ({{ $json.variacion_sessions }}% vs misma semana anterior)
- Usuarios activos: {{ $json.usuarios_ayer }}
- Conversiones: {{ $json.conversiones_ayer }}
- Bounce rate: {{ $json.bounce_rate }}%

Genera un briefing ejecutivo con:
1. SEMÁFORO: 🟢 todo bien / 🟡 atención / 🔴 problema — con una frase de justificación
2. HIGHLIGHT del día: el dato más relevante (positivo o negativo) en 1 frase
3. ANOMALÍAS: cualquier métrica fuera de lo esperado con posible causa
4. RECOMENDACIÓN: una acción concreta para hoy basada en los datos

Tono: directo, ejecutivo. Sin relleno. Máximo 200 palabras.

Ahorro estimado

  • Recolección manual de métricas matutinas: 20-30 min/día eliminados
  • Datos desactualizados en decisiones: prácticamente eliminados
  • Histórico estructurado de KPIs: se construye automáticamente desde día 1
  • Total: 2-2.5 horas semanales + toma de decisiones basada en datos frescos cada día