IAB ヨーロッパが管理する透明性と同意に関するフレームワーク(TCF)は、Google などの広告ベンダーに同意ステータスを送信する際に利用できるツールです。Google の TCF との統合により、同意シグナルを Google に送信する際に、IAB TCF を直接使用したり、IAB TCF を使用する同意管理プラットフォーム(CMP)を利用したりすることが可能となっています。
この記事では、キャンペーン マネージャー 360、検索広告 360、ディスプレイ&ビデオ 360 の Floodlight と広告プレースメント タグおよびトラッキング タグに TCF v2.2 を統合する方法について説明します。なお、クリック トラッカーは IAB TCF の対象外です。
仕組み
キャンペーン マネージャー 360、検索広告 360、ディスプレイ&ビデオ 360 では、コンバージョン トラッキング タグの「TCF 透明性と同意の文字列(TC文字列)」の読み取りと解釈が行われます。CMP では、ユーザーの選択に基づいて TCF 文字列が作成され、同意シグナルがキャンペーン マネージャー 360、検索広告 360、ディスプレイ&ビデオ 360 に送信されます。
TCF v2.2 との統合により、キャンペーン マネージャー 360、検索広告 360、ディスプレイ&ビデオ 360 で TC 文字列の読み取りが可能になります。TC 文字列の内容に基づいて、関連付けられているタグの動作が調整されます。
次の点に注意してください。
- Google ではベンダーとして、TCF v2.2 を使用する TC 文字列に対応しています。TCF v2.1 文字列は引き続き利用可能ですが、業界が TCF v2.2 に移行するのに合わせて、実装マイルストーンに関する IAB ガイドラインへの CMP の準拠が推奨されています。
- キャンペーン マネージャー 360 と検索広告 360 では、同じ Floodlight タグ群が共有されます。キャンペーン マネージャー 360 で受け取ったユーザーの許可は、検索広告 360 に継承されます。詳しくは、Floodlight タグの共有方法についての記事をご覧ください。
透明性と同意に関するフレームワークをセットアップする
Google は、TCF JavaScript API または TCF マクロを介した TC 文字列の受け渡しに対応しています。
TCF JavaScript API
CMP では TC 文字列は JavaScript 変数に保存されます。Google タグはこの変数にアクセスし、ユーザーの許可に関する情報を取得します。
TCF マクロ
IAB TCF では、クリエイティブ タグでマクロを次の目的で使用できます。
- URL 内のどこに TC 文字列を挿入して転送するかを示す
- どのベンダーが使用されているかを識別する
IAB TCF の統合を希望する広告主様は、ピクセル ベンダーと連携し、以下のマクロを適切にサポートする必要があります。
gdpr_consent=${GDPR_CONSENT_xxxxx}
: 同意パラメータを受け取るマクロ。xxxxx
は、TC 文字列を受け取るベンダーのグローバル ベンダー リスト ID(GVL ID)です。gdpr=${GDPR}
: GDPR ステータスを受け取るマクロ。1
は GDPR が適用されること、0
は適用されないことを示します。このマクロは TCF 処理を有効にします。gdpr_consent=${GDPR_CONSENT_xxxxx}
とともに送信する必要があります。gdpr=1
となっていて、gdpr_consent=${GDPR_CONSENT_xxxxx}
が設定されていないか、存在しない場合は、広告が配信または測定されないことがあります。addtl_consent=${ADDTL_CONSENT}
: IAB GVL には登録されていないが、Google の広告技術プロバイダ管理設定で指定されたベンダーをサポートするマクロ。ADDTL_CONSENT
は、ユーザーが同意している Google の広告技術プロバイダ(ATP)の ID で構成される、ドット区切りのリストです。詳しくは、Google の追加同意の技術仕様をご覧ください。
ベンダーに TCF シグナルを渡す
TCF シグナルは、クリエイティブまたはイベントタグに含まれる他のベンダーに渡すこともできます。これらのシグナルによって、クリエイティブで使用されているベンダーに対するユーザーの許可と、適用される Google のポリシーに基づき、配信可能なクリエイティブが決まります。また、TC 文字列によって、ユーザーがパーソナライズド広告の配信やオーディエンス リストへの追加からオプトアウトすることが可能になります。
TC 文字列を受け取る各ベンダーには、一意のグローバル ベンダー リスト(GVL)ID があります。第三者広告タグとトラッキング ピクセルについて、TCF を導入する広告主様は、ベンダーの GVL ID を新しいマクロと併せて手作業でタグに追加する必要があります。キャンペーン マネージャー 360、検索広告 360、ディスプレイ&ビデオ 360 では、ベンダーがユーザーの設定に準拠し、TCF のユーザーの許可に関する情報を渡せるように、このマクロが TC 文字列に置き換えられます。
例
http://vendor-a.com/?key1=val1&key2=val2&gdpr=${GDPR}&gdpr_consent=${GDPR_CONSENT_xxxxx}
注: HTML5 ファイルやリッチメディア クリエイティブなど、クリエイティブのソースアセットに実装されたマクロはサポートされていません。これらのフォーマットを使用する広告主様は、クリエイティブからの第三者呼び出しに TC 文字列を渡すには、CMP を確認する独自の JavaScript コードを含め、自身で TCF API にアクセスする必要があります。
キャンペーン マネージャー 360 では、ベンダーマクロは次で使用できます。
- イベントタグ
- Floodlight ダイナミック タグ
- クリエイティブのリダイレクト
- カスタム クリエイティブ
- オンライン行動ターゲティング広告(OBA)リンク
- ins タグ
ディスプレイ&ビデオ 360 では、マクロが一般的にサポートされているすべてのクリエイティブ タイプとフィールドでベンダーマクロを使用できます。
タグの統合
IAB TCF 登録済みの CMP をサイトに実装している広告主様は、キャンペーン マネージャー 360、検索広告 360、ディスプレイ&ビデオ 360 のタグでユーザーの許可を渡すことができます。
Floodlight タグ
キャンペーン マネージャー 360、検索広告 360、ディスプレイ&ビデオ 360 では、いずれもコンバージョンの測定に Floodlight タグを使用します。TCF を導入する場合は、広告主様の Floodlight タグの実装方法に応じて、以下の手順を行う必要があります。
- (Google タグを使用して実装されていない)従来の Floodlight タグ: 広告主様はサイトの既存の Floodlight タグすべてに新しいマクロを追加する必要があります。または、Floodlight タグを再度ダウンロードすることもできます。この場合、新しいマクロが自動的に含められます。
- (Google タグまたは Google タグ マネージャーを使用して実装された)Floodlight タグ: これらのタグは TCF API との統合が想定されており、CMP の手順に沿ってタグを正しく統合する必要があります。Google タグまたは Google タグ マネージャーを使用する広告主様は、タグのグローバル ヘッダー部分に JavaScript 行「
window ['gtag_enable_tcf_support'] = true;
」を追加することで TCF サポートを有効にできます。例
<script>
window ['gtag_enable_tcf_support'] = true;
</script>
<!-- Google タグ(gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=FL-CONFIG_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config','FL-CONFIG_ID');
</script>
プレースメント タグとトラッキング タグ
キャンペーン マネージャー 360 とディスプレイ&ビデオ 360 では、プレースメント タグとトラッキング タグが使用されます。
プレースメント タグとトラッキング タグでは、TCF のユーザーの許可に関する情報の送信はパブリッシャーの CMP によって行われます。
-
ディスプレイ&ビデオ 360: パブリッシャーのサイトでタグが実行(「配信」)されると、CMP により、まず TCF のユーザーの許可に関する情報がアド エクスチェンジに、続いてディスプレイ&ビデオ 360 に送信されます。その後、ディスプレイ&ビデオ 360 でタグのマクロが TC 文字列に置き換えられ、キャンペーン マネージャー 360 でパブリッシャーのサイトにクリエイティブが配信されます。
-
キャンペーン マネージャー 360: TCF マクロが存在する場合、または TCF API を通じて自動的に送信される場合は、CMP からキャンペーン マネージャー 360 のプレースメント タグに TCF のユーザーの許可に関する情報が直接渡されます。
TCF を導入する場合は、タグの種類に応じて以下の手順を踏む必要があります。
- Google タグ(ins 近日提供予定): 対応は不要です。TCF のユーザーの許可に関する情報は、TCF API を介して CMP から自動的に渡されます。
- その他のタグ: TCF を導入するには、サイトの既存のタグすべてに新しいマクロを追加します。または、タグを再度ダウンロードすることもできます。この場合、新しいマクロが自動的に含められます。既存の ins タグに TCF を追加するには、次の例を参考にしてください。
例
<ins class='dcmads'
style='display:inline-block;width:300px;height:250px'
data-dcm-placement='N7480.1664088DOUBLECLICK.NETTEST/B8299600.114131924'
data-dcm-rendering-mode='script'
data-dcm-gdpr-applies=’gdpr=${GDPR}’
data-dcm-gdpr-consent='gdpr_consent=${GDPR_CONSENT_755}'
data-dcm-addtl-consent=’addtl_consent=${ADDTL_CONSENT}’
data-dcm-click-tracker='${CLICK_URL}'>
<script src='https://www.googletagservices.com/dcm/dcmads.js'></script>
</ins>
TCF とサービス動作の関係
目的
TCF は「目的」を使用してデータ処理を整理します。目的には、それぞれ対応する法的根拠(同意または正当な利益)があります。キャンペーン マネージャー 360、ディスプレイ&ビデオ 360、検索広告 360 のタグでは、同意文字列を含むリクエストが次の方法で適宜処理されます。
目的 | Google の登録済みの法的根拠 | 説明 | 目的がない場合の影響 |
---|---|---|---|
1 | 同意 | デバイスに情報を保存する / デバイス上の情報にアクセスする |
測定またはパーソナライズを目的とした Cookie の作成、使用は行われません。同意していないユーザーはリマーケティング リストに追加されないため、アトリビューション レポートはより限定的なものになる場合があります。 Google サービスがユーザー単位の広告データを受け取ることはありません。Google タグの設定で、Google サービス全体でのデータ使用の管理を行います。 |
2 | フレキシブル - デフォルトで正当な利益 | 基本的な広告を選択する | この目的は、広告を配信するすべてのイベントで必要です。この目的が存在しない場合、広告は配信されない可能性があります。 |
3、4 | 同意 | パーソナライズド広告のプロファイルを作成、使用する | イベントは広告のパーソナライズの対象にはならず、リマーケティング リストにも使用されません。オーディエンス リストに追加済みのユーザーは影響を受けません。 |
7 | フレキシブル - デフォルトで正当な利益 | 広告のパフォーマンスを測定する |
この目的は、すべてのイベントで必須です。この目的が存在しない場合、イベントは記録されない可能性があります。 Google サービスがユーザー単位の広告データを受け取ることはありません。Google タグの設定で、Google サービス全体でのデータ使用の管理を行います。 |
9 | フレキシブル - デフォルトで正当な利益 | マーケット リサーチを適用してオーディエンス分析を生成する | この目的は、すべてのイベントで必須です。この目的が存在しない場合、イベントは記録されない可能性があります。 |
10 | フレキシブル - デフォルトで正当な利益 | 商品の開発と改善を行う | この目的は、すべてのイベントで必須です。この目的が存在しない場合、イベントは記録されない可能性があります。 |
SP1 | 正当な利益 | セキュリティの確保、不正行為の防止、デバッグを行う | この目的は TCF 内に常に存在し、利用可能です。 |
SP2 | 正当な利益 | 広告またはコンテンツを技術的に配信する | この目的は TCF 内に常に存在し、利用可能です。 |
* Google は、TCF 目的 2、7、9、10 について柔軟に設定を変えられる登録を行っており、デフォルトで「正当な利益」になります。CMP の設定でパブリッシャー様がこれらの目的について Google に「同意」を課した場合を除き、Google は CMP でユーザーに対して確立された正当な利益を根拠として目的の処理を行います。Google は、目的 1、3、4 について柔軟に設定が変えられる登録にはなっておらず、これらの目的については常にユーザーの同意が必要です。
その他の TCF 目的はキャンペーン マネージャー 360、ディスプレイ&ビデオ 360、検索広告 360 のタグでは使用されませんが、他の Google サービスで使用される可能性があります。
留意事項
- Google では、gdpr=1 は、TCF がイベントに適用されていることを示すシグナルと解釈されます。
gdpr=
パラメータが 1 に設定され、gdpr_consent=
パラメータがキャンペーン マネージャー 360 のプレースメント タグに含まれている場合、gdpr_consent=
には有効な TC 文字列が含まれている必要があります。有効な TC 文字列が含まれない場合、広告は配信または測定されない可能性があります。 - TC 文字列で Google がリクエストの目的 1 に関する同意の情報を得ていないことが示されている場合は、タグの
ad.doubleclick.net
をpagead2.googlesyndication.com
に置き換えてください。これは、標準タグ、iframe / JavaScript タグ(INS タグを除く)、プリフェッチ タグ(動画を含む)、トラッキング広告タグ、クリック トラッカー タグに適用されます。 - 無効な
addtl_consent
値が含まれる場合は、上記の例とは異なり、現在のところ広告配信には影響しません。 - Google のポリシーは、他のベンダーにリンクされているクリエイティブに埋め込まれた TCF マクロにも適用されます。これらのマクロが無効で、TCF が適用されると Google が判断した場合(つまりインプレッションが
gdpr=1
で呼び出される場合)、クリエイティブは配信されません。この場合は、配信可能な他のクリエイティブまたはデフォルトのクリエイティブが配信されます。
注: Google タグ マネージャーと Google タグは、TCF ポリシーと技術仕様に従って正しく実装された TCF 文字列のみを受け入れ、Google の EU ユーザーの同意ポリシーに準拠します。CMP が 500 ミリ秒以内に応答しない場合、または「error」、「stub」、「loading」のステータスが表示された場合は、タグは制限付きモードで処理されます。
- Google 広告では、ファーストパーティとサードパーティのコンバージョン Cookie の書き込みと読み取りが制限されます。
- Google アナリティクスの広告向けの機能は IAB TCF v2 と統合されており、そのようなリクエストはすべての目的が拒否されているものとして扱われます。この影響については上記の表で説明しています。
- リマーケティング機能は無効になります。
エラー メッセージのトラブルシューティング
CMP が 500 ミリ秒以内に応答しない場合、または「error」、「stub」、「loading」ステータスが表示される場合は、タグは制限付きモードで処理されます。この問題を解決する方法は次のとおりです。
手動で関数を呼び出し、コンバージョン タグを配信している場合:
getTCData TCData.eventStatus = 'tcloaded'
または'cmpuishown' + 'useractioncomplete'
へのレスポンスが 500 ミリ秒以内に送信されていることを確認します。これらのステータスは、CMP が同意の選択肢をユーザーに提供できる状態にあることを示しています。
コンバージョン タグを送信するために関数を手動で呼び出していない場合:
- CMP で
getTCData and return TCData.eventStatus = 'tcloaded'
または'cmpuishown' + 'useractioncomplete'
のサポートを実装し、ユーザーの同意を得られていることを、API を通して 500 ミリ秒以内に示せるようにします。
よくある質問
パブリッシャーが TCF パラメータを含んだタグを承認しない場合はどうすればよいですか?
gdpr=;gdpr_consent=${gdpr_consent_755}
data-dcm-gdpr-consent='gdpr_consent=${gdpr_consent_755}'
data-dcm-gdpr-applies='gdpr=${gdpr}'