Top 50 landing pages orgánicas por sesiones

Identifica las 50 páginas de entrada con mayor volumen de sesiones orgánicas. Útil para priorizar esfuerzos de optimización en las URLs que más tráfico captan.

top-landings-organicas.sql
-- Top 50 landing pages orgánicas por número de sesiones
-- Usa el evento session_start para identificar la página de entrada
SELECT
  (SELECT value.string_value FROM UNNEST(event_params)
    WHERE key = 'page_location') AS landing_page,
  COUNT(
    DISTINCT CONCAT(
      user_pseudo_id, '.',
      CAST(
        (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')
      AS STRING)
    )
  ) AS sesiones
FROM
  `your-project.analytics_XXXXXXXXX.events_*`
WHERE
  _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY))
    AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
  AND traffic_source.medium = 'organic'
  AND event_name = 'session_start'
GROUP BY
  landing_page
ORDER BY
  sesiones DESC
LIMIT 50

Explicación paso a paso

  • 4 Extrae page_location del array event_params, que contiene la URL completa de la página.
  • 6 Cuenta sesiones únicas usando la combinación de user_pseudo_id y ga_session_id.
  • 19 Filtra solo eventos session_start, que marcan el inicio de cada sesión y por tanto la landing page.
  • 22 Ordena de mayor a menor número de sesiones para ver las landing pages más populares primero.
  • 23 Limita a 50 resultados para enfocarse en las páginas de mayor impacto.

Ejemplo de resultado esperado

landing_pagesesiones
https://ejemplo.com/guia-seo-20263420
https://ejemplo.com/herramientas-seo2187
https://ejemplo.com/blog/google-analytics1893
https://ejemplo.com/tutorial-bigquery1456

Variaciones y adaptaciones

Para obtener solo el path sin dominio ni parámetros, usar REGEXP_EXTRACT(page_location, r'https?://[^/]+(/.*)') y aplicar SPLIT(..., '?')[OFFSET(0)]. Para agrupar por directorio raíz, usar REGEXP_EXTRACT(page_location, r'https?://[^/]+(/[^/]+)') AS directorio. Para ver también el título de la página, añadir MAX((SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_title')) AS titulo.