著者:
Uliana Lesiv
Google Tag Manager(GTM)は、ウェブサイトの分析とトラッキングを向上させるための優れたツールです。そして、データレイヤーは、トラッキングを次のレベルへと引き上げる機能の一つです。
GTMのデータレイヤーは、ウェブサイト上でのユーザーの操作に関する詳細を収集するJavaScriptオブジェクトです。これを利用すれば、商品の閲覧からユーザーのオペレーティングシステムに至るまで、ほぼあらゆるデータを収集することができます。GTMでデータレイヤーを活用することで、より的を絞ったトラッキングタグやトリガーを設定でき、ユーザー行動へのより深い洞察が得られ、堅牢な顧客データ分析のための確かな基盤を築くことができます。
そこで私たちは、Google Tag Managerにおけるデータレイヤーの実装と利用について、多くの側面をカバーする包括的なガイドを作成しました。データレイヤーとは何か、その利用シーン、ウェブサイトでのデータレイヤーの実装方法、Tag Managerでのデータレイヤーの作成方法、設定のテスト方法、そして設定時によくある間違いについて説明します。
それでは始めましょう!
GTMのデータレイヤーは、タグにデータを渡すために使用されるJavaScriptオブジェクトです。これにより、イベントや変数を転送したり、特定の変数の値に基づいてトリガーを設定したりできます。データレイヤーは、Google Tag Managerとgtag.jsの両方で使用されます。
データレイヤーは、ウェブサイトとGoogle Tag Managerの間の仲介役であり、コンテナのために構造化されたデータを保存するハブとして機能します。
次のようなことを行いたい場合、データレイヤーを作成する必要があります。
データレイヤーを使えば、こうした問題は起こりません。なぜなら、GTMコンテナはページのデータレイヤーからデータを取得するため、HTML DOMよりもはるかに安定しているからです。データの記録が止まるのは、誰かがページのデータレイヤーを壊した場合のみです。
このレイヤーに正確にどのようなデータを保存したいかを指定できます。データレイヤーを作成し、トラッキングに必要なパラメータを入力する方法は2つあり、次のセクションで確認します。
GTMはデータレイヤーから必要な値を読み取って取得し、それをGoogle Analytics、Google Ads、Facebook Pixelなどの分析ツールに送信します。

Google Tag Managerでは、dataLayerは「[]」で示されるように配列であり、以下のスクリプトに示されているように「{}」で表されるオブジェクトを含みます。
dataLayer = [{}];データレイヤー内の要素は変数と呼ばれ、**「キー」:「値」**のペア(「{}」内に配置)としてフォーマットされます。
GTMは「event」と呼ばれるデータレイヤー変数を使用します。これは、ユーザーがウェブサイト上の要素と対話したときにタグをトリガーするためにJavaScriptのイベントリスナーでも使用されます。つまり、以下の例に基づくと、「event」が「キー」で、「register」が「値」です。
dataLayer = [{'event' : 'register' }];変数についても、構文はイベントと同じです。以下の例では、トラッキング対象の国を取得します。「country」(「variable_name」)が「キー」で、「united states」が「値」(「variable_value」)です。
dataLayer = [{'country' : 'united states' }];データレイヤーの実装には、宣言とpushという2つの方法があります。両方の方法の使い方を説明しますが、ご自身に最適な方法に直接進んでいただいても構いません。
簡単に言うと、dataLayer.pushの使用をお勧めします。より一般的で、ほとんどのニーズをカバーしているためです。さらに、この方法はGoogle Tag Manager内のイベントを妨げることがないため、より安全に使用できます。一方、データレイヤー宣言の設定が不適切だと、問題を引き起こしやすくなります。
| データレイヤー宣言 | dataLayer.push | |
| 最適な用途 | ページ読み込み前に必要な値 | ページ読み込みイベント以外のイベントに情報をデータレイヤーへ送る場合 |
| データレイヤー変数のpushのタイミング | 実行時より前 | 実行時中 |
| コード内の配置場所 | Google Tag Managerコンテナのスニペットの上 | コード内のどこでも |
| データレイヤー宣言へ進む | dataLayer.pushへ進む |
この方法を使用するには、データレイヤーのスニペットをGoogle Tag Managerコンテナのスニペットの上に配置する必要があります。この場合、データレイヤーはTag Managerが初期化される前に初期化されます。
全体として、これはデータレイヤーを作成する一般的な方法や推奨される方法ではありませんが、GTMコンテナが読み込まれる前にデータポイントを作成し、それをタグ管理に使用したい場合には機能します。
「variable_name」:「variable_value」を必要なパラメータに変更し、GTMスニペットの前のウェブサイトページにコードを貼り付けます。
dataLayer = [{
'variable_name': 'variable_value'
}];
...
注: オブジェクトの値をdataLayer配列に割り当てるには「=」演算子を使用します。
push方式は、オブジェクトの要素をデータレイヤーに動的に追加します。データレイヤー宣言方式とは異なり、pushデータを使えば、データレイヤーのスニペットをコード内のどこにでも配置できます。
少し紛らわしいかもしれませんが、dataLayerもまた、windowオブジェクトと対話するあらゆる関数からアクセスできるJavaScript変数です。そのため、dataLayerという名前の他のローカルJavaScript配列との競合を避けるために、最善の方法はwindow.dataLayerというプレフィックスを使用することです。
したがって、dataLayer.push方式には以下のコードを使用する必要があります。「variable_name」:「variable_value」の代わりに、必要なパラメータを追加します。
window.datalayer = window.dataLayer || [];
window.dataLayer.push({
'variable_name' : 'variable_value'
});上記のコードブロックでは、既存のdataLayerがある場合はそれが設定され、ない場合は空の配列として新しいdataLayerが作成されます。||(OR)演算子は、これらの条件のいずれかが満たされた場合に割り当てが行われることを保証します。
この方法により、dataLayerを上書きしてしまう可能性のある複数の宣言を作成することを避けられます。
多くのeCommerce CMSには、標準的なeCommerceイベント向けのデータレイヤーを作成できるプラグイン(Stapeのプラグインを含む)が用意されています。場合によっては、これだけでは不十分なこともあります。例えば、データレイヤーイベントに追加のイベントや追加のデータが必要な場合です。あるいは、完全にカスタマイズされたプラットフォームを使用している場合です。
この場合は、必要なペイロードを持つデータレイヤーイベントを作成するために、開発者に連絡する必要があります。これは通常、開発者にとってかなり単純な作業で、時間もあまりかかりませんが、サイトやプラットフォームのアーキテクチャによって異なります。
いくつかの有用なガイドライン:
1. 商品/アイテムデータ
2. 取引データ
3. ユーザーデータ
4. イベント固有のパラメータ
| イベント | 発火タイミング |
| view_item_list | 商品一覧ページまたはカテゴリページ |
| view_item | 商品詳細ページ |
| add_to_cart | カートに商品が追加されたとき |
| begin_checkout | チェックアウトが開始されたとき |
| add_payment_info | 支払い方法が選択されたとき |
| purchase | 注文が確定したとき |
Google Tag Managerでは、データレイヤー配列内の要素に異なる方法でアクセスできます。Google Tag Manager内でデータを活用するには、変数に割り当てるか、イベントトリガーとして使用します。これらの変数やイベントは、その後、タグ、トリガー、または他の変数に組み込むことができます。
以下では、データレイヤーの3つの活用例とGTMでの設定方法を紹介します。
例として、オレンジ色のTシャツの購入額を取り上げます。
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
‘product_name’ : ‘orange t-shirt’,
'purchase_value' : '5',
‘purchase_currency’ : ‘EUR’
});1. 変数の設定には、GTMコンテナ内でVariables → ユーザー定義変数で「New」をクリックします。

2. 変数タイプとして「Data Layer Variable」を選択します。

3. データレイヤー変数名を追加し、「Save」をクリックします。
ご注意ください: このフィールドは大文字と小文字を区別するため、名前がページに追加したコード内の値名と一致していることを確認してください。今回の例では、「purchase_value」です。

コード例として、ユーザーが登録に必要なデータを入力し、「Register」をクリックしたときに「register」イベントをトリガーするdataLayer変数を取り上げます。
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event' : 'register'
});1. Google Tag Manager Triggersに移動し、「New」をクリックします。

2. 「Custom Event」トリガータイプを選択します。

3. 「Event name」には、このフィールドが大文字と小文字を区別するため、コード内の値名と同じように名前を追加します。「Save」をクリックします。

以下のデータレイヤー変数の例は、購入イベントをトリガーし、購入情報を作成します。
dataLayer = [{
'event': 'purchase',
'purchase_info': {
'purchase_amount': 5,
'purchase_curency': 'EUR'
}
}];コードからの変数は、Google Tag Managerで変数としてもイベントトリガーとしても使用できます。変数とイベントについては、前のステップの設定プロセスをご確認ください。
データレイヤーは、クライアントサイドGTMとは異なり、サーバーサイドGoogle Tag Managerには存在しません。
しかし、sGTMにはウェブGTMからのHTTPリクエストをチェックするClientというオブジェクトがあります。リクエストに特定のデータが含まれている場合、Clientはリクエストデータをイベントデータに変換します。タグも、ウェブGTMコンテナからGTMサーバーへデータを送信するために使用されます。
サーバーGTMコンテナのデータポイントを入力するには、ウェブからサーバーGTMへデータを送信する方法を選択する必要があります。一般的な方法には以下があります。
この方法は、Google AdsやFloodlightのサーバーサイドトラッキングを設定する場合に特に効果的です。どちらもGA4タグのみに依存しているためです。
1. ウェブGTMで、構成が「Google Analytics: GA4 Event」のタグを作成します。

2. このデータに対して事前定義されたフィールドが見つかり、各パラメータに個別にデータレイヤー変数を割り当てることができます。

Data Tag/Data Clientを使用する主な利点は、データレイヤーや他の一般的なデータを自動的にウェブからGTMサーバーへ送信することです。
1. ウェブGTMコンテナで新しいタグを作成し、タグの構成として「Data Tag」を選択します。
ご注意ください: Data ClientをGTMギャラリーに追加する必要があります。

2. タグの構成で、「Send common data」と「Send all from DataLayer」という2つのチェックボックスを有効にします。
システムは、ウェブGTM内のデータを自動的に解析し、利用可能なすべての情報をサーバーGTMへ転送します。

| 設定プロセスについてさらに詳しく知るには、サーバーサイドGoogle Tag Manager用のデータレイヤーの作成に関するブログ記事をご覧ください。 |
注:以下では、データを送信するためにGoogleタグを設定する方法を説明します。すでにGoogleタグを設定している場合、新しいタグを作成する必要はありません。以下の手順を飛ばして、カスタムディメンションの作成に関するセクションへ直接進んでください。
この場合、「Shared event settings」セクションのデータレイヤー用コードにあるようなパラメータを追加するだけで済みます。
1. GTMの「Tags」セクションで「New」をクリックし、タグタイプとして「Google Tag」を選択します。

2. GA4測定IDを追加し、「Shared event settings」セクションで、コードに追加したパラメータをリストアップします。

3. トリガーとして「Page View – All Pages」を選択します。

標準パラメータの一覧があります。データレイヤーを使って追跡したいデータがGoogle Analyticsの推奨イベントに含まれていない場合は、GA4アカウントにカスタムディメンションとして手動で追加する必要があります。追加すると、GA4レポートに表示されるようになります。
1. Google Analyticsアカウントで、「Admin」→「Custom definitions」をクリックします。

2. 「Create custom dimension」をクリックし、必要なパラメータを入力します。
「Save」をクリックします。

| Stape GTM Helperにより、クライアント向けまたはご自身の大規模なGTMコンテナ向けに、より優れたGTMプレビューと、確認しやすく整形されたサーバーリクエストを取得できます。 |
Google Tag Managerが変数を正しく取得しているかを確認するには、通常のGTMでのデバッグと同様のいくつかの簡単な手順を実行する必要があります。
1. 「Preview」をクリックし、デバッグ対象のウェブサイトのURLを追加します。

2. 「Variable」セクションのタブに切り替えます。すべてが正しく機能していれば、このタブに必要なデータが表示されます。

GTMのデバッグモードで問題が発生した場合は、以下のガイドをご確認ください。
Google Analyticsがデータを取得しているかを確認するには、「Admin」→DebugViewに移動します。

変数やイベントがpushされないことに気づいた場合、おそらくオブジェクト名の大文字・小文字の使い方が正しくないか、引用符が抜けている可能性があります。
良い例:
dataLayer.push({'variable_name': 'variable_value'});悪い例:
datalayer.push({'variable_name': 'variable_value'});良い例:
dataLayer.push({'variable_name': 'variable_value'});悪い例:
dataLayer.push({variable_name': 'variable_value'});ウェブサイト上の必要なすべての場所でタグを発火できない場合は、異なるページ上の変数名を確認してください。
最も頻繁に起こる間違いは、異なるページ間で変数名の大文字・小文字の使い方が一貫していないことです。そのため、名前を見直す必要があります。
良い例:
// Homepage:
dataLayer.push({'variable_name': 'variable_value'});
// Product page:
dataLayer.push({'variable_name': 'variable_value'});悪い例:
// Homepage:
dataLayer.push({'variable_name': 'variable_value'});
// Product page:
dataLayer.push({'variable Name': 'variable_value'});GTM datalayerは、GTMの重要な構成要素です。これにより、ウェブサイトとのユーザーの操作を記録しつつ、その操作やコンテキストに関する追加データも提供できます。より良いデータ構造を作りたい場合、データレイヤーを使用することが不可欠です。
データレイヤーの概念を実装するのはかなり難しく、複雑なトラッキングインフラを構築するには開発者が必要になる可能性が高いでしょう。
簡単なまとめはこちらです。
サーバーサイドを始めてみませんか?
無料で試す
コメント