2016-10-03 22 views
0

私はGTMを初めて使い、dataLayerで2つの拡張eコマースイベントを提出しようとしています。 Google Analyticsをチェックすると、最後のイベントだけが送信されているようです。Googleタグマネージャ複数の拡張eコマースイベント

私はhttp://www.simoahava.com/analytics/ecommerce-tips-google-tag-manager/に出くわしました。要約の直前に、最後のものを提出することについてだけ言いました。

dataLayer.push({ 
     'event': 'addToCart', 
     'ecommerce': { 
      'currencyCode': 'GBP', 
      'add': { 
       'products': dataLayerProducts 
      } 
     } 
    }); 
    dataLayer.push({ 
     'event': 'checkout', 
     'ecommerce': { 
      'checkout': { 
       'actionField': {'step': 1}, 
       'products': dataLayerProducts 
      } 
     } 
    }); 

Analyticsにはチェックアウトのみが登録されます。私は、次のようなもの試してみた:

dataLayer = [{ 
     'event': 'checkout', 
     'event': 'addToCart', 
     'ecommerce': { 
      'add': { 
       'products': dataLayerProducts 
      }, 
      'checkout': { 
       'actionField': {'step': 1}, 
       'products': dataLayerProducts 
      } 
     } 
    }]; 

dataLayer = [{ 
     'event': 'addToCart', 
     'ecommerce': { 
      'add': { 
       'products': dataLayerProducts 
      }, 
     } 
    }, { 
     'event': 'checkout', 
     'ecommerce': { 
      'checkout': { 
       'actionField': {'step': 1}, 
       'products': dataLayerProducts 
      } 
     } 
    }]; 

をしかし、私はどちらか、そのようにそれをやって運がなかったしました。それができない場合は、有益な回避策があれば大いに感謝します。

最新のコードで更新: 最後のイベント(チェックアウト)のみを送信します。コードは<body>タグの開始直後に表示されます。

<script> 
dataLayer = []; 
dataLayerProducts = []; 
dataLayerProducts.push({ 
    'name': 'Product Name', 
    'id': 'SKU', 
    'price': '29.95', 
    'brand': 'Brand', 
    'category': 'Some/Category', 
    'quantity': 1 
}); 
dataLayer.push({ 
    'event': 'addToCart', 
    'ecommerce': { 
     'add': { 
      'products': dataLayerProducts 
     }, 
    } 
}); 
dataLayer.push({ 
    'event': 'checkout', 
    'ecommerce': { 
     'checkout': { 
      'actionField': {'step': 1}, 
      'products': dataLayerProducts 
     } 
    } 
}); 
</script> 
<!-- Google Tag Manager --> 
// Code 
<!-- End Google Tag Manager --> 

答えて

0

発射するタグをトリガすることがで沿っeventをプッシュすることは常に良い習慣だ理由ですので、あなたは、そのイベントがどちらかである以前のプッシュまたは現在の1からかどうか、イベントを持っている必要があります、GAに送信するデータポイントSimoの例はこれを完全に示しています。しかし、dataLayerもkey:valueのペアを保持しているため、常に最新のイベントが使用されます。同時に複数のプッシュされたeventがある場合、最後にプッシュされたものは前のものを上書きします。そのため、1つのdataLayer.pushに複数のイベントを設定することはできません。関連するすべてのタグが起動することを期待してください。

Simoの例に従い、各データセット/オブジェクトをdataLayerにプッシュし、それ自身のeventと一緒に押します。例のように宣言するのではなく、dataLayer(dataLayer.push)にプッシュすると、ビルトインリスナーは特定のデータポイントを取得できます。

編集

dataLayer.push({ 
    'event': 'addToCart', 
    'ecommerce': { 
     'add': { 
     'products': // dataLayerProducts, one object per product 
     }, 
    } 
}); 
dataLayer.push({ 
    'event': 'checkout', 
    'ecommerce': { 
     'checkout': { 
     'actionField': {'step': 1}, 
     'products': // dataLayerProducts, one object per product 
     } 
    } 
}); 
+0

あなたは私を理解するためのコード例を修正でした:例として、OPのコードを変更?私はそれをどのように読んでいるのかというと、それぞれのデータセットを独自のイベントでプッシュする必要があると言うとき、私は自分の質問の最初のコードブロックでこれをやっていたと思いました。 – Nathan

+0

最初のコードブロックでは、2番目のイベントを宣言して最初のイベントを上書きします。通常のJS規則が適用されることを忘れないでください。変数に値を代入してから別の代入を割り当てると、最後の代入が適用されます。 – nyuen

+0

私はあなたのサンプルコードを取りました。私は使用している完全なコードで質問を編集しました。しかし、依然として、チェックアウトイベントだけがプッシュされているようです。カートに追加されたセッションは表示されませんが、チェックアウトのセッションは正しく表示されます。 – Nathan

関連する問題