Tiempo medio en página por URL orgánica
Calcula el tiempo medio de engagement por página para sesiones orgánicas. Ayuda a identificar contenido que retiene al usuario y contenido que no genera interés.
-- Tiempo medio de engagement por página en sesiones orgánicas
-- Usa engagement_time_msec acumulado por cada evento de la página
SELECT
(SELECT value.string_value FROM UNNEST(event_params)
WHERE key = 'page_location') AS pagina,
COUNT(*) AS page_views,
ROUND(
AVG(
(SELECT value.int_value FROM UNNEST(event_params)
WHERE key = 'engagement_time_msec')
) / 1000, 2
) AS tiempo_medio_seg,
ROUND(
SUM(
(SELECT value.int_value FROM UNNEST(event_params)
WHERE key = 'engagement_time_msec')
) / 1000 / 60, 2
) AS tiempo_total_min
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 = 'user_engagement'
GROUP BY
pagina
HAVING
page_views >= 10
ORDER BY
tiempo_medio_seg DESC
LIMIT 50
Explicación paso a paso
- 4 Extrae la URL de la página desde event_params.
- 7 Calcula el promedio de engagement_time_msec y lo convierte de milisegundos a segundos.
- 13 Calcula el tiempo total acumulado en minutos para contextualizar la relevancia de cada página.
- 25 Filtra por evento user_engagement, que es el que acumula tiempo de engagement en GA4.
- 28 Excluye páginas con menos de 10 vistas para evitar promedios engañosos.
- 30 Ordena de mayor a menor tiempo medio para ver primero el contenido más atractivo.
Ejemplo de resultado esperado
| pagina | page_views | tiempo_medio_seg | tiempo_total_min |
|---|---|---|---|
| https://ejemplo.com/guia-completa-seo | 1243 | 187.34 | 3881.29 |
| https://ejemplo.com/tutorial-bigquery | 876 | 142.18 | 2076.23 |
| https://ejemplo.com/blog/herramientas | 654 | 98.45 | 1073.10 |
Variaciones y adaptaciones
Para ver solo páginas con bajo engagement (candidatas a mejorar), cambiar ORDER BY a tiempo_medio_seg ASC. Para agrupar por directorio, usar REGEXP_EXTRACT(page_location, r'https?://[^/]+(/[^/]+)') AS directorio. Para ver la mediana en lugar del promedio, usar APPROX_QUANTILES(engagement_time_msec, 100)[OFFSET(50)].
Queries relacionadas
Tráfico orgánico por dispositivo y sistema operativo
GA4 en BigQuery
Principiante
Páginas de salida más frecuentes en sesiones orgánicas
GA4 en BigQuery
Intermedio
Sesiones orgánicas con scroll mayor al 75%
GA4 en BigQuery
Intermedio
Search terms internos usados por visitantes orgánicos
GA4 en BigQuery
Intermedio