ユーザーのプライバシーを保護しながら有益な分析情報を取得するには、ウェブサイトのユーザーから同意を取得する必要があります。同意管理プラットフォーム(CMP)を使用するか、コンテンツ マネジメント システム(CMS)と連携して、同意を取得して Google に送信することをおすすめします。
詳しくは、同意管理プラットフォームまたはコンテンツ マネジメント システムを使用して同意モードのバナーをセットアップする方法をご覧ください。
ステップ 1: 同意モードのバナーをセットアップする
- CCM Advanced(マネージド サービス)を使用している場合は、テクニカル アカウント マネージャー(TAM)がお客様の要件とスタイル ガイドラインに沿ってバナーを設定します。
- CCM Pro(セルフサービス CMP)を使用している場合は、TrustArc が URL を提供し、お客様がその URL でポータルにログインし、ウィザードで定義済みのテンプレートを使用してバナーを設定します。
- バナーが Google の EU ユーザーの同意ポリシー(EUUCP)の要件に準拠していることを確認します。TrustArc バナーの設定について詳しくは、ユーザーガイドのスタート セクションをご覧ください。
- バナーと CMP リンクをレンダリングする
<div>
要素をウェブサイトのコードに追加するか、または Google タグ マネージャー経由で追加します。
ステップ 2: 同意モードをセットアップする
Google タグ マネージャーを使用する場合
- タグ マネージャーを開き、コンテナに移動します。
- [タグ] で [新規] をクリックし、タグに名前を付けます。
- [タグの設定] をクリックし、[コミュニティ テンプレート ギャラリーでタグタイプをさらに見つけましょう] をクリックします。ギャラリーで「TrustArc CMP (Consent Mode)」を検索し、TrustArc による「TrustArc CMP (Consent Mode)」をインストールします。
- [デフォルトの同意モードの設定] で、使用するデフォルトを設定します。
- [Deploy CMP Script using the template](テンプレートを使用して CMP スクリプトをデプロイする)オプションを選択します。
- [CMP ID] フィールドに、CCM Pro ポータルの [Step 4. Copy Code Snippet] で使用可能なインスタンス ID をコピーします。CCM Advanced を使用している場合は、TAM からこの情報が提供されます。
- [Additional parameters](追加パラメータ)フィールドに、インスタンスの追加設定を入力します。この設定は、言語、地域検出、プライバシー ポリシーのリンクなどのバックエンド設定をオーバーライドするために使用されます。
- [Integrate CMP with Google Consent Mode](CMP を Google の同意モードと統合)オプションを有効にして、Google の同意モードの統合を設定します。
- 設定に応じて、同意タイプとユーザーの設定のマッピングを指定します。使用している同意タイプごとに、対応する Cookie 使用の同意バケット(Required(必須)、Functional(機能)、Advertising(広告))の ID にマッピングします。[Preferences Cookie](設定に関する Cookie)フィールドで、ファーストパーティの Cookie を cmapi_cookie_privacy にマッピングします。[Behavior Cookie](行動に関する Cookie)フィールドで、ファーストパーティの Cookie を notice_behavior にマッピングします。
- [トリガー] > [同意の初期化 - すべてのページ] > [保存] をクリックします。
- 右上の [プレビュー] をクリックしてコンテナをテストします(下のテスト手順をご覧ください)。
- コンテナを公開します。
他のプラットフォームを使用、またはウェブサイトのコードを直接編集する
- TrustArc Support ポータルにログインし、こちらのリンクから TrustArc Google 同意モード実装ガイドを開き、JavaScript を使用して同意モードを統合するセクションの手順に沿って操作します。
- ウェブサイト作成ツールを使用している場合は、ウェブサイト作成ツールのドキュメントで、各ページの head タグにコードを実装する方法を確認してください。それ以外の場合は、手順 3 に進みます。
- CCM Advanced バージョンを使用している場合は、次の手順に沿って操作します。それ以外の場合は、手順 4 に進みます。各ページの head タグ(ウェブサイト作成ツールを使用している場合は手順 2 を参照)に、以下のコードをコピーして貼り付けます。貼り付ける位置は、手順 1 で head タグの一番上にコピーした CMP スクリプトの上です。これは、CMP が適切に機能するうえで非常に重要です。
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-YYYYYY');
// デフォルトの同意ステータスをプレースホルダとして「denied」に設定します
// 実際の値は、独自の要件に基づいて決定してください
// 使用されていない同意タイプは省略してください
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied',
'functionality_storage': 'denied',
'personalization_storage': 'denied',
'security_storage': 'denied',
'wait_for_update': 500
});
gtag('set', 'ads_data_redaction', true);
gtag('set', 'developer_id.dNTIxZG', true);
</script>
<!--バナー スクリプトをここに挿入します-->
- CCM Pro バージョンを使用している場合は、次の手順に沿って操作します。各ページの head タグ(ウェブサイト作成ツールを使用している場合は手順 2 を参照)に、以下のコードをコピーして貼り付けます。貼り付ける位置は、手順 1 で head タグの一番上にコピーした CMP スクリプトの上です。これは、CMP が適切に機能するうえで非常に重要です。CMP バケットと同意タイプの関連付けを調整してください。
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'GA_MEASUREMENT_ID');
gtag('set', 'developer_id.dNTIxZG', true);
// ToDo: 顧客のニーズや設定に応じて変更できます
gtag('set', 'ads_data_redaction', true);
gtag('set', 'url_passthrough', true);
// 同意モードのステータス
const ConsentType = {
DENIED: 'denied',
GRANTED: 'granted',
};
const convertBooleanToGrantedOrDenied = (boolean) => boolean ? ConsentType.GRANTED : ConsentType.DENIED;
/*
ToDo: ここで、Google の同意モードを設定し、CMP の分類と同意の初期化のデフォルト値をマッピングします
使用しない同意タイプはコメントアウトすることをおすすめします
*/
const domain = 'your_domain.com'; // ToDo: 更新します
// バケットのマッピング
const REQUIRED = 1;
const FUNCTIONAL = 2;
const ADVERTISING = 3;
const consentTypesMapped = {
'ad_storage': ADVERTISING,
'ad_user_data': ADVERTISING,
'ad_personalization': FUNCTIONAL,
'analytics_storage': FUNCTIONAL,
'functionality_storage': FUNCTIONAL,
'personalization_storage': FUNCTIONAL,
'security_storage': REQUIRED
}
const getConsentState = (prefCookie) => {
var consentStates = {};
var noticeBehavior = window.truste.util.readCookie("notice_behavior");
/*
ToDo: お客様のニーズや設定に応じて変更できます
*/
var impliedLocation = noticeBehavior && noticeBehavior.includes("na");
for (const consentType in consentTypesMapped) {
var id = consentTypesMapped[consentType];
if(prefCookie && !prefCookie.includes(0)) {
console.log("Existing consent..");
consentStates[consentType] = convertBooleanToGrantedOrDenied(prefCookie && prefCookie.includes(id));
} else {
console.log("Non Existing consent..");
consentStates[consentType] = convertBooleanToGrantedOrDenied(impliedLocation);
;}
;}
consentStates['wait_for_update'] = 500;
console.log(consentStates);
return consentStates;
};
/*
TrustArc のスクリプトでユーザーの設定に基づいて GCM イベントを送信するヘルパー関数
consent: この同意オブジェクトは、値 [1, 2, 3, n] の配列となります。1 はユーザーが required に同意、2 は functional に同意というように指定されます
この機能は、お客様が必要とするマッピングに応じてカスタマイズする必要があります。例: 'ad_storage': returnGrantedOrDenied(advertisingAccepted) は advertising にマッピングされています。これを functional にマッピングする場合は、参照するバケット変数を変更するだけです
*/
var runOnceGCM = 0;
function handleConsentDecisionForGCM(consent) {
// このコードは同意モードを初期化します
const consentStates = getConsentState(consent.consentDecision);
var defaultOrUpdate;
if (runOnceGCM == 0) {
defaultOrUpdate = 'default';
runOnceGCM++;
} else {
console.log('consent is being updated');
defaultOrUpdate = 'update';
}
console.log(consentStates);
// 同意が変更されたら、更新内容を送信します
gtag('consent', defaultOrUpdate, {
consentStates
});
}
// このコードは、TrustArc の CCM インスタンスを通じて同意の変更をリッスンする役割を担っています
// また、顧客の同意マッピングに従って同意の変更を dataLayer にプッシュします
// これは初回の読み込み用です。ユーザーの同意がデフォルト値と異なる場合は、このコードにより dataLayer に更新がプッシュされます
// CCM が読み込まれた時点。
var interval = setInterval(() => {
if (window.truste) {
var consentDecision = truste.cma.callApi("getGDPRConsentDecision", domain);
handleConsentDecisionForGCM(consentDecision);
clearInterval(interval);
console.log("running once...");
}
}, 100);
// 設定がユーザーによって送信されたタイミングのリッスンを開始します
window.addEventListener("message", (event) => {
let eventDataJson = null;
// この時点では TrustArc イベントのみを考慮します。TrustArc のイベントは JSON でエンコードされています
try {
eventDataJson = JSON.parse(event.data);
} catch {
// JSON 以外の他のイベント。
// TrustArc ではデータを JSON としてエンコードします
// console.log(event.data);
}
// TrustArc からのみイベントを取得するための保護
if (eventDataJson && eventDataJson.source === "preference_manager") {
// ユーザーが設定を送信したことを意味します
if (eventDataJson.message === "submit_preferences") {
console.log("Event Data: ", eventDataJson);
// ユーザーの設定が反映されるまで 0.5 秒待機します。
setTimeout(() => {
var consentDecision = truste.cma.callApi("getGDPRConsentDecision", domain);
console.log("Consent Decision: ", consentDecision);
handleConsentDecisionForGCM(consentDecision);
}, 500);
}
}
}, false);
<!--バナー スクリプトをここに挿入します-->
Tag Assistant を使用したテスト
詳しくは、Google タグ マネージャーで同意モードに関するトラブルシューティングを行う方法をご覧ください。