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.
-- 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_salida | salidas | porcentaje_salidas |
|---|---|---|
| https://ejemplo.com/contacto | 1876 | 12.34 |
| https://ejemplo.com/guia-seo | 1243 | 8.18 |
| https://ejemplo.com/precios | 987 | 6.50 |
| https://ejemplo.com/blog/analytics | 765 | 5.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.
Queries relacionadas
Limpiar y normalizar una lista de URLs con SQL
SQL genérico
Principiante
Análisis de páginas zombi: sin clics ni conversiones
Cruce GA4 + GSC
Avanzado
URLs con mucho tráfico orgánico pero pocas impresiones
Cruce GA4 + GSC
Avanzado
Funnel de conversión desde landing orgánica hasta evento clave
GA4 en BigQuery
Avanzado