260 人が現在オンライン
260 人が現在オンライン
Google アナリティクスのアカウント設定、プロパティ、ビューやフィルタ設定などについて、ユーザー同士で意見交換ができます。解析を通して浮かんだ質問やアイディアを投げかけ合って、よりデータ分析の知識を高めていきましょう。
ガイドを表示
star_border
返信

dataLayerのオブジェクト構造について質問

初級者 ✭ ✭ ✭

はじめまして

datalayerについて教えていただきたく。

 

今回通常のeコマース機能「transactionや金額」をGAで確認したく

htmlの修正をしたのですが、集計が反映されていません。

デバッグして確認したところdatalayerへ登録されているオブジェクトが少し気になっております。

 

通常object1,2,3にはgtm.js, gtm.dom, gtm.loadが登録され、

4つめ以降のオブジェクトに明示的にpushしたデータが入るのかと思うのですが、

デバッグしたところ、object2に明示的にpushしたものが登録され、

object3にgtm.dom、object4にgtm.loadが登録されています。

 

objectの順番はGAへのデータ反映に影響あるかご存知の方がいましたら教えていただきたく。

影響ないのであれば、別の原因を調査、影響あるならデータのpush方法を見直したいと思います。

1 人のエキスパートが返信verified_user

受理された解決策
ベストアンサーのマーク済み.
解決策
トピック作成者Junichiさんが付与
4月

Re: dataLayerのオブジェクト構造について質問

トップコントリビューター

トランザクションを紐づけるトリガーを「ページビュー」から「DOM Ready」に変更すれば動作するかと思います。

「ページビュー」は、event=gtm.js を指すため、このタイミングまでにdataLayerにセットされている値のみが有効になります。キャプチャを確認したところ、event=gtm.jsの後でトランザクションデータがセットされているため、gtm.jsのタイミングではトランザクション情報が存在しない状態となります。
もしくは下のコードのように、dataLayerにセットしたあとでGTMコードを読み込む、という方法でも問題ないと思います。

 

dataLayer = dataLayer || [];
dataLayer.push({
  transactionAffiliation: '...',
  transactionId: '...',
  ... // 省略
});

(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-xxxxxxxx');

元の投稿で解決策を見る


すべての返信

Re: dataLayerのオブジェクト構造について質問

トップコントリビューター
順番は、GAへ送信するデータに影響します。
ただし、「タグを送信したタイミング」までに設定されているデータがそのタグのデータに影響する、といった形になるため、今回のようにトランザクションデータがdataLayerの前の方に位置したとしても、データを送信するタイミングがdataLayerに入ったあとのタイミングであれば問題ありません。

Googleタグマネージャのデバッグ画面が非常に使いやすいので、そちらを使って調査してみてください。
大まかな手順としては、
1. デバッグ画面の左側から、「イベント」を指定して、どのタイミングでタグが実行されているかを確認
2.Variablesメニューなどからそのタイミングの変数の値を確認する
といった形になると思います。

Re: dataLayerのオブジェクト構造について質問

[ 編集済み ]
初級者 ✭ ✭ ✭

山田様

返信ありがとうございます。
datalayerへのobjectの登録順番は関係ないということですね。

chromiumで作られたアプリになっており、ブラウザでの起動ができないのでデバッグもChromiumPortableを使っています。
ChromiumPortableでGTMデバッガ確認したところ表示はされるのですが、
ChromiumPortable上で一連の操作をすることができず残念ながらdatalayerの値は確認できませんでした。

以下サイトを参考にhttp通信に含まれるデータを確認してみたのですが、
http://www.ayudante.jp/column/2014-01-29/13-04/

以下のような情報は通信に含まれていませんでした。
この場合、GTMの設定ではなくhtml, jsの実装を疑うべきと考えてよろしいでしょうか?

ti [トランザクション/アイテム]オーダーID
tr [トランザクション]購入金額
ic [アイテム]商品ID
in [アイテム]商品名
ip [アイテム]商品単価
iq [アイテム]商品点数

Re: dataLayerのオブジェクト構造について質問

トップコントリビューター
・dataLayerにどのようなオブジェクトを追加(push)しているか
ならびに
・GTMで設置しているタグの内容
を記載してもらうことって可能ですか?

Re: dataLayerのオブジェクト構造について質問

初級者 ✭ ✭ ✭

山田様

確認いただけるようでありがとうございます。
もし不足情報ありましたら、ご指摘お願いします。

>・dataLayerにどのようなオブジェクトを追加(push)しているか

添付のdatalayer.pngを参照ください。


>・GTMで設置しているタグの内容
▼トリガー (注文完了トリガー)
種類:ページビュー、PagePath、先頭が一致、注文完了ページのhtml
▼タグ
タグタイプ:ユニバーサルアナリティクス
トラッキングタイプ:トランザクション
トリガー:上記注文完了トリガーを指定

ベストアンサーのマーク済み.
解決策
トピック作成者Junichiさんが付与
4月

Re: dataLayerのオブジェクト構造について質問

トップコントリビューター

トランザクションを紐づけるトリガーを「ページビュー」から「DOM Ready」に変更すれば動作するかと思います。

「ページビュー」は、event=gtm.js を指すため、このタイミングまでにdataLayerにセットされている値のみが有効になります。キャプチャを確認したところ、event=gtm.jsの後でトランザクションデータがセットされているため、gtm.jsのタイミングではトランザクション情報が存在しない状態となります。
もしくは下のコードのように、dataLayerにセットしたあとでGTMコードを読み込む、という方法でも問題ないと思います。

 

dataLayer = dataLayer || [];
dataLayer.push({
  transactionAffiliation: '...',
  transactionId: '...',
  ... // 省略
});

(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-xxxxxxxx');

Re: dataLayerのオブジェクト構造について質問

初級者 ✭ ✭ ✭
山田様

返信ありがとうございます。

>「ページビュー」は、event=gtm.js を指すため、このタイミングまでにdataLayerにセットされている値のみが有効になります。キャプチャを確認したところ、event=gtm.jsの後でトランザクションデータがセットされているため、gtm.jsのタイミングではトランザクション情報が存在しない状態となります。

object順番にはこういった意味があるのですね。ありがとうございます。
ただ、残念ながらeコマース反映されていません。
時間経過により結果がかわるかもしれませんので、まずは明日まで待ってみたいと思います。

また、Chromium使っているため、まずは簡易的なWebサイトなど使って普通の環境でまずeコマース情報取得できるかも確認してみたいと思います。

解決しなければ再度質問させていただくかもしれませんが、よろしくお願いいたします。

Re: dataLayerのオブジェクト構造について質問

初級者 ✭ ✭ ✭
山田様

ご連絡が遅くなり申し訳ありません。
簡易Webサイトの構築やVM環境での確認に問題があるのかなど、色々切り分けていった結果、
山田様に助言いただいたDomReady変更とスペルミスが原因だったことがわかりました。

問題解決し、eコマース情報がGAのサイトで確認できるようになりました。
大変ありがとうございました。
このトピックのエキスパート
山田 良太