アトリビューション レポートのデバッグに関するパート 2/3。デバッグ レポートを設定します。
用語集
- レポート送信元は、Attribution Reporting の「ソース」ヘッダーとトリガー ヘッダーを設定する送信元です。ブラウザによって生成されたすべてのレポートは、このオリジンに送信されます。このガイダンスでは、レポート送信元の例として
https://adtech.example
を使用します。 - アトリビューション レポート(レポート)は、リクエストした測定データを含む最終的なレポート(イベントレベルまたは集計可能)です。
- デバッグ レポートには、アトリビューション レポート、ソースイベント、トリガー イベントに関する追加データが含まれます。デバッグ レポートを受け取っても、必ずしも正しく動作していないわけではありません。2 種類のデバッグ レポート
- 移行デバッグ レポートは、生成と送信のために Cookie の設定が必要なデバッグ レポートです。Cookie が設定されていない場合、およびサードパーティ Cookie のサポートが終了すると、移行デバッグ レポートは利用できなくなります。このガイドで説明するデバッグ レポートはすべて移行デバッグ レポートです。
- 成功デバッグ レポートでは、アトリビューション レポートの正常な生成を追跡できます。アトリビューション レポートと直接関連しています。成功デバッグ レポートは、Chrome 101(2022 年 4 月)から利用できます。
- 詳細なデバッグ レポートは、欠落しているレポートを追跡し、欠落している理由を特定するのに役立ちます。ブラウザがソースイベントまたはトリガー イベントを記録しなかった(つまりアトリビューション レポートを生成しない)ケースと、なんらかの理由でアトリビューション レポートを生成または送信できないケースを示します。詳細なデバッグ レポートには、ソースイベント、トリガー イベント、アトリビューション レポートが生成されなかった理由を示す
type
フィールドが含まれています。詳細なデバッグ レポートは、Chrome 109(2023 年 1 月の安定版)からご利用いただけます。 - デバッグキーは、ソース側とトリガー側の両方で設定できる一意の識別子です。デバッグキーを使用すると、Cookie ベースのコンバージョンとアトリビューション ベースのコンバージョンをマッピングできます。デバッグ レポートを生成し、デバッグキーを設定するようにシステムをセットアップすると、ブラウザのすべてのアトリビューション レポートとデバッグ レポートにこれらのデバッグキーが含まれるようになります。
ドキュメント全体で使用されているコンセプトと主な用語については、プライバシー サンドボックスの用語集をご覧ください。
実装に関する質問
デバッグ レポートの設定中に問題が発生した場合は、 デベロッパーサポート リポジトリ して、トラブルシューティングをお手伝いします。
デバッグ レポートの設定を準備する
デバッグ レポートを設定する前に、次の操作を行います。
API 統合のベスト プラクティスを適用していることを確認する
コードが機能検出によって制限されていることを確認します。API が確実に Permissions-Policy によってブロックされていない場合は、次のコードを実行します。
if (document.featurePolicy.allowsFeature('attribution-reporting')) { // the Attribution Reporting API is enabled }
この機能検出チェックで true が返された場合、API は context(ページ)。
(テスト段階では不要: Permissions-Policy)
統合に関する基本的な問題を解決する
デバッグ レポートは損失を大規模に検出して分析するうえで役立ちますが、 ローカルで検出できる問題もあります。ソースとトリガーのヘッダー 構成ミス、JSON 解析の問題、安全でないコンテキスト(HTTPS 以外) API の動作を妨げるその他の問題は、 DevTools の [Issues] タブ:
DevTools の問題にはさまざまなタイプがあります。invalid header
が発生した場合
問題がある場合は、ヘッダーをヘッダー検証ツールにコピー
ツールをご覧ください。この
は、問題の原因となっているフィールドを特定して修正するのに役立ちます。
デバッグ レポートの設定: 成功レポートと詳細レポートに共通する手順
レポート送信元に次の Cookie を設定します。
Set-Cookie: ar_debug=1; SameSite=None; Secure; Path=/; HttpOnly
ブラウザでは、ソースと Cookie の両方でこの Cookie が存在するかどうかが トリガーの登録です。成功デバッグ レポートは、 Cookie が使用されています。
なお、デバッグ レポートはモードのブラウザでは有効にできます。 B です。ここで、 テストと準備を円滑に進めるために、サードパーティ Cookie が無効になっている サポートしていますモード B のブラウザでは、ブラウザに対して デバッグ Cookie を使用してデバッグ レポートを有効にします。ステップ 2 に進んでデバッグキーを設定する 成功デバッグレポートも参照できます
ステップ 2: デバッグキーを設定する
各デバッグキーは、10 進文字列としてフォーマットされた 64 ビット符号なし整数である必要があります。 各デバッグキーを一意の ID にします。成功デバッグ レポートは 設定されている場合。
- ソース側のデバッグキーを、追加のソース時間情報にマッピングする 特定します。
- トリガー側のデバッグキーを、追加のトリガー時間情報にマッピングする 特定します。
たとえば、次のようなデバッグキーを設定できます。
- ソースのデバッグキーとしての Cookie ID + ソースのタイムスタンプ(同じものをキャプチャします) タイムスタンプなど)
- Cookie ID + トリガーのタイムスタンプをトリガーのデバッグキーとして使用する(同じものをキャプチャする) タイムスタンプなど)
これにより、Cookie ベースのコンバージョン情報を使用して、 対応するデバッグ レポートやアトリビューション レポートです。詳しくは、パート 3: クックブックをご覧ください。
ソース側のデバッグキーを source_event_id
とは異なるものにして、
同じソースイベント ID の個々のレポートを区別できます。
Attribution-Reporting-Register-Source:
{
// … Usual fields for Attribution-Reporting-Register-Source
"debug_key":"647775351539539"
}
Attribution-Reporting-Register-Trigger:
{
// … Usual fields for Attribution-Reporting-Register-Trigger
"debug_key":"938321351539743"
}
デモコード: ソースデバッグ キー デモコード: デバッグをトリガーする キー
成功デバッグ レポートを設定する
このセクションのコード例では、両方の成功デバッグ レポートが生成されます。 イベントレベルおよび集計可能レポートですイベントレベルレポートと集計可能レポートでは 同じデバッグキーを使用します。
ステップ 3: 成功デバッグ レポートを収集するエンドポイントを設定する
デバッグ レポートを収集するエンドポイントを設定します。このエンドポイントは
メインのアトリビューション エンドポイントに追加します。パスには debug
文字列を追加します。
- イベントレベルの成功デバッグ レポートのエンドポイント:
https://adtech.example/.well-known/attribution-reporting/debug/report-event-attribution
<ph type="x-smartling-placeholder">- </ph>
- 集計可能な成功デバッグ レポートのエンドポイント:
https://adtech.example/.well-known/attribution-reporting/debug/report-aggregate-attribution
- 集計可能な成功デバッグ レポートのエンドポイント:
アトリビューションがトリガーされると、ブラウザは直ちにデバッグ情報を送信します。
POST
リクエストを介してこのエンドポイントにレポートを送信します。処理するサーバーコード
受信した成功デバッグ レポートは次のようになります(ここではノード エンドポイントにあります)。
// Handle incoming event-Level Success Debug reports
adtech.post(
'/.well-known/attribution-reporting/debug/report-event-attribution',
async (req, res) => {
// Debug report is in req.body
res.sendStatus(200);
}
);
// Handle incoming aggregatable Success Debug reports
adtech.post(
'/.well-known/attribution-reporting/debug/report-aggregate-attribution',
async (req, res) => {
// Debug report is in req.body
res.sendStatus(200);
}
);
デモコード: イベントレベルのデバッグ レポート エンドポイント
ステップ 4: 設定によって成功デバッグ レポートが生成されることを確認する
- ブラウザで
chrome://attribution-internals
を開きます。 - [Show Debug Reports] チェックボックスがオンになっていることを確認します。 [イベントレベル レポート] タブと [集計可能なレポート] タブ。
- Attribution Reporting を実装したサイトを開きます。完了 アトリビューション レポートの生成手順同じ手順を踏むことで 成功デバッグレポートの生成
chrome://attribution-internals
で以下を実行します。- アトリビューション レポートが正しく生成されていることを確認する。
- [イベントレベル レポート] タブと [集計可能なレポート] タブで、次の操作を行います。
成功デバッグ レポートも生成されることを確認する。相手を認識する
青い
debug
パスで示されます。
- サーバーで、エンドポイントがこれらの成功を直ちに受信することを確認する デバッグ レポート必ずイベントレベルと集計可能テーブルの両方をチェックします。 成功デバッグレポート
ステップ 5: 成功デバッグ レポートを確認する
成功デバッグ レポートはアトリビューション レポートと同じで、両方が含まれます。 ソース側とトリガー側のデバッグキーを使用します。
{
"attribution_destination": "https://advertiser.example",
"randomized_trigger_rate": 0.0000025,
"report_id": "7d76ef29-d59e-4954-9fff-d97a743b4715",
"source_debug_key": "647775351539539",
"source_event_id": "760938763735530",
"source_type": "event",
"trigger_data": "0",
"trigger_debug_key": "156477391437535"
}
{
"aggregation_service_payloads": [
{
"debug_cleartext_payload": "omRkYXRhgqJldmFsdWVEAACAAGZidWNrZXRQPPhnkD+7c+wm1RjAlowp3KJldmFsdWVEAAARMGZidWNrZXRQJFJl9DLxbnMm1RjAlowp3GlvcGVyYXRpb25paGlzdG9ncmFt",
"key_id": "d5f32b96-abd5-4ee5-ae23-26490d834012",
"payload": "0s9mYVIuznK4WRV/t7uHKquHPYCpAN9mZHsUGNiYd2G/9cg87Y0IjlmZkEtiJghMT7rmg3GtWVPWTJU5MvtScK3HK3qR2W8CVDmKRAhqqlz1kPZfdGUB4NsXGyVCy2UWapklE/r7pmRDDP48b4sQTyDMFExQGUTE56M/8WFVQ0qkc7UMoLI/uwh2KeIweQCEKTzw"
}
],
"shared_info": "{\"api\":\"attribution-reporting\",\"attribution_destination\":\"https://advertiser.example\",\"debug_mode\":\"enabled\",\"report_id\":\"4a04f0ff-91e7-4ef6-9fcc-07d000c20495\",\"reporting_origin\":\"https://adtech.example\",\"scheduled_report_time\":\"1669888617\",\"source_registration_time\":\"1669852800\",\"version\":\"0.1\"}",
"source_debug_key": "647775351539539",
"trigger_debug_key": "156477391437535"
}
詳細なデバッグ レポートを設定する
ステップ 3: ソースヘッダーとトリガーヘッダーで詳細デバッグを有効にする
両方の Attribution-Reporting-Register-Source
で debug_reporting
を true
に設定する
および Attribution-Reporting-Register-Trigger
。
Attribution-Reporting-Register-Source:
{
// … Usual fields for Attribution-Reporting-Register-Source
"debug_key":"938321351539743",
"debug_reporting": true // defaults to false if not present
}
Attribution-Reporting-Register-Trigger:
{
// … Usual fields for Attribution-Reporting-Register-Trigger
"debug_key":"938321351539743",
"debug_reporting": true // defaults to false if not present
}
ステップ 4: 詳細なデバッグ レポートを収集するようにエンドポイントを設定する
デバッグ レポートを収集するエンドポイントを設定します。このエンドポイントは
メインのアトリビューション エンドポイントに接続し、debug/verbose
文字列を
パス:
https://adtech.example/.well-known/attribution-reporting/debug/verbose
詳細なデバッグ レポートが生成されるのは、ソースまたはトリガーが
すぐにブラウザは詳細なデバッグ レポートを
このエンドポイントへの POST
リクエスト。冗長な受信を処理するためのサーバーコード
デバッグ レポートは次のようになります(ここではノード エンドポイントです)。
// Handle incoming verbose debug reports
adtech.post(
'/.well-known/attribution-reporting/debug/verbose',
async (req, res) => {
// List of verbose debug reports is in req.body
res.sendStatus(200);
}
);
成功デバッグ レポートとは異なり、詳細レポート用のエンドポイントは 1 つだけです。 イベントレベル レポートと集計レポートに関連する詳細レポートは、 同じエンドポイントに送信されます
ステップ 5: 設定によって詳細なデバッグ レポートが生成されることを確認する
詳細デバッグ レポートにはさまざまな種類がありますが、 詳細デバッグの設定を 1 つのタイプのみ詳細デバッグでチェックする レポートこのような詳細なデバッグ レポートが正しく生成され、 つまり、すべての種類の詳細デバッグ レポートが正しく すべての詳細デバッグ レポートでは同じ設定が使用されます。 送信され、同じエンドポイントに送信されます。
- ブラウザで
chrome://attribution-internals
を開きます。 - アトリビューションで設定されたアトリビューション(コンバージョン)をサイトでトリガーします
レポート広告のエンゲージメント(インプレッションまたはクリック)が発生しなかったため
この変換が行われる前に、タイプの詳細デバッグ レポートが表示されるはずです。
trigger-no-matching-source
が生成されます。 chrome://attribution-internals
で [Verbose debug Reports] タブを開きます。 タイプtrigger-no-matching-source
の詳細デバッグ レポートを確認します。 生成されます。- サーバーで、エンドポイントが直ちにこのリクエストを受信したことを 詳細なデバッグ レポート
ステップ 6: 詳細なデバッグ レポートを確認する
トリガー時に生成される詳細なデバッグ レポートには、ソース側のレポートと トリガー側のデバッグキー(トリガーに一致するソースがある場合)。 ソース時に生成された詳細なデバッグ レポートにソース側のデバッグ情報が含まれる ] キーを押します。
ブラウザから送信される、詳細なデバッグ レポートを含むリクエストの例:
[
{
"body": {
"attribution_destination": "http://arapi-advertiser.localhost",
"randomized_trigger_rate": 0.0000025,
"report_id": "92b7f4fd-b157-4925-999e-aad6361de759",
"source_debug_key": "282273499788483",
"source_event_id": "480041649210491",
"source_type": "event",
"trigger_data": "1",
"trigger_debug_key": "282273499788483"
},
"type": "trigger-event-low-priority"
},
{
"body": {
"attribution_destination": "http://arapi-advertiser.localhost",
"limit": "65536",
"source_debug_key": "282273499788483",
"source_event_id": "480041649210491",
"source_site": "http://arapi-publisher.localhost",
"trigger_debug_key": "282273499788483"
},
"type": "trigger-aggregate-insufficient-budget"
}
]
各詳細レポートには次のフィールドがあります。
Type
- レポートが生成された原因。詳細情報と 種類とそれに応じた対処方法については、 「パート 3: デバッグ」の詳細レポート リファレンス マイレシピをご覧ください。
Body
- レポートの本文。その種類によって異なります。詳細を確認する 「パート 3: デバッグ」のレポート リファレンス マイレシピをご覧ください。
リクエストの本文には、少なくとも 1 つ、最大で 2 つの詳細レポートが含まれます。
- 障害がイベントレベルのレポートにのみ影響する場合(または 影響するのは集計可能レポートのみです)。ソースまたはトリガーの登録エラー 理由は 1 つだけです。エラーごとに 1 つの詳細レポートを生成できます。 レポートタイプ(イベントレベルまたは集計可能)ごとに設定できます。
- 障害がイベントレベルと集計可能両方に影響する場合は、2 つの詳細レポート
レポート(例外: 失敗の理由がイベントレベルで同じ場合)
場合は、詳細レポートが 1 つだけ生成されます(例:
trigger-no-matching-source
)