デバッグレポートをセットアップする

アトリビューション レポートのデバッグに関するパート 2/3。デバッグレポートをセットアップします。

公開日

翻訳先言語: English

この記事は、Attribution Reporting API のデバッグに関する連載の一部です。この連載では、イベントレベルのレポートと集計可能なレポートのクライアント側のデバッグについて説明します。要約レポートのサーバー側のデバッグに関するガイダンスは、GitHub で提供されています。アトリビューションレポートの実験ハンドブックには追加情報が記載されています。

用語集

  • レポートオリジンとは、アトリビューションレポートのソースヘッダーとトリガーヘッダーを設定するオリジンです。ブラウザによって生成されたすべてのレポートは、このオリジンに送信されます。このガイダンスでは、レポートオリジンの例として https://adtech.example を使用します。
  • アトリビューションレポートレポート)は、リクエストした測定データを含む最終レポート(イベントレベルまたは集計可能)です。
  • デバッグレポートには、アトリビューションレポート、またはソースイベントやトリガーイベントに関する追加データが含まれています。デバッグレポートを受け取ったからといって、必ずしも何かが正しく動作していないことを意味するわけではありません。デバッグレポートには 2 種類あります。
  • トランジショナルデバッグレポートは、生成および送信に Cookie の設定を必要とするデバッグレポートです。トランジショナルデバッグレポートは Cookie が設定されていない場合には利用できなくなるため、サードパーティ Cookie が廃止されると利用できなくなります。このガイドで説明するデバッグレポートはすべてトランジショナルデバッグレポートです
  • 成功デバッグレポート正常に完了した(処理に成功した)アトリビューションレポートの生成を追跡します。これらのレポートは、アトリビューションレポートに直接関係しています。成功デバッグレポートは Chrome 101(2022 年 4 月)から利用可能となっています。
  • 冗長デバッグレポートは、欠落しているレポートを追跡し、欠落している理由を特定するのに役立ちます。これらは、ブラウザがソースイベントまたはトリガーイベントを記録しなかった場合(アトリビューションレポートが生成されない場合)、および何らかの理由でアトリビューションレポートを生成または送信できない場合を示します。冗長デバッグレポートには、ソースイベント、トリガーイベント、または属性レポートが生成されなかった理由を説明する type フィールドが含まれます。冗長デバッグ レポートは、Chrome 109(2023 年 1 月安定版)以降で利用可能です。
  • デバッグキーは、ソース側とトリガー側の両方で設定できる一意の識別子です。デバッグキーを使用すると、Cookie ベースのコンバージョンとアトリビューションベースのコンバージョンをマッピングできます。デバッグレポートを生成し、デバッグキーを設定するようにシステムを設定すると、ブラウザはこれらのデバッグキーをすべてのアトリビューションレポートとデバッグ レポートに含めます

ドキュメント全体で使用されるその他の概念と重要な用語については、「プライバシーサンドボックス用語集」をご覧ください。

実装に関する質問がございますか?

デバッグレポートのセットアップ中にイシューが発生した場合は、開発者サポートリポジトリでイシューを作成してください。トラブルシューティングをお手伝いします。

デバッグレポートのセットアップ準備

デバッグレポートをセットアップする前に、次の手順を実行します。

API 統合のベストプラクティスの適用を確認する

  • コードが機能検出の背後でゲートされていることを確認してください。
  • (テスト段階では必要ありません: Permissions-Policyを設定したことを確認してください)
重要

Permissions-Policy の要件はテスト用に緩和されていますが、サイト運営者または広告主は Permissions-Policy を介して Attribution Reporting API を明示的に無効にすることを引き続き決定できます。この場合、ソースもトリガーも記録できません(したがって、レポートを生成または送信することはできません)。

基本的な統合のイシューを修正する

デバッグレポートは損失を大規模に検出して分析するのに役立ちますが、一部の統合のイシューはローカルで検出できます。ソースとトリガーヘッダーの構成ミスのイシュー、JSON 解析のイシュー、安全でないコンテキスト(HTTPS 以外)、および API の機能を妨げるその他のイシューは、DevTools の Issues タブに表示されます。

これらのイシューにより、API が機能しなくなるため、詳細デバッグレポートは生成されません。成功デバッグレポートがない場合のみ、これらのイシューのいくつかが発生している可能性があります。詳細については、パート 3: デバッグのクックブックをご覧ください。

DevTools のイシューにはさまざまな種類があります。invalid header イシューが発生した場合は、ヘッダーをヘッダー検証ツールにコピーします。こうすることで、イシューの原因となっているフィールドを特定して修正することができます。

スクリーンショット: ヘッダー検証ツール

デバッグレポートのセットアップ: 成功レポートと詳細レポートに共通の手順

レポート作成元に次の Cookie を設定します。

Set-Cookie: ar_debug=1; SameSite=None; Secure; Path=/; HttpOnly

ブラウザは、ソースとトリガーの両方の登録でこの Cookie の有無を確認します。両方の時点で Cookie が存在する場合にのみ、成功のデバッグレポートが生成されます。

デモ コード: デバッグ Cookie

ステップ 2: デバッグキーを設定する

各デバッグ キーは、基数 10 の文字列としてフォーマットされた 64 ビットの符号なし整数である必要があります。各デバッグキーを一意の ID にします。

  • ソース側のデバッグキーを、デバッグに関連すると思われる追加のソース時間情報にマッピングします。
  • トリガー側のデバッグ キーを、デバッグに関連すると思われる追加のトリガー時間情報にマッピングします。

たとえば、次のデバッグキーを設定できます。

  • Cookie ID + ソースデバッグキーとしてのソースタイムスタンプ(および Cookie ベースのシステムで同じタイムスタンプを取得します)
  • Cookie ID + トリガーデバッグキーとしてのトリガータイムスタンプ(および Cookie ベースのシステムで同じタイムスタンプを取得します)

**これにより、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"
}

デモ コード: ソースデバッグキー****デモ コード: トリガーデバッグキー

デモコードでは、両方のデバッグキーに従来の測定サードパーティ Cookie の値を指定しています。実際のシステムでは、上記のデバッグキーの例で提案されているように、各キーを一意の ID にして、デバッグに役立つと思われる追加のソース時間情報にマッピングします。

成功デバッグレポートをセットアップする

デモを試して、ブラウザで成功デバッグレポートを生成し、プレビューしてください。対応するコードを確認してください。

このセクションのサンプルコードは、イベントレベルのレポートと集計可能なレポートの両方の成功デバッグレポートを生成します。イベント レベルのレポートと集計可能なレポートは、同じデバッグキーを使用します。

ステップ 3: 成功デバッグレポートを収集するエンドポイントをセットアップする

デバッグレポートを収集するエンドポイントをセットアップします。このエンドポイントは、パスに debug 文字列が追加されたメインのアトリビューションエンドポイントに似ている必要があります。

  • イベントレベルの成功デバッグレポートのエンドポイント: https://adtech.example/.well-known/attribution-reporting/debug/report-event-attribution
  • 集計可能な成功デバッグレポートのエンドポイント: 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 を開きます。
  • Event-Level Reports タブと Aggregatable Reports タブの両方で、Show Debug Reports チェックボックスがオンになっていることを確認します。
  • アトリビューション レポートを実装したサイトを開きます。アトリビューション レポートの生成に使用する手順を完了します。これらの同じ手順により、成功デバッグレポートが生成されます。
  • chrome://attribution-internals で以下を確認します。
    • アトリビューション レポートが正しく生成されていることを確認します。
    • Event-Level Reports タブと Aggregatable Reports タブで、成功デバッグレポートも生成されていることを確認します。リスト内の青い debug パスでそれらを認識できます。
スクリーンショット: Attribution internals
  • サーバーで、エンドポイントがこれらの成功デバッグレポートをすぐに受信することを確認します。イベントレベルと集計可能な成功デバッグレポートの両方を確認してください。
スクリーンショット: レポート元のサーバーログ

ステップ 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-SourceAttribution-Reporting-Register-Trigger の両方で debug_reportingtrue に設定します。

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 タイプの詳細デバッグレポートだけで詳細なデバッグのセットアップを確認すれば十分です。すべての詳細デバッグレポートが同じ構成を使用し、同じエンドポイントに送信されるため、この 1 タイプの詳細デバッグレポートが正しく生成され、受信されれば、すべてのタイプの詳細デバッグレポートも正しく生成され、受信されることになります。

重要

簡単にテストできる詳細デバッグレポートを選びます。trigger-no-matching-source は、単に変換するだけで生成できるため、良い候補と言えます。トリガーイベントに関連する詳細レポートが、より適している傾向があります。ソースイベントに関連する詳細レポートタイプは、意図的に生成するのが面倒です。

  1. ブラウザで chrome://attribution-internals を開きます。
  2. アトリビューション レポートでセットアップされたサイトでアトリビューション(コンバージョン)をトリガーします。このコンバージョンの前に広告エンゲージメント(インプレッションまたはクリック)がなかったことを考えると、trigger-no-matching-source タイプの詳細デバッグレポートが生成されることが予想されます。
  3. chrome://attribution-internals で、Verbose debug reports タブを開き、trigger-no-matching-source タイプの詳細デバッグレポートが生成されていることを確認します。
  4. サーバーで、エンドポイントがこの詳細デバッグレポートをすぐに受信したことを確認します。

ステップ 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 つだけです。したがって、失敗ごと、およびレポートタイプ(イベントレベルまたは集計可能)ごとに 1 つの詳細レポートを生成できます。
  • 失敗がイベントレベルレポートと集計可能レポートの両方に影響する場合は、2 つの詳細レポート。ただし例外があり、イベントレベルレポートと集計可能レポートの障害の理由が同じである場合、詳細レポートは 1 つしか生成されません(例: trigger-no-matching-source

次の記事

パート 3: デバッグのクックブック

公開日 記事を改善する

This site uses cookies to deliver and enhance the quality of its services and to analyze traffic. If you agree, cookies are also used to serve advertising and to personalize the content and advertisements that you see. Learn more about our use of cookies.