ページ内で発生したイベントをもとにタグを実行する方法
次に、PDFファイルへのリンクのクリックなど、通常のページ遷移ではなく、ページ内で発生したイベントをもとにタグを実行する方法をご紹介します。Google Tag Managerでこのように少し高度なトラッキングを行う場合、「DataLayer」という概念が登場しますので、まずはこちらについてご説明しましょう。
「DataLayer」とは
たとえばGoogle Analyticsでイベントトラッキングを行うとき、ページ内にイベントを発行するためのJavaScriptを書き、イベントのカテゴリ、アクション、ラベルなどをGoogle Analyticsに渡し、イベント発生を通知する必要があります。このように、Webページから解析タグにデータを渡す/イベントの発生を通知するといった動作をGoogle Tag ManagerではDataLayerという概念を使用して抽象化しています。

DataLayerを使用して抽象化することで、Webページは各解析タグに直接データを渡したりイベント発生を通知せず、Google Tag Managerに対してのみデータを渡したりイベント発生を通知することになります。そのため、たとえば、上図の解析タグ1を削除して、同じイベントで新たな解析タグ3を実行するという変更が発生しても、Webページ側を書き換える必要がなくなります。
DataLayerを使うときは、Google Tag Managerのコンテナタグの前に、下記のようなDataLayer初期化コードを挿入します。
マクロ機能を使って、ページからイベント通知やデータを受け取る
ページからDataLayerに送られたイベント発生通知やデータをGoogle Tag Managerで使用するには、マクロという機能を使用します。画面の左側にあるナビゲーションの「マクロ」を開くと、デフォルトで3つのマクロが登録されています。

eventマクロ
DataLayerでイベント発生通知を受け取ると、このeventマクロにデータが挿入されます。上記の画面で説明されている通り、イベント発生通知をDataLayerに送る場合は、dataLayer.push({‘event’: ‘イベント名’});を実行します。
referrerマクロ
ページのリファラー情報(参照元ページ)が代入されるマクロです。このマクロは、Google Tag Managerで自動的に初期化されるため、特にページ側にコードを書いておく必要はありません。
urlマクロ
ページのURLが代入されるマクロです。前回、AdWordsコンバージョンタグを実行する条件を指定したとき、「url」「等しい」「(コンバージョンページのURL)」という指定をしたと思います。この時すでにurlマクロを使用しています。
