Analytics

Réduire automatiquement la longueur de la charge utile de Google Analytics

Nous voilà réunis avec customTask. Cette fois, nous mettrons ce merveilleux mécanisme au service d’une très, très bonne cause. L’une des “fonctionnalités” moins connues de Google Analytics est que lorsque la taille de la charge utile (le corps de la requête qui est réellement envoyé à Google Analytics avec chaque requête) dépasse une certaine limite, en particulier 8192 octets, le hit est avorté sans avertissement. Cela peut surprendre, car rien dans Google Analytics n’indique que vous manquez des résultats à cause de cela.

La solution? Un joli petit customTask script, qui réduit récursivement des parties de la charge utile jusqu’à ce que la longueur soit juste en dessous du plafond.

Réduire automatiquement la longueur de la charge utile

L’idée est que vous pourrez spécifier une liste de paramètres de charge utile à supprimer un par un de la charge utile jusqu’à ce que la taille soit en toute sécurité en dessous du maximum de 8192. Les premières choses qui iront sont certaines des dimensions par défaut que personne n’a vraiment utilisations, telles que ‘Java Enabled’ et ‘Document Encoding’. Ensuite, vous pouvez répertorier toutes les dimensions personnalisées dont vous souhaitez vous débarrasser, par ordre de priorité.

Enfin, vous pourrez répertorier les paramètres d’impression Enhanced Ecommerce que vous souhaitez supprimer de chaque impression dans la charge utile. Le script s’arrêtera dès que la longueur sera inférieure à 8192, vous obtiendrez donc très probablement des impressions contenant plus de détails que d’autres.

Pourquoi s’arrêter aux impressions ? Parce que, d’expérience, c’est là que résident la plupart des problèmes. Il ne devrait pas être trop difficile de personnaliser le script pour inclure également des promotions et même des objets de produit de commerce électronique amélioré “réguliers”.

Une fois que vous avez implémenté cela dans vos balises de commerce électronique amélioré, vous ne devriez plus jamais voir l’erreur suivante dans la console (si vous avez activé le débogueur Google Analytics ou si Universal Analytics s’exécute en mode débogage) :

avertissement de longueur de charge utile

Je recommande d’implémenter ceci customTask avec ma solution pour envoyer la longueur de la charge utile en tant que dimension personnalisée. De cette façon, vous serez en mesure de détecter si vous approchez de la longueur maximale de la charge utile avec vos hits, et vous pourrez ensuite procéder à la mise en œuvre de ce limiteur de longueur de charge utile si nécessaire.

Pour une solution alternative, jetez un œil à cet excellent article du génial Dan Wilkerson du tout aussi génial blog Bounteous.

Les customTask variable

Pour construire le customTaskvous devez créer un nouveau Variable JavaScript personnalisée. Nommez-le quelque chose comme {{customTask – réduire la longueur de la charge utile}}.

Note! Si vous avez déjà un customTask mis en œuvre dans vos balises de commerce électronique amélioré, vous devrez combiner le code ci-dessous avec le code existant customTask script que vous avez déjà. Pour obtenir des conseils sur la façon de procéder, consultez ce guide.

Ajoutez le code suivant dans le customTask corps variable :

function() {   return function(customModel) {     // Add any other default parameters you want to strip from the payload     // into this array in order of priority.      // For more details, visit: https://bit.ly/2MOhjBD     var defaultParams = ['&je', '&de', '&sd', '&vp', '&sr'];          // List the (regular) Custom Dimensions you want to strip from the     // payload in order of priority. Leave the array empty if you don't     // want to remove Custom Dimensions.      // For more details, visit: https://bit.ly/2MM6O1O     var customDims = ['&cd198', '&cd199', '&cd200'];      // List the impression object parameters you want to strip from the     // payload in order of priority. Only list the field specifier, so     // instead of '&il1pi2va', write 'va', and instead of '&il1pi4cd3', write     // 'cd3'. For more details, visit: https://bit.ly/2KehCHF     var impressions = ['va', 'br', 'ca', 'ps', 'nm'];          // Don't touch the code below.     var maxLength = 8192,         globalSendTaskName = '_' + customModel.get('trackingId') + '_sendHitTask',         originalSendHitTask = window[globalSendTaskName] = window[globalSendTaskName] || customModel.get('sendHitTask');        customModel.set('sendHitTask', function(sendModel) {            var ga = window[window['GoogleAnalyticsObject']];            // Only log if in analytics debug mode.       var log = function(msg) {         if ('dump' in ga) {           window.console.log.apply(window.console, [msg]);         }       };            var hitPayload = sendModel.get('hitPayload');            var removeKeys = function(hitPayload, keys) {         var key, regex;         while(hitPayload.length >= maxLength && keys.length) {           key = keys[0];           log('--> Removing ' + key);           regex = new RegExp(key + '=[^&]+', 'gi');           keys.shift();           hitPayload = hitPayload.replace(regex, '');           log('--> New length: ' + hitPayload.length);         }         return hitPayload;       };            var removeImpressions = function(hitPayload, keys) {         var key, regex, oldKey;         while(hitPayload.length >= maxLength && keys.length) {           if (key !== keys[0]) {             key = keys[0];             log('--> Removing &ilNpiN' + key + ' from impression objects');           }           regex = new RegExp('&il\\d+pi\\d+' + key + '=[^&]+', 'i');           if (!regex.test(hitPayload)) {             keys.shift();           }           hitPayload = hitPayload.replace(regex, '');         }         log('--> New length: ' + hitPayload.length);         return hitPayload;       };        // If over payload length, remove default parameters.       if (hitPayload.length >= maxLength) {         log('Payload too long (' + hitPayload.length + '), removing default keys...');         hitPayload = removeKeys(hitPayload, defaultParams);       }       // If over payload length, remove custom dimensions.       if (hitPayload.length >= maxLength) {         log('Payload still too long (' + hitPayload.length + '), removing Custom Dimensions...');         hitPayload = removeKeys(hitPayload, customDims);       }       // If over payload length, clean up impression objects.       if (hitPayload.length >= maxLength) {         log('Payload still too long (' + hitPayload.length + '), cleaning up Impressions...');         hitPayload = removeImpressions(hitPayload, impressions);       }            // Send the modified payload.       sendModel.set('hitPayload', hitPayload, true);       originalSendHitTask(sendModel);     });   }; } 

Assurez-vous de modifier le defaultParams, customDimset impressions tableaux pour inclure les clés que vous souhaitez purger du dataLayer. Notez que vous devrez répertorier les clés en utilisant leurs noms de paramètre de protocole de mesure plutôt que leur analytics.js les noms de champs sont. Alors au lieu de 'encoding'par exemple, vous devez utiliser '&de'.

Les clés que j’ai ajoutées au defaultParams tableau sont :

Clé Nom La description
&je Java activé Si le navigateur a activé Java ou non.
&de Encodage de documents Quel est l’encodage des caractères de la page actuelle (par exemple UTF-8).
&sd Couleurs de l’écran La profondeur de couleur de l’écran (par exemple 24-bits).
&vp Taille de la fenêtre La zone visible (en pixels) du navigateur ou de l’appareil.
&sr Résolution d’écran La résolution d’écran (en pixels) du navigateur ou de l’appareil.

Naturellement, vous voudrez peut-être en conserver certains, par exemple &vp ou alors &sr. N’hésitez pas à modifier le defaultParams tableau comme bon vous semble.

Lors de l’ajout d’éléments au impressions array, la syntaxe est légèrement plus complexe. Vous devriez seul ajoutez le spécificateur de paramètre réel, qui est la clé qui vient après &ilNpiN. Ainsi, si le nom du paramètre pour Product Impression Variant est &il2pi1vavous taperiez juste 'va' dans le tableau. Ou, si vous souhaitez purger la dimension personnalisée de portée produit de l’index 3 de vos objets d’impression, au lieu de saisir '&il1pi1cd3'vous taperiez 'cd3 dans le tableau.

Notez que pour defaultParams et customDims vous devez taper le nom complet du paramètre avec le premier &.

Ajoutez la variable à votre tag

Cette variable doit être ajoutée à la balise qui envoie la charge utile Enhanced Ecommerce avec des objets d’impression à Google Analytics. Pour l’ajouter à la balise, modifiez la variable Paramètres Google Analytics dans la balise d’impression ou ajoutez le champ directement à la balise.

Naviguez jusqu’à Plus de réglages -> Champs à définiret ajoutez le champ suivant :

Nom de domaine: tâchepersonnalisée
Évaluer: {{customTask – réduire la longueur de la charge utile}}

Ainsi:

Champs à définir

Et c’est tout pour la configuration ! Maintenant, si votre charge utile est supérieure à 8192, le script supprimera d’abord les paramètres spécifiés dans le defaultParams déployer. Ensuite, il engloutira les dimensions dans le customDims déployer. Enfin, si la charge utile est TOUJOURS trop longue, elle procédera au nettoyage de vos objets d’impressions en supprimant les champs répertoriés dans impressions un par un, impression par impression.

Comment déboguer

Si vous avez parcouru le code, comme je suis sûr que vous l’avez fait, vous avez peut-être remarqué comment j’utilise une méthode personnalisée nommée log() pour envoyer des données de débogage à la console. Le fait est que je ne veux pas polluer la console JavaScript avec des messages de débogage lorsque Google Analytics est ne pas en mode débogage, donc je fais une simple vérification pour voir si la version de débogage de analytics.js est chargé:

if ('dump' in window['ga']) {} 

Fondamentalement, si le monde ga l’objet a la méthode dumpje suppose que l’utilisateur utilise la version de débogage de analytics.js.

REMARQUE! Si quelqu’un a trouvé un moyen plus robuste de vérifier la version de débogage d’analytics.js, faites-le moi savoir ! Merci.

Ainsi, si vous souhaitez voir les messages de débogage, vous pouvez définir la bibliothèque en mode débogage en accédant à Plus de réglages -> Configuration avancée -> Utiliser la version de débogage dans votre balise Google Analytics ou dans votre variable Paramètres Google Analytics, et définissez-la sur true. Ou, vous pouvez utiliser l’extension de navigateur Google Analytics Debugger.

Une fois la bibliothèque de débogage chargée, vous pouvez voir des messages de débogage tels que ceux-ci si la charge utile dépasse la longueur maximale de 8192 :

Messages de débogage

Dans ces messages de débogage, vous pouvez voir comment le script parcourt votre charge utile, supprimant les paramètres si nécessaire.

Résumé

Je souhaite analytics.js avait une manière plus élégante de gérer les charges utiles trop volumineuses. Le simple fait de les laisser tomber est un peu exagéré, à mon avis. analytics.js pourrait, par exemple, compiler un hit personnalisé vers GA lorsque la taille maximale de la charge utile est dépassée, ce qui se transformerait en un avertissement ou une notification dans l’interface utilisateur de Google Analytics. De cette façon, vous auriez au moins une idée que quelque chose ne va pas.

Alors le customTask La solution présentée ici est, comme c’est généralement le cas pour les scripts que j’écris, un pansement pour quelque chose qui, espérons-le, sera corrigé nativement par la bibliothèque elle-même à l’avenir.

Naturellement, la “meilleure” façon d’éviter les charges utiles trop importantes est de n’envoyer que des données pertinentes à Google Analytics. Dans le cas des impressions, par exemple, cela n’a pas vraiment de sens d’envoyer chaque impression sur la page en un clic. Au lieu de cela, vous souhaitez envoyer uniquement les impressions que l’utilisateur a réellement vu. Heureusement, j’aurai peut-être un guide qui vous montrera comment suivre uniquement les impressions vues.

Faites-moi savoir dans les commentaires si vous trouvez cela utile ou si vous avez des suggestions pour améliorer la méthode !

Source : www.simoahava.com

Articles similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page
Index