Páginas de salida más frecuentes en sesiones orgánicas

Identifica las páginas donde los usuarios orgánicos abandonan el sitio con mayor frecuencia. Permite detectar problemas de contenido o UX que provocan la salida.

paginas-salida-organicas.sql
-- Páginas de salida más frecuentes en sesiones orgánicas
-- Identifica la última página vista de cada sesión
WITH ultima_pagina AS (
  SELECT
    CONCAT(
      user_pseudo_id, '.',
      CAST(
        (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')
      AS STRING)
    ) AS session_id,
    ARRAY_AGG(
      (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location')
      ORDER BY event_timestamp DESC
      LIMIT 1
    )[OFFSET(0)] AS pagina_salida
  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 = 'page_view'
  GROUP BY
    session_id
)
SELECT
  pagina_salida,
  COUNT(*) AS salidas,
  ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 2) AS porcentaje_salidas
FROM
  ultima_pagina
GROUP BY
  pagina_salida
ORDER BY
  salidas DESC
LIMIT 30

Explicación paso a paso

  • 3 El CTE identifica la última página vista de cada sesión orgánica.
  • 11 ARRAY_AGG con ORDER BY event_timestamp DESC y LIMIT 1 obtiene la página con el timestamp más reciente de la sesión.
  • 22 Filtra por page_view para considerar solo las páginas que el usuario efectivamente visitó.
  • 28 Cuenta cuántas sesiones terminaron en cada página.
  • 29 Calcula el porcentaje de salidas respecto al total con una window function.

Ejemplo de resultado esperado

pagina_salidasalidasporcentaje_salidas
https://ejemplo.com/contacto187612.34
https://ejemplo.com/guia-seo12438.18
https://ejemplo.com/precios9876.50
https://ejemplo.com/blog/analytics7655.04

Variaciones y adaptaciones

Para calcular la tasa de salida (salidas / vistas totales de esa página), cruzar con un CTE que cuente page_views por página. Para ver solo páginas de blog como punto de salida, añadir WHERE pagina_salida LIKE '%/blog/%'. Para comparar la página de entrada vs la de salida, añadir la primera página vista con ORDER BY ASC.