Velocidad de página percibida por usuarios orgánicos

Analiza las métricas de Core Web Vitals (LCP, FID, CLS) enviadas como eventos personalizados desde sesiones orgánicas. Requiere que el sitio tenga implementada la biblioteca web-vitals para enviar estos datos a GA4.

velocidad-pagina-organica.sql
-- Core Web Vitals por página para usuarios orgánicos
-- Requiere implementación de web-vitals que envíe eventos a GA4
-- Nombres de evento habituales: LCP, FID, CLS, INP, TTFB
SELECT
  (SELECT value.string_value FROM UNNEST(event_params)
    WHERE key = 'page_location') AS pagina,
  event_name AS metrica,
  COUNT(*) AS muestras,
  ROUND(AVG(
    (SELECT value.float_value FROM UNNEST(event_params) WHERE key = 'value')
  ), 2) AS promedio,
  ROUND(APPROX_QUANTILES(
    (SELECT value.float_value FROM UNNEST(event_params) WHERE key = 'value'),
    100
  )[OFFSET(75)], 2) AS p75
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 IN ('LCP', 'FID', 'CLS', 'INP', 'TTFB')
GROUP BY
  pagina, metrica
HAVING
  muestras >= 10
ORDER BY
  pagina, metrica

Explicación paso a paso

  • 3 Los nombres de eventos dependen de la implementación. Los más comunes son LCP, FID, CLS, INP y TTFB, siguiendo la convención de la biblioteca web-vitals de Google.
  • 7 Agrupa por métrica para ver cada Core Web Vital por separado.
  • 9 Calcula el promedio del valor de la métrica.
  • 12 APPROX_QUANTILES calcula el percentil 75 (P75), que es el umbral usado por Google para evaluar Core Web Vitals.
  • 22 Filtra por los nombres de eventos de Web Vitals. Ajustar según la implementación específica del sitio.
  • 25 Excluye páginas con pocas muestras para obtener datos representativos.

Ejemplo de resultado esperado

paginametricamuestraspromediop75
https://ejemplo.com/guia-seoLCP2452340.502890.00
https://ejemplo.com/guia-seoCLS2450.080.12
https://ejemplo.com/guia-seoINP198120.30185.00

Variaciones y adaptaciones

Si los eventos se llaman diferente (web_vitals, cwv, etc.), ajustar el filtro event_name. Para ver solo páginas que no pasan los umbrales de Google (LCP > 2500, CLS > 0.1, INP > 200), añadir HAVING con la condición correspondiente. Para comparar mobile vs desktop, añadir device.category al SELECT y GROUP BY.