Pourquoi GA4 n’enregistre pas automatiquement les événements ?

GA4 n’enregistre pas tous les événements automatiquement : son modèle est centré sur les events et seules quelques interactions de base sont collectées ; la plupart des actions exigent une configuration via GTM, gtag ou Measurement Protocol (documentation Google Analytics).

Comment GA4 suit les interactions

Je détaille comment GA4 suit les interactions et pourquoi tout n’est pas capté automatiquement.

Un event dans GA4 est une action mesurée (ex : clic, vue de page, achat). Un événement transporte des parameters — paires clé/valeur qui décrivent le contexte (ex : item_id, value, currency). Ce modèle centré sur les événements diffère du suivi basé sur les vues de page (pageview) car chaque interaction devient une unité autonome, plus flexible pour le suivi mobile, single-page apps et funnels non linéaires.

  • Automatic / automatic_enhanced : Ce que GA4 collecte sans configuration ou via l’« Enhanced Measurement ». Exemples : page_view, scroll, file_download.
  • Recommended : Événements suggérés par Google avec paramètres standards pour assurer compatibilité des rapports. Exemples : purchase (avec value, currency, items), sign_up (avec method).
  • Custom : Événements définis par vos soins pour besoins spécifiques. Exemples : click_cta, form_submit.

Les paramètres sont essentiels pour rendre les événements exploitables. Par exemple, pour un achat, capturer item_id permet d’analyser produits, value et currency calculent le revenu. Ces paramètres servent aussi à créer des audiences et des segments, ou à construire des conversions conditionnelles.

Formez-vous à Google Analytics !

Maîtriser Google Analytics est crucial pour comprendre votre audience, optimiser vos campagnes, améliorer l'expérience utilisateur et mesurer vos conversions... Gagnez du temps avec nos formations Google Analytics.

Bonnes pratiques de nommage : utiliser le snake_case (ex : sign_up, add_to_cart). Maintenir la cohérence entre équipes et éviter les synonymes multiples pour le même événement. Hiérarchie : les events sont la source brute ; une conversion est simplement un event que vous marquez comme conversion. Ne marquez que les actions business-critical comme conversions (limite pratique : rester proche des 30 conversions maximum recommandés dans la documentation officielle).

{
  "name": "purchase",
  "params": {
    "currency": "EUR",
    "value": 49.99,
    "items": [{"item_id":"sku123","item_name":"T-shirt"}]
  }
}
CatégorieExemplesQuand convertirParamètres à capturer
Automatique / Enhancedpage_view, scroll, file_downloadConvertir si action business (rarement)page_location, page_title, file_name
Recommendedpurchase, sign_upSouvent : opérations critiques (achat, inscription)value, currency, items, method
Customclick_cta, form_submitConvertir si impact business claircta_id, form_id, success(Boolean), item_id

Quel rôle joue Google Tag Manager

J’utilise Google Tag Manager (GTM) comme couche de déploiement centralisée pour gérer les tags, les déclencheurs (triggers) et les variables sans toucher au code source du site, et pour mapper proprement les interactions vers GA4 (Google Analytics 4).

Un container GTM contient quatre éléments clés : les tags (balises qui envoient des données, ex. tag GA4), les déclencheurs (conditions qui lancent les tags), les variables (valeurs réutilisables, ex. {{Click Text}}) et le dataLayer (pile de données JavaScript servant de canal entre le site et GTM).

Avantages pratiques : déploiement sans release dev (les marketeurs ou analystes peuvent publier), versioning automatique des containers, debug en preview (mode Preview), gestion de déclencheurs complexes (sélecteurs CSS, variables personnalisées, événements history pour SPA — Single Page Application) et possibilité d’intégration server-side via GTM server container. Sources : Documentation Google Tag Manager et Google Analytics Help.

Exemples concrets :

  • Push dataLayer pour un clic CTA — Code à placer côté front :
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  event: 'cta_click',
  cta_text: 'Télécharger',
  cta_id: 'cta-download'
});
  • Trigger click pour un sélecteur CSS — configuration : Type = Click – All Elements, Condition = Click Element matches CSS selector .btn-download.
  • Tag GA4 event configuré dans GTM : Event Name = cta_click, Parameters = { cta_text: {{DL – cta_text}}, cta_id: {{DL – cta_id}} }.
  • Si on n’utilise pas GTM, équivalent gtag :
gtag('event', 'cta_click', {
  'cta_text': 'Télécharger',
  'cta_id': 'cta-download'
});

Pièges courants : doublons lorsque le même événement est envoyé via gtag et via GTM, déclencheurs trop larges qui génèrent du bruit, absence de dataLayer sur SPA (nécessite des dataLayer.push ou des triggers History/Route change). Références utiles : articles techniques de Simo Ahava et la documentation Google.

Checklist de debug :

  • Activer GTM Preview pour vérifier quels tags se déclenchent.
  • Utiliser l’extension Tag Assistant pour Chrome.
  • Vérifier la présence des pushes dans le dataLayer (console JS).
  • Observer les requêtes Network > filtrer collect (collect requests) pour GA4.
  • Contrôler DebugView dans l’interface GA4 pour voir les events reçus en temps réel.
Action utilisateurdataLayer / triggertag GA4Paramètre envoyé
Clic sur bouton TéléchargerdataLayer.push event: ‘cta_click’ / Click trigger .btn-downloadGA4 Event tag (event_name: cta_click)cta_text, cta_id
Soumission formulairedataLayer.push event: ‘form_submit’ / Form Submit triggerGA4 Event tag (event_name: form_submit)form_id, form_state

Pourquoi des événements sont parfois absents

Je constate que la plupart des interactions requièrent une configuration explicite, et que plusieurs facteurs techniques et stratégiques empêchent parfois leur enregistrement dans GA4.

Je détaille les causes principales et comment les tester et corriger.

1) Configuration manuelle nécessaire.
Si vous n’avez pas défini l’événement il n’apparaîtra pas.
Tester : Utiliser DebugView dans GA4 (vue en temps réel pour développeurs) pour voir les événements envoyés depuis votre navigateur.
Résolution : Déclarer l’événement via gtag ou Google Tag Manager (GTM). Expliquer GTM : outil de gestion des balises côté client pour déployer sans toucher le code.

2) Architecture du site (SPA, chargement asynchrone, frameworks JS, CMS headless).
Les Single Page Applications (SPA) et chargements asynchrones ne provoquent pas de rechargement de page, donc les événements basés sur onload ne se déclenchent pas.
Tester : Sur une navigation interne, surveiller DebugView et le réseau pour les hits lors des changements de route.
Résolution : Instrumenter des événements virtuels sur route change (router.afterEach, history.pushState), ou déclencher des balises GTM à chaque changement de route.

3) Erreurs de balisage ou déclencheurs mal définis.
Sélecteurs CSS dynamiques ou conditions trop strictes empêchent le déclenchement.
Tester : Utiliser GTM Preview pour simuler et voir quels déclencheurs s’activent et vérifier que les éléments sont présents au moment du clic.
Résolution : Simplifier sélecteurs, ajouter attentes DOM ou MutationObserver.

4) Doublons et incohérences.
Même event envoyé deux fois ou paramètres incohérents casse l’analyse.
Tester : Vérifier les requêtes réseau (/collect ou /g/collect selon implémentation) et comparer les event_name et event_params.
Résolution : Ajouter un event_id côté client/serveur pour déduplication et normaliser les paramètres.

5) Alignement insuffisant avec la stratégie marketing.
Événements non pertinents ou mal nommés ne servent pas les KPIs.
Tester : Cartographier les KPIs et vérifier que chaque événement correspond à un besoin analytique.
Résolution : Renommer et documenter les events.

Guide de dépannage pas-à-pas et checklist opérationnelle :

  • Vérifier DebugView pour les événements en temps réel.
  • Activer GTM Preview et tester scénarios utilisateur.
  • Inspecter le réseau pour les hits /collect ou /g/collect et valider les event_params.
  • Contrôler les sélecteurs CSS et le timing des déclencheurs.
  • Ajouter event_id pour gérer la déduplication client/serveur.
  • Instrumenter événements virtuels sur route change pour SPA.
  • Revoir la nomenclature pour alignement avec les KPIs.
dataLayer.push({
  'event': 'purchase',
  'event_id': 'order_12345',
  'value': 99.9,
  'currency': 'EUR'
});
CauseSymptômeSolution
Pas d’événement définiRien dans DebugViewDéclarer l’événement via gtag/GTM
SPA / chargement asynchroneÉvénements sur refresh seulementDéclencher événements sur route change
Déclencheurs erronésÉvénements intermittentsCorriger sélecteurs et timing
Doublons / paramètres incohérentsMesures dupliquées ou erronéesAjouter event_id et normaliser params
Mauvais alignement KPIÉvénements présents mais inutilesRe-qualifier et renommer les events

Comment relier événements, campagnes et attribution

Je relie systématiquement événements, campagnes et attribution pour obtenir des rapports exploitables et éviter les pertes de données entre clic et conversion.

Un tagging UTM cohérent est la base : utm_source (origine), utm_medium (canal), utm_campaign (nom de campagne), utm_term (mot-clé) et utm_content (variation créative).

Google Ads utilise l’auto-tagging via le paramètre gclid (Google Click Identifier) qui évite les erreurs manuelles. Dans GA4, ces valeurs apparaissent dans les champs traffic_source (traffic_source.source, traffic_source.medium, traffic_source.campaign).

Pour garantir la persistance des paramètres, je passe systématiquement les utm_* comme event parameters lors des navigation SPA ou redirections. Exemple de push dataLayer incluant les UTM :

// Exemple dataLayer push
dataLayer.push({
  'event': 'page_view',
  'utm_source': 'newsletter',
  'utm_medium': 'email',
  'utm_campaign': 'promo_avril',
  'page_path': '/landing'
});

Configuration d’attribution dans GA4 : je marque les conversions importantes, je définis la fenêtre d’attribution (par défaut 30 jours après clic et 1 jour après vue) et je choisis un modèle d’attribution (ex : dernier clic non-direct ou data-driven). Ces choix modifient la façon dont les conversions sont créditées et donc vos rapports. Source : Google Support (Attribution GA4).

Le server-side tagging améliore la persistance des paramètres en contournant les bloqueurs d’annonces et en centralisant les règles cross-domain. Exemple simple Measurement Protocol pour conserver utm et event_id :

POST https://www.google-analytics.com/mp/collect?measurement_id=G-XXXX&api_secret=XXXX
{
  "client_id": "12345.67890",
  "events": [{
    "name": "purchase",
    "params": {
      "value": 49.99,
      "currency": "EUR",
      "event_id": "evt-123",
      "utm_source": "newsletter",
      "utm_medium": "email",
      "utm_campaign": "promo_avril"
    }
  }]
}

Processus de validation en production :

  • Génération d’URL : Construire l’URL avec utm_* bien formatés.
  • Clic test : Cliquer et vérifier le DebugView de GA4 (Replay en temps réel).
  • Correspondance : Confirmer l’apparition dans les rapports Acquisition (source/medium et campagne).
CampagneParamètreVérification
Newsletter Avrilutm_source=newsletter utm_medium=email utm_campaign=promo_avrilDebugView → traffic_source.source=newsletter / Rapports Acquisition
Google Ads Searchauto-tagging gclid (ou utm_source=google)Vérifier import gclid si lié / conversions attribuées
Remarketingutm_content=variantA utm_term=seg1Comparer event_params utm_content & utm_term dans DebugView

Prêt à fiabiliser votre tracking GA4 pour mesurer vos vrais résultats ?

GA4 ne capture pas automatiquement tous les événements parce que son modèle exige une intention de tracking : events, paramètres et conversions doivent être conçus et implémentés. Utiliser GTM, respecter des conventions de nommage, adapter le tracking aux SPA/CMS et relier les events aux UTM assure des données exploitables. En appliquant les méthodes et contrôles décrits vous obtiendrez des rapports plus fiables et des décisions marketing mieux informées, donc un meilleur ROI pour vos actions.

FAQ

  • GA4 enregistre-t-il tous les clics et interactions automatiquement ?
    GA4 capture quelques interactions de base via l’Enhanced Measurement (page_view, scroll, outbound clicks, site_search, file_download, vidéo engagement) si activé, mais la majorité des actions importantes (CTA, formulaires, achats) doivent être configurées explicitement comme events.
  • Dois-je utiliser GTM ou gtag pour envoyer des events vers GA4 ?
    GTM est recommandé pour la gestion centralisée, le versioning et le debug sans déployer du code. gtag peut suffire pour des implémentations très simples, mais GTM apporte plus de contrôle et d’évolutivité.
  • Comment tester si mes events arrivent bien dans GA4 ?
    Utilisez DebugView dans GA4 pour visualiser les events en temps réel, le mode Preview de GTM, et vérifiez les requêtes réseau (/collect) dans l’onglet Network du navigateur pour confirmer les payloads et parameters.
  • Pourquoi je vois des événements en double dans GA4 ?
    Les doublons surviennent souvent lorsque le même event est envoyé depuis le client (gtag ou GTM) et depuis une autre source (server-side ou un autre tag). Utilisez des event_id pour déduplication, vérifiez les déclencheurs GTM et évitez d’installer plusieurs fois le même tag.
  • Comment assurer que mes campagnes sont correctement attribuées aux events ?
    Taggez systématiquement vos liens (utm_source, utm_medium, utm_campaign) ou activez l’auto-tagging pour Ads, envoyez ces paramètres avec les events (via dataLayer) et validez la présence des fields traffic_source dans DebugView et les rapports acquisition.

 

 

A propos de l’auteur

Franck Scandolera — Expert & formateur en tracking avancé server-side, Analytics Engineering, automatisation No/Low Code (n8n) et intégration de l’IA en entreprise. Responsable de l’agence webAnalyste et de l’organisme de formation Formations Analytics. Références clients : Logis Hôtel, Yelloh Village, BazarChic, Fédération Française de Football, Texdecor. Dispo pour aider les entreprises => contactez moi.

Retour en haut
Formations Analytics