Googleタグマネージャ基礎 初心者でもわかるデータレイヤー
2023年06月12日
ライター:春山 勇悟

データレイヤーは、Google タグマネージャ(以下、GTM)を理解する上で最も重要な概念です。データレイヤーを理解し、活用すれば、多くのデータを自由に扱うことができるようになります。

この記事では、できる限りわかりやすく、データレイヤーについて説明していきます。仕組みを理解するのは大変ですが、この記事を見て実装の幅が広がれば幸いです!

また、本記事については以下のYouTube動画でも解説しています。良ければこちらもご参考ください。

  1. データレイヤーとは何か?
  2. データレイヤーを使うメリット
  3. データレイヤーの実装パターン
  4. データレイヤーの実装方法
    1. STEP1: データレイヤーを作成する
    2. STEP2: 作成したデータレイヤーにデータを追加する
      1. 「=」を使ってデータを代入する方法
      2. 「push」コマンドを使ってデータを追加する方法
      3. 最適なデータレイヤーの実装方法
  5. データレイヤーの使い方
    1. データレイヤー変数の使い方
    2. カスタムイベントトリガーの使い方
  6. データレイヤーの活用方法
  7. まとめ

データレイヤーとは何か?

まず、データレイヤーとは何かについて説明します。データレイヤーは、ページとGTMの間にあるデータを一時的に貯める箱のようなものです。

この箱の中には、ページのURLやクリックした要素に関する情報など、さまざまなデータが追加されていきます。GTMは、この箱の中にあるデータを取り出して、タグ・トリガー・変数に使用しています。さらに言うと、GTMはこのデータレイヤーに貯まったデータしか使用しません。

実は、GTMコンテナタグがページに読み込まれた際に、自動でデータレイヤーを作成します。そして、ページ内にあるデータのほとんどは自動的に追加されていきます。

このため、私たちはデータレイヤーを意識することなく、さまざまなデータを扱うことができます。

ここまでご覧いただいた方の中には、「自動で対応してくれるなら、特に覚える必要もないのでは?」と思った方もいらっしゃるかもしれません。

しかし、データレイヤーが自動で取得できないデータが存在します。

それはどのようなデータなのでしょうか?
そして、そのデータを取得するためにはどのようにすればよいのでしょうか?

その方法についても後ほど説明します。

データレイヤーを使うメリット

先ほど、データレイヤーについて、ページ内のデータが自動的に追加されることを説明しました。しかし、カスタムで追加する必要があるのはどのようなデータでしょうか。

それは、「ページ内に含まれていないデータ」です。

当然ながら、ページ内に存在しないデータは、データレイヤーでも追加することはできません。具体的には、以下のようなものが考えられます。

データレイヤーを活用することで、ページ内に含まれていないデータを計測することができます。

データレイヤーの実装パターン

データレイヤーはJavaScriptオブジェクトであるため、実装にはHTMLの改修が必要です。データレイヤーへの実装方法は主に3つあります。

  1. 開発者に依頼する方法
  2. プラグインを使用する方法(WordPressなど)
  3. ブラウザのコンソールを使用する方法(自身のブラウザのみ反映されるため、検証用)

この記事では、1の「開発者に依頼する方法」について解説します。

データレイヤーの実装方法

データレイヤーの実装の流れは大きく2つに分かれます。

STEP1: データレイヤーを作成する
STEP2: データレイヤーにデータを追加する

まずはSTEP1から見ていきましょう。

STEP1: データレイヤーを作成する

最初にデータレイヤーを作成します。コードは次のようになります。

<script>
  dataLayer = [];
</script>

ここで重要なのは、データレイヤーのコードを追加する位置です。
必ず、GTMコンテナタグよりも上の位置に追加しましょう!

理由としては、データレイヤーの箱は1つしか作ることができません。前述したとおり、GTMコンテナタグが読み込まれると、自動でデータレイヤーを作成します。なので、GTMコンテナタグよりも下でデータレイヤーを作成しようとすると、すでに箱があるためエラーになってしまいます。

「そしたら上にコードを追加してもデータレイヤーは2つになるからエラーになるのでは?」と思ったかもしれません。

しかし、実際にはGTMコンテナタグは、すでにデータレイヤーがある場合はその箱を引き継いでデータを追加します。そのため、GTMコンテナタグよりも上でデータレイヤーを作成する場合はエラーは発生しません。

STEP2: 作成したデータレイヤーにデータを追加する

作成したデータレイヤーに、データを追加する2つの方法があります。

  1. 「=」を使ってデータを代入する方法
  2. 「push」コマンドを使ってデータを追加する方法

それぞれのコードは以下のようになります。

■「=」を使ってデータを代入する方法

<script>
  dataLayer = [{
    変数名1: "値1",
    変数名2: "値2"
  }];
</script>

■「push」コマンドを使ってデータを追加する方法

<script>
  dataLayer.push({
  変数名1: "値1",
  変数名2: "値2"
  });
</script>

次に、それぞれの方法の違いについて説明します。

「=」を使ってデータを代入する方法

この方法は非常に危険であるため、非推奨です!

その理由は、「=」を使用したデータの代入はデータレイヤーの中身を完全に上書きするため、機能が停止する可能性があるからです。

データレイヤーには様々なデータが蓄積されているため、中身を上書きするとGTMが機能しなくなります。したがって、この方法は使用しないでください。

「push」コマンドを使ってデータを追加する方法

こちらは先ほどの「=」を使う実装とは異なり、データをシンプルに追加する実装になっています。そのため、完全上書きの心配はありません。

注意点としては、事前にデータレイヤーが作成されている必要があります。

pushコマンドはデータレイヤーにデータを追加する方法であるため、データレイヤー自体がないとエラーが発生してしまいます。

ふたつの実装方法をまとめると下図になります。

最適なデータレイヤーの実装方法

これまで2つのデータレイヤーへのデータ追加方法を説明してきましたが、次のような問題があります。

  • 「=」を使用する場合、データを上書きするリスクがある。
  • 「push」を使用する場合、コードを追加する位置に気をつける必要がある。

しかし、この問題を解決する実装方法があります。

コードとしては次のようになります。

<script>
  window.dataLayer = window.dataLayer || [];
  dataLayer.push({
    変数名: "値",
  });
</script>

このコードの最重要ポイントは、この部分です。

window.dataLayer = window.dataLayer || [];

処理している内容はとてもシンプルです。

  • データレイヤーの箱があればその内容を引き継ぐ
  • 箱が無ければ、新規に箱を作成する

このコードをpushコマンドの前に追加することで、弱点だった箱があるかどうかのチェックが必要なくなります!

なので、データレイヤーを使う際は必ずこの実装方法にしましょう。

データレイヤーの使い方

データレイヤーの機能は2種類あります。

  1. データを追加する(データレイヤーの変数)
  2. データ追加を知らせる(カスタムイベント)

まずはデータレイヤーの変数の使い方から見ていきましょう。

データレイヤー変数の使い方

データレイヤーの中には、変数名と値をセットで追加します。

たとえば、ページのカテゴリ情報を変数としてデータを追加する場合、以下のようなコードになります。

【変数名】pageCategory 【値】GoogleTagmanager

<script>
  window.dataLayer = window.dataLayer || [];
  dataLayer.push({
    pageCategory: "GoogleTagmanager",
  });
</script>

GTMのプレビューモードで確認すると、データが追加されていることがわかります。

ただし、これだけではGTMは追加されたデータをどのように処理すればよいか、まだ分からない状況です。

そのため、追加されたデータを格納する変数(=データレイヤーの変数)を作成する必要があります。

先ほどの変数名「pageCategory」の値を格納する場合は次のとおりです。

■ 設定方法

GTM > ユーザー定義変数 > データレイヤーの変数 から新規作成してください。

データレイヤーの変数を作成してあげることで、値がちゃんと変数に格納されます。

カスタムイベントトリガーの使い方

次に、「データ追加を知らせる」機能を使用するカスタムイベントトリガーの使い方について説明します。

たとえば、ユーザーがログインしたタイミングで、次のデータレイヤーが追加されたことを知らせる場合を考えます。

【イベント名】login

<script>
  window.dataLayer = window.dataLayer || [];
  dataLayer.push({
    event: "login",
  });
</script>

ここで重要なのは、先ほど変数名を入れた場所に「event」というキーが入ることです。これは変数とは異なり、固定値であり、一つのデータレイヤーに二つ以上のイベントを入れることはできません。

イベントの値として、イベント名(上の例ではlogin)を入れることで、GTMにデータが追加されたタイミングを知らせることができます。

このイベントをトリガー条件に使用することができます。

■設定方法

GTM > トリガー > カスタムイベント から新規作成してください。

イベント名のところに、データレイヤーで追加したイベント名を入力します。

これで、データが追加されたタイミングでタグの発火(=計測)をすることができるようになります。

データレイヤーの活用方法

データレイヤーには多くの活用パターンがあります。代表的な活用事例としては、以下の3点が挙げられます。

※SPAはシングルページアプリケーションの略

本記事では活用事例の詳細については割愛させていただきますが、興味のある方はぜひチャレンジしてみてください!

(参考)活用事例のサンプルコード

まとめ

今回はGTMのデータレイヤーの概念と使い方について説明しました。

以下は本記事のまとめです。

  • データレイヤーとは、GTMが機能するためのデータの「箱」です。
  • GTMで使用するデータは、ページやGTMから追加することができます。
  • 実装することでページに存在しないデータを追加することができます。
  • 追加できるデータは「変数」と「イベント」です。
  • これらは、eコマースやユーザーIDのデータ取得によく使われます。

データレイヤーはGTMの最も重要な概念であり、データレイヤーがなければGTMは動かせません。

さらにカスタムにデータを追加することで、ページ内に無いデータも自由に計測できるようになり、分析の幅が広がります。

データレイヤーの理解は難しいかもしれませんが、まずは簡単な実装から始めて慣れていきましょう。

採用情報はこちら

この記事を書いた人
$uname
春山 勇悟
デジタルマーケティングエンジニア
前職では主にGoogleタグマージャを用いたGoogleアナリティクスの導入支援や、Looker Studioでのダッシュボード構築、データ利活用の支援などを担当。趣味は愛犬との散歩とサウナ。
最近書いた記事