web-dev-qa-db-ja.com

Googleアナリティクスのeコマーストラッキングの不一致の考えられる原因は何ですか?

Googleタグマネージャーを使用して、Googleアナリティクスのeコマーストラッキングを設定しました。

コード:

$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>

追跡は機能しますが、データベースレコードと比較して1日あたり約200(30%)のトランザクションが欠落しています。

考えられる原因と、この問題をデバッグするための最良の方法は何ですか?

2
Taner

GTMのdataLayerオブジェクトが非同期で取得されるため、準備が完了する前にスクリプトが実行されています。つまり、ロードイベントが発生/トリガーされるのを待つ必要があります。

サーバー側のphpコードは、dataLayerに書き込むのと同様に適切ではなく、このコードがGTMのデータレイヤーオブジェクトを待っていない根本的な問題です。これの代わりに、jsに対応する変数を作成するだけです。

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

プッシュコードの前に、変数を作成するためにPHPコードをどこかに配置する必要があります

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

次に、loadイベントを使用して、サーバー側のコードをGTMのdataLayerに適切に挿入できます。次の要点を使用できます。

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

次に、コールバック関数内に行を追加します。

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

またはjQueryを次のように使用します

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

多くのユーザーが広告ブロッカーを使用しているため、Googleアナリティクスとデータベースの間の30%の不一致は正常です。

0
unixdebian11