Google Tag Managerについて調べてみた

2022/05/04に公開

業務で、直接ソースコードに埋め込んでいた計測・広告タグをのを、Google Tag Manager(以下GTM)を導入し順次GTMからのタグ配信をすることになりました。そのプロジェクトを進めるにあたって、概念的な部分から設定についてなど調べてみました。

GTMとは

Google Analyticsなどの計測タグやGoogle広告などの広告タグを、コード編集なしで一元管理・設定・配信できるタグ管理システムです。

タグ マネージャーの概要 - タグ マネージャー ヘルプ

アカウントとコンテナ

GTMを設置したい、しようとなった場合に、アカウントとコンテナというものを作成する必要があります。

  • アカウントは企業や組織、団体、個人管理などのくくりで作成するもの
  • コンテナはGTMを設置するサイト単位で作成するもの

例えば、株式会社AがBというサービスサイトとCというカンパニーサイトにGTMを導入したい場合は以下のように作成します。

  • アカウント
    • 株式会社A
  • コンテナ
    • サービスサイトB
    • カンパニーサイトC

バージョンとワークスペース

コンテナで作業する際に、ワークスペースの中で作業する必要があります。

これはGitと同じようなもので、バージョン管理をしてくれるものです。

メインのブランチからワークスペースを切って作業をして、変更に問題がなければメインに反映させるという流れで作業でき、複数人での作業も簡単に行うことができます(コンフリクトなども対応できるらしい)。

参照:GTMで複数人での運用向け機能「ワークスペース」が実装されました

環境

環境という概念があり、本番用や検証用などで環境を区切ることができます。環境によってタグの出し分けや、設定したバージョンを環境毎に反映させることなども可能です。

ex) 検証環境と本番環境で、別々のユニバーサルアナリティクスタグを使うなど。

Googleタグマネージャの新機能「環境」を使って複数の環境を効率的に管理する | 株式会社アクシス

ウェブコンテナとサーバーコンテナ

通常はコード上に埋め込んで使用するウェブコンテナというパターンが多い。

  • タグが増えてくると、それぞれのタグが各種分析サーバーへデータ送信をするため、処理が多くなる。
  • もっと複雑なことをしたい(あまりイメージわかないけどデータ前処理・加工とか?)

そういう場合にはサーバーコンテナという方法もあるようです。

GCPにコンテナを建てて、サーバー上で諸々の処理を行うことができ、以下のようなメリットがあります。

  • Webサイト側での処理の軽量化
  • 送信データに対するより複雑な処理の実施
  • 処理やデータの隠蔽
  • 通信データの通信前最終チェックを一元化できる環境づくり

反対にデメリットとしては以下です。

  • 計測のロスト率上昇のリスク
  • ビジネスサイトの本番環境での利用は有料
  • 前述のメリットの享受は設定難易度が高い

Google Tag Managerのサーバーサイド タグ設定でGA4タグを管理してみた | DevelopersIO

GTMにサーバーサイドで動作するサーバー用コンテナが登場

データレイヤー

GTM上の設定だけでは情報に不足があって、アプリケーション上からGTMへデータを渡したいことが出てくるが、そういう場合はデータレイヤーというものを使います。

ex)ユニバーサルアナリティクスのイベント送信や、トランザクションデータの送信など。

webアプリでの使い方はフロントエンドのJSで、 dataLayer という変数にオブジェクトを push すれば、GTM側で検知してくれてデータを渡すことができます。

dataLayer.push({
 hoge: 'hoge',
})

GTMの設定項目について

設定できる項目は以下の3つです。

タグ

ユニバーサルアナリティクスやGoogleタグなど、解析やマーケティングのサービスプロバイダーが提供するコードのセグメントを設定できます。

設定はGTMの管理画面上で行い、ソースコード上にはGTMのタグを記述するだけで様々なタグを配信できます。

呼び出すタイミングもトリガーを設定すれば、意図したタイミングで呼び出すことが可能です。

トリガー

要素のクリック、ページビュー、データレイヤーの値などでイベントを検知する設定ができます。

タグを配信するには少なくとも1つは設定する必要があります。

変数

変数は2つのタイプがあります。

  • 組み込み変数
    • ページURL、ページパスなど、アプリケーション上から取得できる値でカスタマイズができないタイプ
  • ユーザー定義変数
    • ユーザーが設定できるタイプ
    • ex) ユニバーサルアナリティクスのコードなど

Discussion