同意管理プラットフォーム(CMP)とGoogleタグマネージャー(GTM)を連携させる実践ガイド
ウェブサイトにおけるユーザープライバシー保護の重要性が高まるにつれて、同意管理は不可欠な要素となりました。多くのウェブサイトでは、同意管理プラットフォーム(CMP)を導入し、ユーザーからCookieやトラッキングに関する同意を取得しています。しかし、同意を取得しただけでは不十分であり、その同意状態に応じて適切にトラッキングコードの発火を制御する必要があります。
この制御を実現するための一般的な方法の一つが、CMPとタグマネージャー(特にGoogleタグマネージャー: GTM)の連携です。本記事では、この連携の仕組みと具体的な実装方法について解説いたします。
同意管理とタグマネージャー連携の目的
CMPとGTMを連携させる主な目的は以下の通りです。
- 法規制遵守: GDPR、CCPA、日本の改正個人情報保護法など、関連するプライバシー法規制では、ユーザーの同意なく特定の種類のCookieやトラッキングを行うことが制限されています。CMPで取得した同意状態をGTMで認識し、同意がない場合は関連タグの発火を停止することで、法規制を遵守します。
- ユーザー体験の向上: ユーザーが明確な意思表示を行った結果として、ウェブサイトの挙動が変わることは、透明性を高め、ユーザーの信頼を得る上で重要です。
- データの正確性維持: 不明確な同意状態でのデータ収集を防ぎ、同意に基づいた、よりクリーンで信頼性の高いデータを収集することができます。
連携の基本的な仕組み
CMPとGTMの連携は、基本的に以下の流れで実現されます。
- ユーザーがウェブサイトを訪問し、CMPが表示される。
- ユーザーがCMP上で同意または拒否の選択を行う。
- CMPがユーザーの選択(同意状態)をウェブブラウザ上のどこか(多くの場合Cookie、または
dataLayer
)に保存する。 - GTMが、CMPによって保存された同意状態を読み取る。
- GTMは、読み取った同意状態に基づき、各タグ(Google Analytics、広告タグなど)が発火すべきかどうかを判断し、制御する。
この仕組みにおいて、CMPが「同意状態をどこに、どのように保存するか」、そしてGTMが「それをどのように読み取るか」が連携の鍵となります。
具体的な連携方法
CMPとGTMの連携方法にはいくつかのパターンがありますが、ここでは代表的な方法をいくつかご紹介します。
1. dataLayer変数を利用する方法
多くのCMPは、ユーザーの同意状態をdataLayer
にプッシュする機能を提供しています。dataLayer
はGTMが情報を取得するために設計されたJavaScriptオブジェクトであり、この方法が最も一般的かつ推奨されます。
CMP側の設定(例): CMPが同意状態を取得した後、以下のようなJavaScriptコードを実行します。
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'event': 'consent_update',
'consent_marketing': 'granted', // または 'denied'
'consent_analytics': 'granted', // または 'denied'
// その他の同意カテゴリ...
});
ここでは、'event': 'consent_update'
というイベントとともに、各カテゴリの同意状態(consent_marketing
, consent_analytics
など)をプッシュしています。カテゴリ名はCMPによって異なります。
GTM側の設定:
1. dataLayer変数の設定: GTMで、CMPがdataLayer
にプッシュする同意状態の値を取得するための「dataLayer変数」を作成します。例えば、同意カテゴリ「analytics」の状態を取得するには、変数名を任意に設定し、データレイヤーの変数名にconsent_analytics
と設定します。
2. トリガーの設定: タグの発火タイミングを制御するためのトリガーを作成します。
* CMPが同意情報をdataLayer
にプッシュした際に発火するカスタムイベントトリガー(イベント名:consent_update
)。
* ページビューやその他のイベントトリガーに加えて、このカスタムイベントトリガーまたは組み込みの同意トリガー(以下で説明)を使用します。
3. タグの設定: 各タグ(Google Analytics、Facebook Pixelなど)に対して、そのタグが発火するための条件に、先ほど作成したdataLayer変数に基づいた条件を追加します。例えば、「{{dataLayer変数 - analytics}}
が granted
に等しい」という条件を発火トリガーに含める、あるいはブロックトリガーとして「{{dataLayer変数 - analytics}}
が denied
に等しい」を設定します。
2. Cookieの値を利用する方法
一部のCMPは、同意状態を特定のCookieに保存します。この場合、GTMはそのCookieの値を読み取ってタグ発火を制御します。
CMP側の設定:
CMPが同意状態をCookieに保存する(例: consent_status: marketing=granted&analytics=denied
)。
GTM側の設定:
1. 1st Party Cookie変数の設定: GTMで、CMPが同意状態を保存するCookieの名前を指定して「1st Party Cookie変数」を作成します。これにより、Cookieの値を取得できます。
2. カスタムJavaScript変数の利用(複雑な場合): Cookieの値が特定の形式(例: key=value&key=value
のような文字列)で保存されている場合、カスタムJavaScript変数を使用してCookieの値から必要な情報を抽出する必要があります。
javascript
function() {
var cookieValue = {{1st Party Cookie変数}}; // Cookieの値を取得
// ここでcookieValueをパースして、必要な同意状態を抽出するロジックを記述
// 例: "analytics=granted" を判定し、'granted' または 'denied' を返す
if (cookieValue && cookieValue.indexOf('analytics=granted') > -1) {
return 'granted';
} else {
return 'denied'; // デフォルトはdeniedとするのが安全
}
}
3. トリガーとタグの設定: dataLayer変数を利用する場合と同様に、Cookieの値(またはカスタムJavaScript変数で抽出した値)に基づいた条件をタグの発火トリガーに追加します。
dataLayerを利用する方法の方が、非同期で正確な情報伝達が可能であり、GTMとの連携も容易なため推奨されます。Cookieを利用する方法は、Cookieの読み取りタイミングやパース処理に注意が必要です。
3. Google Consent Mode(同意モード)の利用
Google Consent Modeは、ユーザーの同意状態(分析、広告など)に応じて、Googleタグ(Google Analytics 4, Google Adsなど)の挙動を調整するための機能です。同意がない場合でも、限定的な非識別情報(コンバージョンモデリングなどに利用される可能性のあるデータ)を送信するなどの挙動をCMPと連携して制御できます。
CMP側の設定:
Google Consent ModeをサポートしているCMPは、ユーザーの同意状態をGoogle Consent Mode API(gtag('consent', 'update', { ... })
)を通じてGTMに伝えます。
GTM側の設定:
1. 同意設定の有効化: GTMコンテナの設定で同意設定を有効にします。
2. タグの同意設定: 各Googleタグに対して、どの同意カテゴリ(例: analytics_storage
, ad_storage
)が必要かを設定します。
3. トリガー: タグの発火トリガーは通常通り設定しますが、同意モードが有効な場合、GTMはタグに設定された同意設定とConsent Mode APIを通じて受け取った同意状態を自動的に照合し、発火を制御します。同意がない場合は、タグの発火が抑制されるか、同意モードに対応した制限付きのデータ送信が行われます。
Google Consent Modeは、Googleのサービスを利用している場合に非常に強力な連携方法です。多くの主要なCMPがGoogle Consent Modeをサポートしています。
実装上の注意点
- 非同期処理: CMPによる同意情報の保存とGTMによる読み取りは非同期で行われることが一般的です。特にページロード時に発火するタグの場合、同意情報が利用可能になる前にタグが発火してしまう可能性があります。これを避けるためには、CMPが同意情報をプッシュしたイベントをGTMのトリガーとして使用するか、同意モードの初期化を適切に行う必要があります。
- タグの順序: GTMの設定によっては、CMPのコードが実行される前にGoogleタグなどの他のタグが発火してしまうことがあります。CMPのコードが最初に実行されるように、GTMの「タグのシーケンス」やカスタムテンプレートを活用するなど、適切な順序を確保することが重要です。
- デバッグ: 同意管理とタグマネージャー連携のデバッグは複雑になることがあります。GTMのプレビューモード、ブラウザの開発者ツール(特にネットワークタブ、コンソール)、CMPが提供するデバッグツールなどを活用し、ユーザーの同意状態に応じてタグが正しく発火/非発火しているかを入念に確認してください。
dataLayer
の内容を確認することも非常に有効です。
まとめ
ウェブトラッキングにおいて法規制を遵守し、ユーザーからの信頼を得るためには、同意管理プラットフォーム(CMP)で取得した同意を適切にトラッキングコードに反映させることが不可欠です。Googleタグマネージャー(GTM)は、CMPと連携してこの制御を実現するための強力なツールです。dataLayer
変数やGoogle Consent Modeを活用することで、同意状態に基づいた正確なタグ発火制御が可能となります。
適切な連携を実現するためには、CMPとGTM双方の仕組みを理解し、非同期処理やタグの実行順序に注意を払う必要があります。本記事で解説した内容が、皆様のウェブサイトにおける同意管理とトラッキング実装の一助となれば幸いです。正確な設定と継続的な検証を通じて、ユーザープライバシーを尊重したデータ収集体制を構築してください。