Resumen rápido: Con la GA4 Data API puedes extraer métricas SEO (sesiones orgánicas, usuarios, engagement, conversiones e ingresos) de forma programática y volcarlas en Google Sheets para crear reportes SEO automatizados sin exportaciones manuales. En esta guía (actualizada a 10 de agosto de 2026) verás qué medir, cómo conectarlo paso a paso con Apps Script y consultas listas para landing pages y eCommerce.

Acción recomendada: Crea una hoja “GA4_API”, pega la plantilla de Apps Script que encontrarás más abajo, ejecuta una consulta de prueba (orgánico + landing page) y valida que el total coincide con el informe de GA4 para el mismo rango de fechas.

Si haces SEO en 2026, el problema ya no es “tener datos”, sino tenerlos bien segmentados, actualizados y listos para decidir: qué páginas SEO crecen, cuáles caen, qué consultas convierten, y cómo cambia el rendimiento tras un deploy, un cambio de contenidos o un update. Exportar CSV a mano cada semana rompe el ritmo y, peor, introduce errores de filtros.

La solución: GA4 Data API + Google Sheets. Con esto puedes crear un tablero vivo para tus reportes SEO automatizados, alimentar Looker Studio, disparar alertas o incluso activar flujos en n8n. Si quieres que además lo dejemos productivo (con control de errores, límites, histórico y alertas), puedes ver cómo trabajamos en nuestro método de automatización y SEO o pedir ayuda desde contacto.

1. Qué puedes medir de SEO en GA4 con la Data API

GA4 no es “una herramienta SEO” como Search Console, pero sí es excelente para medir resultado SEO: comportamiento, engagement, conversiones e ingresos atribuibles al canal orgánico. Con la GA4 Data API puedes extraer esos datos con filtros avanzados y una consistencia difícil de mantener con exportaciones manuales.

Lo más útil para SEO suele dividirse en: adquisición (tráfico), comportamiento (calidad), conversión (impacto) y, si hay eCommerce, revenue (negocio). Aquí tienes un mapa de lo más práctico:

  • Tráfico orgánico: usuarios, sesiones, sesiones con engagement, usuarios nuevos. Segmentación típica: Default Channel Group = Organic Search o Session medium = organic.
  • Landing pages SEO: rendimiento por landingPagePlusQueryString (página de entrada). Ideal para priorizar contenido, enlazado interno y mejoras de CRO.
  • Calidad del tráfico: engagementRate, averageSessionDuration (o métricas equivalentes según tu modelo), eventos por sesión, scroll, etc. (depende de tu medición).
  • Conversiones: conversiones por evento (p. ej. generate_lead, purchase), tasa de conversión y valor.
  • eCommerce: ingresos, transacciones, items comprados, rendimiento por landing o por categoría (si etiquetas bien).
  • Segmentos por dispositivo/país: deviceCategory, country, region para detectar caídas en mobile o mercados concretos.
  • Brand vs non-brand (aproximación): si capturas términos en eventos internos o usas páginas/landings como proxy. (Nota: GA4 no trae “query” SEO como GSC.)

Qué NO vas a sacar de GA4 (y conviene dejar claro): impresiones, posición media y consultas orgánicas reales. Eso sigue siendo territorio de Search Console. En la práctica, lo más potente es cruzar (vía Sheets/BigQuery) el “qué busca la gente” (GSC) con el “qué convierte” (GA4). Si estás preparando ese siguiente paso, en consultoría SEO solemos montar el pipeline completo para que el reporting no sea solo “bonito”, sino accionable.

Recomendación de medición (importante antes de automatizar): si tus conversiones no están bien configuradas, automatizar solo hará que el error sea más rápido. Revisa:

  • Eventos clave marcados como conversiones (leads, compras, suscripciones).
  • UTMs y canalización: que “Organic Search” no se contamine por redirecciones o pasarelas.
  • Dominio y subdominios: exclusiones de referencias y cross-domain si aplica.

2. Paso a paso: conectar GA4 Data API con Google Sheets

Hay varias rutas (Apps Script, conectores, BigQuery), pero si tu objetivo es GA4 a Google Sheets de forma directa y controlada, Apps Script es la vía más simple: vive dentro de tu Google Workspace, se agenda con triggers y no requiere infraestructura.

Requisitos previos:

  • Acceso al Property ID de GA4 (lo verás en Admin > Property settings).
  • Una Google Sheet donde volcar datos.
  • Permisos para ejecutar Apps Script con tu cuenta.

Paso 1 — Crea la hoja y estructura

  • Crea una Sheet llamada, por ejemplo, Reporte SEO GA4.
  • Añade pestañas: config (property_id, fechas), landings, ecommerce, logs.

Paso 2 — Abre Apps Script

  • En la Sheet: Extensiones > Apps Script.
  • Crea un archivo ga4.js (o usa el editor por defecto).

Paso 3 — Activa el servicio de la API

  • En Apps Script: “Servicios” (icono +) > añade Google Analytics Data API (nombre puede aparecer como AnalyticsData).
  • Si no aparece, revisa que tu proyecto está en un Workspace permitido y que tu cuenta tiene permisos.

Paso 4 — Pega una plantilla mínima (lista para copiar)

Este ejemplo consulta sesiones y usuarios orgánicos por landing page. Ajusta dimensiones/métricas según tus necesidades.

/**
 * GA4 Data API - Ejemplo básico a Google Sheets
 * Actualizado: 2026-08-10
 */

const GA4_PROPERTY_ID = '123456789'; // <-- cambia esto

function ga4RunLandingOrganicReport() {
  const sheetName = 'landings';
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName(sheetName) || ss.insertSheet(sheetName);
  sh.clearContents();

  const request = {
    dateRanges: [{ startDate: '28daysAgo', endDate: 'yesterday' }],
    dimensions: [
      { name: 'landingPagePlusQueryString' },
      { name: 'deviceCategory' }
    ],
    metrics: [
      { name: 'sessions' },
      { name: 'totalUsers' },
      { name: 'engagedSessions' },
      { name: 'engagementRate' }
    ],
    dimensionFilter: {
      filter: {
        fieldName: 'sessionDefaultChannelGroup',
        stringFilter: { matchType: 'EXACT', value: 'Organic Search' }
      }
    },
    orderBys: [{ metric: { metricName: 'sessions' }, desc: true }],
    limit: 5000
  };

  const response = AnalyticsData.Properties.runReport(
    request,
    `properties/${GA4_PROPERTY_ID}`
  );

  // Header
  const headers = [];
  response.dimensionHeaders.forEach(h => headers.push(h.name));
  response.metricHeaders.forEach(h => headers.push(h.name));
  sh.getRange(1, 1, 1, headers.length).setValues([headers]);

  // Rows
  const rows = (response.rows || []).map(r => {
    const dims = r.dimensionValues.map(v => v.value);
    const mets = r.metricValues.map(v => v.value);
    return dims.concat(mets);
  });

  if (rows.length) {
    sh.getRange(2, 1, rows.length, headers.length).setValues(rows);
  }
}

Paso 5 — Ejecuta y autoriza

  • En Apps Script, ejecuta ga4RunLandingOrganicReport.
  • Autoriza permisos (leer datos de Analytics y escribir en Sheets).
  • Verifica que la pestaña landings se rellena.

Paso 6 — Programa la automatización

  • En Apps Script > Triggers (reloj) > “Add Trigger”.
  • Elige función, evento por tiempo (diario / semanal) y hora de baja carga.

Checklist práctica (antes de darlo por “OK”)

  • Propiedad correcta: Property ID coincide con GA4.
  • Comparación: mismo rango de fechas y filtro en la interfaz de GA4 vs Sheet.
  • Canal orgánico: usa sessionDefaultChannelGroup = Organic Search o define tu regla con medium/source.
  • Histórico: decide si quieres “sobrescribir” (más simple) o “append” diario (mejor para tendencias).
  • Documenta: deja en la pestaña config qué hace cada reporte.

Si además quieres que la Sheet sea la “fuente” de un dashboard o de una web interna, en desarrollo y optimización de webs solemos integrar estos datos con performance, logs y tracking para una visión completa.

3. Consultas listas (ejemplos) para landing pages y eCommerce

La clave para que esto sea útil en SEO es que las consultas respondan preguntas reales: “¿Qué landings orgánicas pierden sesiones?”, “¿Qué páginas atraen tráfico pero no convierten?”, “¿Qué categorías generan ingresos desde orgánico?”. Abajo tienes ejemplos listos para adaptar (métricas/dimensiones pueden variar según tu implementación y naming de eventos).

Ejemplo A — Top landings orgánicas (con engagement)

  • Dimensiones: landingPagePlusQueryString
  • Métricas: sessions, totalUsers, engagedSessions, engagementRate
  • Filtro: sessionDefaultChannelGroup = Organic Search
  • Orden: sessions desc

Este es el “mapa” básico para priorizar optimizaciones on-page, enlazado interno y CRO. Si una landing tiene muchas sesiones orgánicas pero baja tasa de engagement o pocas conversiones, hay una oportunidad clara.

Ejemplo B — Landings orgánicas con conversiones (lead gen)

Si tienes un evento de conversión tipo generate_lead (o el que uses), filtra/ordena por conversiones. En GA4 Data API puedes solicitar métricas de conversiones y, si lo necesitas, desglosar por nombre del evento con dimensiones de evento. Un patrón habitual:

  • Dimensiones: landingPagePlusQueryString
  • Métricas: sessions, conversions
  • Filtro orgánico: sessionDefaultChannelGroup = Organic Search

Tip SEO: crea en Sheets una columna calculada de conversions/sessions y otra de “impacto” (por ejemplo, conversiones absolutas). Así separas “páginas eficientes” de “páginas que mueven volumen”.

Ejemplo C — Detección de caída por dispositivo (solo orgánico)

  • Dimensiones: date, deviceCategory
  • Métricas: sessions, totalUsers, engagementRate
  • Filtro: Organic Search

Útil cuando hay cambios de plantilla, Core Web Vitals, interstitials o problemas mobile. Si cae mobile y desktop no, probablemente el problema es UX/rendimiento o un bug.

Ejemplo D — eCommerce: ingresos orgánicos por landing

Si tu GA4 tiene eCommerce bien instrumentado, puedes medir el valor SEO con revenue:

  • Dimensiones: landingPagePlusQueryString
  • Métricas: sessions, purchases (o transactions), purchaseRevenue
  • Filtro: Organic Search

Decisión típica: identifica landings con alta entrada orgánica y baja conversión (CRO), y landings con alto revenue (defender rankings + mejorar enlazado).

Ejemplo E — eCommerce: rendimiento orgánico por categoría (si etiquetas)

GA4 por defecto no conoce “categoría SEO” de tu catálogo. Pero si envías un parámetro o dimensión (p. ej. item_category o una custom dimension de “categoria_web”), podrás agrupar y priorizar contenidos/categorías. El patrón:

  • Dimensiones: itemCategory (o tu dimensión personalizada), deviceCategory
  • Métricas: itemRevenue, purchases, sessions
  • Filtro: Organic Search

Errores comunes (y cómo evitarlos)

  • Comparar “peras con manzanas”: en GA4 UI puedes estar usando usuarios, y en API sesiones. Define un estándar de reporting.
  • Filtro de orgánico inconsistente: “Organic Search” (channel group) vs medium=organic. Si tu atribución/canales están personalizados, documenta la regla.
  • Landing con query strings: landingPagePlusQueryString puede fragmentar datos si tienes muchos parámetros. Solución: normaliza en Sheets (REGEX) o usa landingPage si está disponible en tu propiedad.
  • Sampling/thresholding: en algunas combinaciones de dimensiones puede haber umbrales de privacidad. Reduce granularidad (menos dimensiones), agrupa por semana o evita combinaciones muy específicas.
  • Límites y timeouts: si pides demasiadas filas, usa paginación (offset/limit), o divide por rango de fechas.
  • No guardar histórico: sobrescribir está bien para un dashboard, pero para análisis de tendencias conviene almacenar por fecha y hacer tablas dinámicas.

Si tu objetivo final es un sistema completo (GA4 + GSC + alertas + reportes para clientes) sin dependencia manual, puedes apoyarte en SEOAGIL para definir arquitectura, control de calidad y automatizaciones escalables.

4. Conclusión: plantilla y siguiente automatización recomendada

Conectar GA4 Data API con Google Sheets es uno de esos cambios que se notan desde la primera semana: te quita trabajo repetitivo y te obliga a definir métricas y filtros consistentes. En 2026, además, es una base sólida para preparar reporting orientado a resultados en entornos donde la búsqueda se reparte entre Google clásico y experiencias con IA.

Plantilla rápida (estructura recomendada en Sheets)

  • config: property_id, timezone, ventana (p. ej. 28 días), lista de reportes activos.
  • landings: tabla principal (landing + device + métricas).
  • ecommerce: ingresos/purchases por landing o categoría.
  • historico_diario (opcional): append por fecha para tendencias.
  • logs: fecha de ejecución, duración, filas, error (si lo hubo).

Siguiente automatización recomendada (la que más impacto suele dar)

Después de tener GA4→Sheets estable, el siguiente salto es crear un flujo que:

  • Detecte caídas (por ejemplo, -25% sesiones orgánicas vs media 14 días) por landing o por directorio.
  • Genere un resumen accionable: páginas afectadas, dispositivo/país implicado y si también cae engagement o conversiones.
  • Dispare una alerta a Slack/Email y cree una tarea en tu gestor (o en n8n) con prioridad.

Esto convierte un reporte en un sistema de respuesta. Si quieres montarlo con calidad (control de umbrales, exclusiones por estacionalidad, y trazabilidad), revisa nuestros servicios de automatización y SEO y cómo trabajamos el ciclo completo desde datos hasta acciones.

Preguntas frecuentes

¿Puedo usar GA4 Data API sin programar?

Puedes usar conectores de terceros, pero si buscas control (filtros, consistencia, coste y escalabilidad), Apps Script es la opción más directa dentro de Google Sheets. La parte “programación” puede quedarse en copiar/pegar una plantilla y ajustar el Property ID y métricas.

¿Qué filtro es mejor para SEO: “Organic Search” o medium=organic?

Depende de tu configuración. sessionDefaultChannelGroup = Organic Search es cómodo y legible, pero si tienes reglas personalizadas o atribución compleja, quizá prefieras sessionMedium = organic (o source/medium). Lo importante es documentar y no mezclar criterios entre informes.

¿GA4 me da las keywords orgánicas para cada landing?

No. GA4 no ofrece las consultas orgánicas reales como lo hace Search Console. Para eso, lo habitual es extraer datos de GSC y cruzarlos con GA4 (en Sheets o BigQuery) para ver qué consultas traen tráfico y cuáles generan conversiones.

¿Qué hago si la API devuelve menos filas o datos “vacíos”?

Suele deberse a (1) filtros demasiado restrictivos, (2) umbrales de privacidad al combinar dimensiones, o (3) límites de filas. Prueba a reducir dimensiones, agrupar por semana, o dividir por rangos de fechas y consolidar.

¿Cada cuánto recomiendas actualizar el reporte en Sheets?

Para seguimiento operativo, diario (madrugada) funciona bien. Para reporting semanal a cliente, una actualización diaria igualmente ayuda a detectar anomalías pronto. Si guardas histórico, evita recalcularlo todo cada vez: añade el día anterior y listo.

¿Quieres que lo implementemos por ti? Montamos tu extracción GA4→Sheets con filtros SEO correctos, guardado histórico, alertas y un dashboard listo para decisiones (no solo para mirar). Contacta con SEOAGIL.