Tráfico orgánico segmentado por tipo de contenido
Clasifica las landing pages orgánicas por tipo de contenido (blog, producto, categoría, etc.) usando patrones de URL. Permite comparar el rendimiento SEO de cada sección del sitio.
-- Tráfico orgánico segmentado por tipo de contenido según URL
-- Ajustar los patrones REGEXP a la estructura de URLs del sitio
WITH sesiones AS (
SELECT
(SELECT value.string_value FROM UNNEST(event_params)
WHERE key = 'page_location') AS landing_page,
CONCAT(
user_pseudo_id, '.',
CAST(
(SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')
AS STRING)
) AS session_id,
MAX(
(SELECT value.string_value FROM UNNEST(event_params)
WHERE key = 'session_engaged')
) AS session_engaged
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, session_id
)
SELECT
CASE
WHEN landing_page LIKE '%/blog/%' THEN 'Blog'
WHEN landing_page LIKE '%/producto/%' OR landing_page LIKE '%/product/%' THEN 'Producto'
WHEN landing_page LIKE '%/categoria/%' OR landing_page LIKE '%/category/%' THEN 'Categoria'
WHEN landing_page LIKE '%/servicio/%' OR landing_page LIKE '%/service/%' THEN 'Servicio'
WHEN REGEXP_CONTAINS(landing_page, r'/$') AND NOT REGEXP_CONTAINS(landing_page, r'/[^/]+/[^/]+') THEN 'Home'
ELSE 'Otro'
END AS tipo_contenido,
COUNT(*) AS sesiones,
COUNTIF(session_engaged = '1') AS sesiones_engaged,
ROUND(COUNTIF(session_engaged = '1') / COUNT(*) * 100, 2) AS engagement_rate
FROM
sesiones
GROUP BY
tipo_contenido
ORDER BY
sesiones DESC
Explicación paso a paso
- 3 El CTE prepara las sesiones orgánicas con su landing page y estado de engagement.
- 28 El CASE clasifica cada URL en un tipo de contenido según patrones. Estos patrones deben adaptarse a la estructura de URLs del sitio.
- 33 La regla para Home detecta URLs que terminan en / y no tienen segmentos profundos.
- 36 Cuenta el total de sesiones por tipo de contenido.
- 37 Cuenta sesiones engaged para medir la calidad del tráfico de cada tipo.
- 38 Calcula el engagement rate para comparar la calidad entre tipos de contenido.
Ejemplo de resultado esperado
| tipo_contenido | sesiones | sesiones_engaged | engagement_rate |
|---|---|---|---|
| Blog | 8932 | 5876 | 65.79 |
| Producto | 3421 | 2567 | 75.04 |
| Categoria | 2134 | 1234 | 57.83 |
| Home | 1876 | 987 | 52.61 |
| Otro | 945 | 543 | 57.46 |
Variaciones y adaptaciones
Adaptar los patrones LIKE y REGEXP_CONTAINS a la estructura de URLs del sitio específico. Para desglosar cada tipo por mes, añadir PARSE_DATE('%Y%m%d', event_date) y DATE_TRUNC por mes. Para añadir conversiones por tipo, cruzar con eventos clave usando el session_id.
Queries relacionadas
Search terms internos usados por visitantes orgánicos
GA4 en BigQuery
Intermedio
Eventos personalizados disparados en sesiones orgánicas
GA4 en BigQuery
Intermedio
Páginas más vistas por usuarios orgánicos en una sola sesión
GA4 en BigQuery
Intermedio
Velocidad de página percibida por usuarios orgánicos
GA4 en BigQuery
Intermedio