web-dev-qa-db-fra.com

Quelles sont les causes possibles des divergences dans le suivi du commerce électronique de Google Analytics?

Nous avons configuré le suivi Google Analytics Ecommerce via Google Tag Manager.

Code:

$tracking_script = "
dataLayer.Push({
    'transactionId': '$ref',
    'transactionAffiliation': '$cartec_name',
    'transactionTotal': '$amount',
    'transactionTax': '',
    'transactionShipping': '',
    'transactionProducts': [{
        'sku': 'DD-{$amount}-{$currency}',
        'name': '{$cartec_name}_Deposit',
        'category': '',
        'price': '$amount',
        'quantity': 1
    }],
    'event': 'deposit_successful'
});
";
<script type="text/javascript">
    if (typeof(dataLayer) !== 'undefined') {
        <?php echo $tracking_script; ?>
    }
</script>

Le suivi fonctionne, mais il manque environ 200 (30%) transactions par jour par rapport aux enregistrements de notre base de données.

Quelles sont les causes possibles et quelles sont les meilleures méthodes pour déboguer ce problème?

2
Taner

Votre script est en cours d'exécution avant que l'objet dataLayer du GTM soit prêt, car il est extrait de manière asynchrone. Cela signifie que vous devez attendre que l'événement de chargement soit déclenché/déclenché.

Votre code php côté serveur n’est pas bon, comme l’écriture dans le dataLayer, et c’est bien le problème fondamental que ce code n’attend pas pour l’objet datalayer du GTM. Au lieu de cela, créez simplement une variable qui soit prête pour js.

 $tracking_script = "var myObject = {your object code}";

Avant le code Push, vous devez mettre quelque part le code php pour créer le var

<script type="text/javascript">
  <?php echo $tracking_script; ?>
</script>

Vous pouvez ensuite utiliser l'événement load pour injecter correctement le code côté serveur dans le dataLayer du GTM. Vous pouvez utiliser le prochain Gist:

https://Gist.github.com/web20opensource/6c67368a2fdb0e712550#file-load-event-attentvent-addeventlistener-cross-browser

Ensuite, ajoutez simplement vos lignes dans la fonction de rappel:

var callBack = function(){
     var myObject = myObject || {};
     dataLayer = dataLayer || [];
     dataLayer.Push(myObject);
};

Ou utilisez jQuery comme

 $( window ).load(function() {
      // Run code
         var myObject = myObject || {};
         dataLayer = dataLayer || [];
         dataLayer.Push(myObject);
    });
1
mario ruiz

Un écart de 30% entre Google Analytics et votre base de données est normal, car de nombreux utilisateurs utilisent des bloqueurs de publicité, ce qui empêche le script de Google Analytics de se charger et de permettre ainsi le suivi de tout élément.

0
unixdebian11