Comment créer des dimensions personnalisées dans GA-4 pour retrouver les sources d’acquisition perdues dans ‘Not Set’

Comment créer des dimensions personnalisés dans Google Analytics 4 pour corriger votre attribution
profile photo
Samantha Buigné
Sommaire

1. Principes de base

  • Le problème des "(not set)" dans GA4
  • Fonctionnement des dimensions personnalisées
  • Impact sur l'attribution marketing

2. Préparation

  • Audit de vos données d'attribution
  • Document de mapping des dimensions

3. Configuration technique avec Google Tag Manager

  • Configuration des variables GTM
  • Création du cookie d'attribution
  • Implémentation des dimensions personnalisées dans GA4
  • Configuration des tags GA4
  • Création des rapports personnalisés

4. Validation et maintenance

  • Tests avec DebugView et Preview Mode
  • Monitoring des résultats
  • Dépannage et optimisation

INTRODUCTION

À quoi servent les dimensions personnalisées ?
Les dimensions personnalisées dans GA4 permettent de récupérer des informations d'attribution cruciales qui seraient autrement perdues, en particulier lors de l'utilisation du Measurement Protocol en configuration server-side.
Cette solution technique, implémentée via Google Tag Manager, permet d’apporter une nouvelle vue au problème des conversions "(not set)" qui représentent souvent une part significative des données, rendant impossible l'analyse précise du ROI marketing et l'optimisation des campagnes.
La méthode présentée ici a été testée et validée sur plusieurs sites e-commerce, permettant de réduire considérablement le taux de données non attribuées et d'améliorer la qualité des analyses marketing.

1. Principes de base

1.1 Le problème des "(not set)" dans GA4

Lorsque vous utilisez GA4 en configuration server-side, particulièrement avec le Measurement Protocol, vous pouvez rencontrer un problème majeur d'attribution :
  1. Perte massive d'attribution : Une grande partie des conversions apparaissent comme "(not set)" dans les rapports d'acquisition
  1. Impact du consentement cookies : Les utilisateurs refusant les cookies analytiques génèrent davantage de conversions non attribuées
Nos analyses sur plusieurs sites e-commerce révèlent que jusqu'à 48% des conversions peuvent être attribuées à "(not set)" dans une configuration server-side standard.

Cas concret observé :

  • Propriété : 862 achats dont 410 "(not set)" (48%)
Cette observation clé montre que les achats correctement attribués en (452) correspondent presque exactement au nombre total d'achats en client-side (443), confirmant que le problème est lié à la transmission du session_id.
Image without caption

1.2 Fonctionnement des dimensions personnalisées

Les dimensions personnalisées dans GA4 offrent une solution technique élégante à ce problème :
  1. Capture indépendante : Elles permettent de capturer et stocker des informations d'attribution indépendamment du mécanisme standard de GA4
  1. Persistance configurable : Les données peuvent être conservées selon vos besoins business (30, 60, 90 jours)
Contrairement aux mécanismes d'attribution standards de GA4, les dimensions personnalisées peuvent fonctionner même sans session_id, offrant ainsi une solution robuste au problème des "(not set)".

1.3 Impact sur l'attribution marketing

L'utilisation de dimensions personnalisées pour corriger l'attribution transforme la qualité de vos analyses marketing :
  1. Réduction des "(not set)" : Diminution significative des conversions sans source identifiée dans une nouvelle dimension — ATTENTION, la source par défaut restera en (not set)
  1. Vision complète du parcours client : Compréhension claire de l'origine des conversions
  1. Optimisation budgétaire : Allocation des investissements marketing basée sur des données complètes
  1. Mesure précise du ROI : Évaluation correcte de la performance par canal et par campagne
  1. Continuité analytique : Conservation de l'historique tout en améliorant l'attribution future
Cet impact se traduit directement par une meilleure prise de décision marketing et une optimisation des investissements.

2. Préparation

2.1 Audit de vos données d'attribution

Avant d'implémenter les dimensions personnalisées, réalisez un audit complet de vos données actuelles :
  1. Analysez vos rapports d'acquisition :
      • Identifiez le pourcentage de conversions "(not set)"
      • Observez la répartition par source/medium
      • Comparez avec les données de vos plateformes publicitaires
  1. Examinez les parcours de conversion :
      • Utilisez l'outil Exploration pour analyser les chemins menant aux conversions
      • Identifiez les points de rupture où l'attribution est perdue
  1. Vérifiez votre implémentation actuelle :
      • Paramétrage de votre CMP (Consent Management Platform)
      • Structure des URLs avec UTM dans vos campagnes
Cet audit vous permettra de quantifier précisément l'ampleur du problème et d'adapter la solution à votre situation spécifique.

2.2 Document de mapping des dimensions

Créez un document de référence qui servira de guide pour l'implémentation et la maintenance :

Structure recommandée :

  1. Logique d'attribution :
      • Règles de priorité entre sources
      • Durée de conservation des cookies
      • Traitement des cas spéciaux (direct, referral)
  1. Plan d'implémentation GTM :
      • Structure des variables et des tags
      • Déclencheurs à configurer
      • Séquence de déploiement
Ce document garantit une approche cohérente et facilite la communication entre équipes techniques et marketing.

3. Configuration technique avec Google Tag Manager

3.1 Configuration des variables GTM

La première étape consiste à créer les variables nécessaires dans Google Tag Manager :
  1. Créez une variable JavaScript personnalisée pour gérer l'attribution :
      • Nom : "JS - Cookie Attribution"
      • Type : JavaScript personnalisé
      • Code :
javascript
function() { // Configuration var COOKIE_NAME = '_te'; var COOKIE_DURATION_DAYS = 30; // Fonction pour lire le cookie d'attribution function getAttributionCookie() { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i].trim(); if (cookie.indexOf(COOKIE_NAME + '=') === 0) { try { return JSON.parse(decodeURIComponent(cookie.substring(COOKIE_NAME.length + 1))); } catch (e) { return null; } } } return null; } // Fonction pour définir le cookie d'attribution function setAttributionCookie(data) { var expiryDate = new Date(); expiryDate.setDate(expiryDate.getDate() + COOKIE_DURATION_DAYS); document.cookie = COOKIE_NAME + '=' + encodeURIComponent(JSON.stringify(data)) + ';expires=' + expiryDate.toUTCString() + ';path=/;SameSite=Lax'; } // Extraction des paramètres UTM de l'URL function getUTMParameters() { var urlParams = new URLSearchParams(window.location.search); var utmParams = { utm_source: urlParams.get('utm_source') || '', utm_medium: urlParams.get('utm_medium') || '', utm_campaign: urlParams.get('utm_campaign') || '', utm_content: urlParams.get('utm_content') || '', utm_term: urlParams.get('utm_term') || '', timestamp: Date.now() }; // Si aucun UTM n'est présent, vérifier le référent if (!utmParams.utm_source && document.referrer) { try { var referrer = new URL(document.referrer); utmParams.utm_source = referrer.hostname; utmParams.utm_medium = 'referral'; } catch (e) { // Gérer les erreurs d'URL invalide } } return utmParams; } // Gestion de l'attribution var existingData = getAttributionCookie(); var currentUTMs = getUTMParameters(); // Si nous avons des UTMs actuels ou s'il n'y a pas de données existantes if ((currentUTMs.utm_source || currentUTMs.utm_medium) || !existingData) { setAttributionCookie(currentUTMs); return currentUTMs; } // Sinon retourner les données existantes return existingData; }
  • (TEST) Exemple de test de code dans le navigateur (Application) :
Image without caption
  • (TEST) Recoller le code une nouvelle fois ensuite dans la console :
javascript
function() { // Configuration var COOKIE_NAME = '_te'; var COOKIE_DURATION_DAYS = 30; // Fonction pour lire le cookie d'attribution function getAttributionCookie() { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i].trim(); if (cookie.indexOf(COOKIE_NAME + '=') === 0) { try { return JSON.parse(decodeURIComponent(cookie.substring(COOKIE_NAME.length + 1))); } catch (e) { return null; } } } return null; } // Fonction pour définir le cookie d'attribution function setAttributionCookie(data) { var expiryDate = new Date(); expiryDate.setDate(expiryDate.getDate() + COOKIE_DURATION_DAYS); document.cookie = COOKIE_NAME + '=' + encodeURIComponent(JSON.stringify(data)) + ';expires=' + expiryDate.toUTCString() + ';path=/;SameSite=Lax'; } // Extraction des paramètres UTM de l'URL function getUTMParameters() { var urlParams = new URLSearchParams(window.location.search); var utmParams = { utm_source: urlParams.get('utm_source') || '', utm_medium: urlParams.get('utm_medium') || '', utm_campaign: urlParams.get('utm_campaign') || '', utm_content: urlParams.get('utm_content') || '', utm_term: urlParams.get('utm_term') || '', timestamp: Date.now() }; // Si aucun UTM n'est présent, vérifier le référent if (!utmParams.utm_source && document.referrer) { try { var referrer = new URL(document.referrer); utmParams.utm_source = referrer.hostname; utmParams.utm_medium = 'referral'; } catch (e) { // Gérer les erreurs d'URL invalide } } return utmParams; } // Gestion de l'attribution var existingData = getAttributionCookie(); var currentUTMs = getUTMParameters(); // Si nous avons des UTMs actuels ou s'il n'y a pas de données existantes if ((currentUTMs.utm_source || currentUTMs.utm_medium) || !existingData) { setAttributionCookie(currentUTMs); return currentUTMs; } // Sinon retourner les données existantes return existingData; }
  1. Créez des variables dédiées pour chaque paramètre d'attribution : Pour utm_source : Pour utm_medium : Pour utm_campaign :
      • Nom : "JS - Cookie Attribution - utm_source"
      • Type : JavaScript personnalisé
      • Code :
      javascript
      function() { var attribution = {{JS - Cookie Attribution}}; return attribution && attribution.utm_source ? attribution.utm_source : '(not set)'; }
      • Nom : "JS - Cookie Attribution - utm_medium"
      • Type : JavaScript personnalisé
      • Code :
      javascript
      function() { var attribution = {{JS - Cookie Attribution}}; return attribution && attribution.utm_medium ? attribution.utm_medium : '(not set)'; }
      • Nom : "JS - Cookie Attribution - utm_campaign"
      • Type : JavaScript personnalisé
      • Code :
      javascript
      function() { var attribution = {{JS - Cookie Attribution}}; return attribution && attribution.utm_campaign ? attribution.utm_campaign : '(not set)'; }
  1. Créez une variable pour le statut de consentement :
      • Nom : "JS - Consent Status"
      • Type : JavaScript personnalisé
      • Code (exemple avec OneTrust) :
      javascript
      function() { // Adapter à votre CMP if (typeof OnetrustActiveGroups !== 'undefined') { return OnetrustActiveGroups.includes('C0002') ? 'opt-in' : 'opt-out'; } return 'unknown'; }

3.2 Création du cookie d'attribution

Configurez un tag pour initialiser le cookie d'attribution :
  1. Créez un nouveau tag :
      • Nom : "JS - Attribution Cookie Initializer"
      • Type : HTML personnalisé
      • Code HTML :
      html
      <script> // Ce tag initialise simplement la variable d'attribution// pour déclencher la logique de création/mise à jour du cookie (function () { return {{JS - Cookie Attribution}}; })(); // Aucune action supplémentaire nécessaire,// la variable s'occupe de la logique de cookie </script>
  1. Configurez le déclencheur :
      • Type : "All Pages"
      • Priorité : Définir comme "Élevée" pour s'exécuter avant les tags GA4
  1. Options avancées :
      • Dans "Séquence de balises", sélectionnez "Shoot Before Other Tags"
      • Cela garantit que le cookie d'attribution sera initialisé avant l'envoi des événements GA4

3.3 Implémentation des dimensions personnalisées dans GA4

Configurez les dimensions personnalisées dans l'interface GA4 :
  1. Accédez à l'interface d'administration :
      • Connectez-vous à votre compte GA4
      • Cliquez sur "Admin" (icône d'engrenage)
      • Sélectionnez "Propriété > Définitions personnalisées > Dimensions personnalisées"
  1. Créez les dimensions suivantes : UTM Source : UTM Medium : UTM Campaign : Opt Status :
      • Nom : "custom_utm_source"
      • Description : "Source d'acquisition via cookie d'attribution"
      • Portée : "Événement"
      • Nom du paramètre d'événement : "custom_utm_source"
      • Nom : "custom_utm_medium"
      • Description : "Canal média via cookie d'attribution"
      • Portée : "Événement"
      • Nom du paramètre d'événement : "custom_utm_medium"
      • Nom : "custom_utm_campaign"
      • Description : "Campagne marketing via cookie d'attribution"
      • Portée : "Événement"
      • Nom du paramètre d'événement : "custom_utm_campaign"
      • Nom : "custom_opt_status"
      • Description : "État du consentement cookies"
      • Portée : "Événement"
      • Nom du paramètre d'événement : "custom_opt_status"
Afficher l'image

3.4 Configuration des tags GA4

Modifiez vos tags GA4 pour inclure les dimensions personnalisées :
  1. Tag de configuration GA4 :
      • Ouvrez votre tag de configuration GA4 existant
      • Dans la section "Champs à définir", ajoutez les mappings suivants :
        • custom_utm_source : "utm_source"
        • custom_utm_medium : "utm_medium"
        • custom_utm_campaign : "utm_campaign"
        • custom_opt_status : "opt_status"
      Afficher l'image
  1. Tags d'événements GA4 :
      • Pour chaque tag d'événement GA4, dans la section "Paramètres d'événement", ajoutez :
        • custom_utm_source : {{JS - Cookie Attribution - utm_source}}
        • custom_utm_medium : {{JS - Cookie Attribution - utm_medium}}
        • custom_utm_campaign : {{JS - Cookie Attribution - utm_campaign}}
        • custom_opt_status : {{JS - Consent Status}}
      Afficher l'image

3.5 Création des rapports personnalisés

Pour exploiter pleinement les dimensions personnalisées, créez des rapports dédiés :
  1. Accédez à l'outil Exploration :
      • Dans GA4, cliquez sur "Exploration"
      • Sélectionnez "Créer une exploration"
      • Choisissez le modèle "Tableau libre"
  1. Configurez votre rapport :
      • Dans la section "Variables", ajoutez vos dimensions personnalisées
      • Sélectionnez les métriques pertinentes (conversions, revenus)
      • Définissez la période d'analyse appropriée
  1. Construisez votre tableau :
      • Glissez-déposez "custom_utm_source" dans les lignes
      • Ajoutez "custom_utm_medium" comme dimension secondaire
      • Placez vos métriques de conversion dans les colonnes
  1. Ajoutez des segments :
      • Créez un segment pour les utilisateurs opt-in
      • Créez un segment pour les utilisateurs opt-out
      • Comparez les performances entre ces segments
Image without caption
Résultats observés avec les sources retrouvées :
Image without caption

4. Validation et maintenance

4.1 Tests

Validez votre implémentation en utilisant à la fois le mode Preview de GTM et DebugView de GA4 :
  1. Tests GTM en Preview Mode :
      • Cliquez sur "Aperçu" dans GTM
      • Sur votre site, vérifiez que :
        • Le tag "JS - Attribution Cookie Initializer" se déclenche correctement
        • Les variables d'attribution contiennent les valeurs attendues
        • Les tags GA4 incluent les dimensions personnalisées
  1. Validation dans GA4 DebugView :
      • Dans GA4, accédez à "Admin > DebugView"
      • Dans GTM Preview, vérifiez que les événements envoyés à GA4 incluent les dimensions personnalisées
      • Confirmez que les valeurs correspondent à celles de vos variables GTM
  1. Test des différents scénarios :
      • Visitez votre site avec différents paramètres UTM
      • Effectuez une conversion complète
      • Vérifiez la persistance entre sessions
      • Testez avec et sans consentement
Afficher l'image

4.2 Monitoring des résultats

Mettez en place un processus de surveillance régulier :
  1. Métriques clés à suivre :
      • Pourcentage de conversions "(not set)" vs attribuées
      • Répartition des sources d'acquisition
      • Comparaison avec les plateformes publicitaires
  1. Rapport périodique :
      • Créez un tableau de bord dédié à l'attribution
      • Établissez un rapport hebdomadaire d'amélioration
      • Comparez les données avant/après implémentation
  1. Alertes automatiques :
      • Configurez des alertes pour détecter les augmentations de "(not set)"
      • Surveillez les écarts significatifs entre propriétés client-side et server-side
      • Mettez en place des notifications en cas d'anomalies

4.3 Dépannage et optimisation

Anticipez les problèmes courants et optimisez votre solution :
  1. Problèmes fréquents avec GTM et solutions :
      • Variables non définies : Vérifiez l'ordre d'exécution des tags
      • Conflit avec la CMP : Assurez-vous que la CMP ne bloque pas vos cookies
      • Erreurs JavaScript : Validez votre code dans la console du navigateur
      • Problèmes de timing : Ajustez les déclencheurs et la priorité des tags
  1. Optimisations GTM recommandées :
      • Groupes de tags : Organisez vos tags en groupes logiques
      • Versions annotées : Documentez clairement les changements dans chaque version
      • Environnements distincts : Utilisez les environnements GTM pour tester avant production
      • Mise en cache : Optimisez le chargement avec la mise en cache du conteneur
  1. Évolution de la solution :
      • GTM Server-Side : Envisagez une migration vers GTM Server-Side pour plus de contrôle
      • Intégration avec d'autres outils : Connectez les données à votre CRM ou outil BI
      • Automatisation : Développez des processus automatisés de vérification et de rapport

Conclusion

L'implémentation de dimensions personnalisées via Google Tag Manager offre une solution robuste au problème critique des "(not set)" dans l'attribution server-side GA4. Cette approche, testée et validée sur plusieurs sites e-commerce, permet de récupérer une visibilité précieuse sur l'origine réelle de vos conversions.
La combinaison de GTM et des dimensions personnalisées GA4 présente plusieurs avantages clés :
  • Flexibilité de configuration sans intervention des développeurs
  • Facilité de maintenance et d'évolution
  • Capacité à tester rapidement différentes approches
  • Intégration harmonieuse avec les CMP et autres outils marketing
La réduction significative des conversions non attribuées se traduit directement par une meilleure optimisation des investissements marketing et une analyse ROI plus précise, créant ainsi un avantage compétitif tangible pour votre organisation.
Si vous voulez plus d’infos sur nos services et technologies :
Saas tracking pay as you go :
Coaching personnalisé :
Related posts
post image
Comment créer des rapports personnalisés dans Google Analytics 4 pour lire vos précieuses données et prendre les décisions business associées
post image
Comment créer des canaux personnalisés dans Google Analytics 4 pour corriger votre attribution
post image
Découvrez dans cette article de blog comment mettre en place le consent mode v2 de Google avec la solution TrustCommander - CommandersAct
Powered by Notaku