コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

GoogleTagManager(GTM)を介してGoogleAnalytics(GA)のイベントを直接記述するときは気をつける

GTMを使いながら、GTMを利用せずイベント発火をさせずに手動でGAのイベントを発火させようとするとおかしなことになるので気をつける。

TL;DR

  • GoogleAnalyticsのタグをGTMでセットし、純粋に ga('send') でイベントを送ろうとしてもうまく行かない場合がある。
  • トラッカー名が指定されていないため送れない現象が考えられるので、トラッカー名をつけたトラッカーを作るなどの方法を検討すること。

どういうことか

GoogleAnalytics(以下GA)でイベントを送るときなどの記述では以下のような文法が紹介されている

ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');

引用元: サイトに analytics.js を追加する  |  ウェブ向けアナリティクス(analytics.js)

アナリティクスを識別する固有のID(上記の UA-XXXXX-Y 部分)を指定してcreateを行う、あとはsendを行うとイベントが発火してデータが送られる。

ただしこれは純粋に単体でGAを使うときのみで、GoogleTagManager(以下GTM)を利用する場合は様相が変わる。

GoogleTagManagerを使うときの注意点

GTMを利用する場合は、GAのタグを読み込ませるようにGTM上で設定することができる。そこで行われているのも ga('create') 相当の処理ではあるが、先程とは違い、トラッカー名が設定されている。

トラッカーとは

トラッカー名が設定されていると何が問題かと言う前に、トラッカーがどういうものかをざっくり説明します。

まずはヘルプの説明から引用です。

トラッカー オブジェクト(「トラッカー」とも呼ばれます)は、データを収集および保存して、Google アナリティクスに送信できるオブジェクトのことです。新しいトラッカーを作成する場合は、トラッキング ID(Google アナリティクス プロパティの 1 つに対応するプロパティ ID と同じ)と、Cookie の保存方法を指定する Cookie ドメインを指定してください(推奨値の 'auto' を使用すると、Cookie ドメインの自動設定が指定されます)。 - トラッカーを作成する  |  ウェブ向けアナリティクス(analytics.js)  |  Google Developers

このようにGoogleAnalyticsの一意のIDであるトラッキングIDを指定して作成を行います。

トラッカーを作成する方法として create が紹介されている。この際に先程には紹介のなかった「トラッカー名をつける」という方法が紹介されている。

下記はトラッカー名に myTracker という名前をつける記述の例

ga('create', 'UA-XXXXX-Y', 'auto', 'myTracker');

そしてこのトラッカーでイベントを送信したい場合は以下のように記述する

ga('myTracker.send', 'pageview');

トラッカー名を意識しない使い方

このトラッカー名、設定しないような以下の書き方はデフォルトのトラッカー名が付きます。

ga('create', 'UA-XXXXX-Y', 'auto');

name フィールドを設定せずにトラッカーを作成すると、「デフォルト」のトラッカーが作成されます。デフォルトのトラッカーは内部的に「t0」という名前が付いています。 - トラッカーを作成する  |  ウェブ向けアナリティクス(analytics.js)  |  Google Developers

また、トラッカー名を指定しない以下のような send はデフォルトのトラッカーを利用するとヘルプにもある。

ga('send', 'pageview');

特定のトラッカーに対して analytics.js コマンドを実行するには、コマンド名の先頭にトラッカー名とドットを加えます。トラッカー名を指定しない場合は、デフォルトのトラッカーに対してコマンドが実行されます。 - トラッカーを作成する  |  ウェブ向けアナリティクス(analytics.js)  |  Google Developers

GTMがトラッカー名を指定する弊害と回避法

前述の通りトラッカー名が指定されたトラッカーを利用したい場合はトラッカー名を指定しないと利用できない。しかしながらGTMでGAを設定した場合は目に見える形でトラッカー名はわからない。また、GTMで作られたトラッカー名は衝突の観点から利用者側で設定することは推奨されておらず、ランダムな文字列が振り出される。そのため以下のような状況になる。

  • GTMでのGA設定はトラッカー名を指定して作成しているため、デフォルト名のトラッカーは作成されない。
  • デフォルトのトラッカーが存在しないので、トラッカーを指定しないjs上でのイベント送信( ga('send', 'pageview'); に類する実行)はできない。

そのため、GTMの設定を利用するのではなく、独自で名前をつけたトラッカーを発行し、そのトラッカーでイベントを送信してあげるとGTMに干渉せず送信ができる。

参考リンク