Mesurer les Core Web Vitals avec GA4 et BigQuery
Envoyez vos Core Web Vitals dans GA4, interrogez-les en SQL via BigQuery et visualisez-les dans Looker Studio pour une analyse sur mesure.
Les outils Google basés sur CrUX, comme PageSpeed Insights ou la Search Console, offrent une vue d’ensemble précieuse de vos performances réelles. Mais ils ont des limites : données sur 28 jours, segmentation restreinte et incapacité à expliquer pourquoi une métrique se dégrade. Coupler Google Analytics 4 à BigQuery lève ces contraintes en donnant accès aux données d’événement brutes, interrogeables en SQL. Cette approche prolonge naturellement la collecte décrite dans notre guide pour mesurer les signaux Web sur le terrain.
Pour le SEO, l’intérêt est double : vous suivez vos Core Web Vitals presque en temps réel et vous les croisez avec vos dimensions métier pour prioriser les corrections qui comptent.
Les outils basés sur CrUX donnent une vue d’ensemble précieuse, mais ils ne répondent jamais à la question qui compte vraiment : pourquoi cette métrique se dégrade-t-elle. Coupler GA4 à BigQuery pour interroger les données brutes en SQL, c’est le saut que je recommande dès qu’on veut dépasser le constat et segmenter par modèle d’appareil, par page ou par parcours.
Configurer la mesure en trois étapes
La mise en place repose sur trois étapes simples, à réaliser une seule fois. Le tableau ci-dessous les récapitule, de la création des comptes à l’envoi des données depuis votre site.
| Étape | Action | Outil concerné |
|---|---|---|
1 |
Créer une propriété GA4 et un projet BigQuery |
Google Analytics 4 et Google Cloud |
2 |
Activer l’export BigQuery dans la configuration de la propriété |
Google Analytics 4 |
3 |
Ajouter la librairie web-vitals pour envoyer métriques et attribution |
Votre site (JavaScript) |
Interroger vos données dans BigQuery
Une fois la configuration en place, vos événements apparaissent dans BigQuery et deviennent interrogeables en SQL. Un point essentiel : pour une même métrique sur une même page, plusieurs événements peuvent être reçus (fréquent pour le CLS, dont la valeur se met à jour). La dernière valeur envoyée est toujours la plus précise.
La librairie web-vitals attribue un identifiant unique à chaque instance de métrique, ce qui permet de ne garder que la dernière valeur reçue. À partir de cette sous-requête, vous calculez le LCP, l’INP et le CLS au 75e percentile, listez les pages les plus problématiques ou suivez l’évolution quotidienne d’une métrique.
# Sous-requête : tous les événements Web Vitals des 28 derniers jours
WITH web_vitals_events AS (
SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
SELECT *, ROW_NUMBER() OVER (
PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
) = 1 AS is_last_received_value
FROM `bigquery_project_id.analytics_XXXXX.events_*`
WHERE event_name in ('CLS', 'INP', 'LCP') AND
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
) WHERE is_last_received_value
)
# Requête principale
SELECT
metric_name,
APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS p75,
COUNT(1) as count
FROM (
SELECT
metric_name,
ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
FROM web_vitals_events
)
GROUP BY 1
Déboguer grâce aux informations d'attribution
Savoir quels sont vos scores ne sert à rien si vous ne pouvez pas agir. En envoyant des informations de débogage avec vos données, comme le paramètre debug_target, vous les retrouvez dans BigQuery. Pour le CLS, debug_target est un sélecteur CSS désignant l’élément le plus grand du décalage le plus important. La méthode pour collecter ces cibles est détaillée dans notre guide pour déboguer les performances sur le terrain.
Vous pouvez alors lister vos pages de la pire à la meilleure selon leur CLS au 75e percentile, regroupées par debug_target, et adapter la même technique au LCP et à l’INP en changeant simplement la métrique filtrée. Les éléments remontés ne correspondent pas toujours à ceux observés en local, ce qui confirme l’importance de collecter ces données auprès de vrais utilisateurs.
Visualiser et industrialiser
Lire des résultats SQL bruts rend difficile la détection des tendances. Looker Studio, gratuit, permet de visualiser une requête en quelques clics depuis l’interface BigQuery, puis de bâtir des tableaux de bord interactifs. Pour des consultations fréquentes, mieux vaut matérialiser vos données Web Vitals dans une table dédiée, partitionnée par date et regroupée par métrique : la structure est aplatie, les requêtes plus rapides et les coûts réduits. Le connecteur Web Vitals pour Looker Studio génère même un modèle de tableau de bord prêt à l’emploi à partir de cette table. Pour enrichir ces tableaux de bord avec vos données de recherche, vous pouvez aussi combiner Search Console et Analytics.
Pour une même page, une métrique comme le CLS peut générer plusieurs événements à mesure que sa valeur évolue. Seule la dernière valeur reçue est exacte. Filtrez vos données sur cette dernière valeur, via l’identifiant unique de la librairie web-vitals, avant toute agrégation, sous peine de fausser tous vos calculs.
À faire
- activer l’export BigQuery de GA4
- envoyer les métriques et l’attribution via web-vitals
- filtrer la dernière valeur par identifiant
- rapporter au 75e percentile
- matérialiser les données pour les tableaux de bord fréquents
À éviter
- se fier uniquement aux outils CrUX
- agréger sans filtrer les valeurs en doublon
- interroger directement l’export brut pour des dashboards intensifs
- ignorer le mode bac à sable gratuit de BigQuery
Points clés à retenir
- Couplez GA4 et BigQuery pour dépasser les limites des outils CrUX.
- Configurez l'export BigQuery et envoyez vos données via la librairie web-vitals.
- Ne conservez que la dernière valeur reçue par identifiant de métrique.
- Calculez et rapportez vos métriques au 75e percentile.
- Visualisez avec Looker Studio et le connecteur Web Vitals.
Pour mesurer vos Core Web Vitals avec GA4 et BigQuery, retenez l’essentiel.
Quiz : testez vos connaissances
Quiz : testez vos connaissances
-
Quel avantage GA4 couplé à BigQuery offre-t-il par rapport aux seuls outils CrUX ?
- Une mesure plus précise mais sans aucune possibilité de segmentation
- L'accès aux données brutes, segmentables, pour comprendre pourquoi une métrique se dégrade
- Une fenêtre de 28 jours plus longue que celle de CrUX
Les outils CrUX livrent des données agrégées sur 28 jours, peu segmentables. GA4 et BigQuery donnent les données brutes, ce qui permet de segmenter et d’expliquer les causes d’une dégradation.
-
Pour une même métrique comme le CLS sur une même page, plusieurs événements peuvent arriver. Lequel retenir ?
- La dernière valeur reçue, car le CLS se met à jour au fil de la vie de la page
- La première valeur reçue, mesurée dès le chargement
- La moyenne de tous les événements reçus pour cette page
Le CLS évolue pendant la vie de la page et génère plusieurs événements. Seule la dernière valeur est exacte : il faut la filtrer par identifiant pour éviter les doublons.
-
Cette solution de mesure avec GA4 et BigQuery est-elle payante ?
- Non, elle s'appuie sur des outils gratuits, BigQuery proposant un mode bac à sable
- Oui, BigQuery facture chaque requête dès le premier euro
- Oui, l'export BigQuery de GA4 nécessite un abonnement payant
La démarche repose sur des outils gratuits : GA4, l’export BigQuery et son mode bac à sable, ainsi que Looker Studio pour la visualisation.
Besoin d'un accompagnement SEO ?
Vous souhaitez un suivi des Core Web Vitals sur mesure, croisé avec vos données métier ?