Protected Audience API のオークション レポート

Protected Audience API のオークション データと結果を測定する

この記事では、Protected Audience API のオークション データをサーバーに報告する際に利用できるさまざまなメカニズムと、移行中に代替ソリューションの準備が整うまで現時点で使用できる移行メカニズムの概要を説明します。

広告オークションから収集した重要な指標のレポートを作成するため、Protected Audience API は次のものと連携します。

  • プライベート アグリゲーション: オークションのシグナルと結果を収集して概要レポートを生成します。
  • Ads Reporting API: フェンス付きフレームiframe(フレーム内のチャネルで Protected Audience API ワークレットと通信するため)用。この API を使用すると、イベント単位のデータをオークション シグナルに関連付けることができます。Ads Reporting API のイベントレベル レポートは、よりプライバシーに配慮したレポート メカニズムが設計されるまでの移行メカニズムです。
  • アトリビューション レポート: コンバージョン データをオークション シグナルに関連付けることができます。
  • 共有ストレージ。クロスオリジン ストレージにオークション シグナルを書き込み、後でプライベート アグリゲーションを使用してそのデータを報告できます。

Protected Audience API レポートの概要

Protected Audience の全体的なワークフロー
Protected Audience の全体的なワークフロー

Protected Audience API オークション フローからのデータがサーバーにレポートされる主な期間は 3 つあります。パブリッシャー サイトからオークションが実行されたオークション時間、パブリッシャー サイトのフェンス付きフレームまたは iframe に広告がレンダリングされるレンダリング時間、オークションに起因する可能性のあるアクションが別のサイトでユーザーによって行われた場合です。

オークション中は、レポート ワークレットを使用してオークション データを報告できます。レンダリング中に、iframe またはフェンス付きフレームからエンゲージメント データをレポートできます。コンバージョンの期間中に、Attribution Reporting API を使用してリンク先ページからアトリビューション データを報告できます。

報告する地域

オークションでは、購入者は generateBid() ワークレットと reportWin() ワークレットで利用可能なシグナルを報告でき、販売者は scoreAd()reportResult() で利用可能なシグナルを報告できます。オークション以外では、購入者と販売者は、広告をレンダリングしたフレームと、コンバージョンが発生したサイトのデータを報告できます。

期間 目的地 ロケーション データがあります Reporting API を利用可能
オークション バイヤー generateBid() シグナル、オークション結果、オークションのパフォーマンス Private Aggregation API
reportWin() Private Aggregation API
Ads Reporting API
販売者 scoreAd() Private Aggregation API
reportResult() Private Aggregation API
Ads Reporting API
レンダリング 購入者 / 販売者 パブリッシャー サイトのフレーム 広告フレーム内のイベントレベルのデータ Private Aggregation API
Ads Reporting API
コンバージョン 購入者 / 販売者 コンバージョン サイト コンバージョン サイトのコンバージョンおよびイベントレベルのデータ Attribution Reporting API
Private Aggregation API
Ads Reporting API

購入者と販売者は、表示されている各期間に、オークション シグナル、イベント単位のデータ、コンバージョン データなどのデータに関するレポートに使用できるさまざまな Reporting API にアクセスできます。

Protected Audience API オークションで利用可能なデータ

オークション中に Protected Audience API ワークレットから報告できるデータは次のとおりです。

シグナル

シグナルは、オークションのコンテキスト データ、ユーザーデータ、リアルタイム データ、ブラウザデータで、購入者と販売者がワークレット内で使用して、入札の生成、広告のスコア付け、オークションの結果の報告を行います。

シグナル 説明 場所を設定 ユーザー 利用可能な国と地域
auctionSignals オークションが開催されている地域のデータを利用できる。このデータには、ページ コンテンツ情報、ファーストパーティ ユーザーデータなどが含まれます。 オークション設定でパブリッシャー サイトから販売者が設定します。 購入者
販売者
generateBid score 広告レポート Win reportResult
directFromSellerSignals auctionSignalsperBuyerSignalssellerSignals のデータは同じですが、シグナルは指定された販売者からのものであることが保証されます。 販売者からの HTTP レスポンス ヘッダーを介して設定 購入者
販売者
generateBid score 広告レポート Win reportResult
browserSignals ブラウザから提供される各種データ(topWindowHostnameinterestGroupOwnerrenderUrladComponentsbiddingDurationMsecIGJoinCountIGRecencymodelingSignals)。 ブラウザによって設定されます。 購入者
販売者
generateBid score 広告レポート Win reportResult
sellerSignals 広告のスコアリングのために販売者に提供されるシグナル。 オークション設定でパブリッシャー サイトから販売者が設定します。 販売者 スコア広告
レポート Win
reportResult
trustedScoringSignals 広告のスコアリングのために販売者に提供されるリアルタイムのシグナル。 この URL は、販売者がオークション設定でパブリッシャー サイトで設定します。 販売者 ScoreAd reportResult
perBuyerSignals 特定の購入者に提供されるオークションのコンテキスト データ。販売者は、オークションの開始前に購入者向けの金額を取得できます。これは、広告配信の機会に関する購入者の知識です。 オークション設定でパブリッシャー サイトから販売者が設定します。 バイヤー generateBid score 広告レポート Win reportResult
trustedBiddingSignals 広告入札のために購入者に提供されるリアルタイムのシグナル。 この URL は、インタレスト グループの設定時に、広告主のサイトで購入者が設定します。 バイヤー generateBid
userBiddingSignals 購入者から提供されたユーザーデータ。 インタレスト グループの設定時に、広告主のサイトで購入者が設定します。 バイヤー generateBid

オークション構成オブジェクトは、ワークレットでシグナルとして利用できるようにするために提供されるデータの主要なソースです。パブリッシャーと販売者は、オークション設定でコンテキスト データとファーストパーティ データを提供できます。これらのシグナルは、購入者のインタレスト グループ データ、広告レンダリング フレームのイベントレベルのデータ、クリックスルー ページのアトリビューション データによって拡充できます。レポートされたデータは、購入者/販売者向けレポート、請求、予算編成、ML モデルのトレーニングなどに利用できます。

その他の利用可能なデータ

  • 落札価格や入札拒否の理由など、オークションの落札と損失に関するデータに関連する結果データ
  • パフォーマンス データ。これには、入札ワークレットを取得して実行するのにかかった時間など、レイテンシ情報が含まれます。

Protected Audience API オークション以外で利用可能なデータ

Protected Audience API のオークション以外では、データをレポートできる期間は 2 つあります。

レンダリング中に広告がパブリッシャー サイトでレンダリングされると、iframe またはフェンス付きフレーム内のイベントレベルのデータが Protected Audience API のオークション データと関連付けられ、サーバーに報告されます。イベントレベルのデータの例には、広告のインプレッション、クリックスルー、ホバーなど、フレーム内で発生したイベントが含まれます。

コンバージョン期間中にユーザーがクリックスルー ページでなんらかのアクション(オークションに結び付けられた)を行うと、コンバージョン ページのイベントレベルのデータが Protected Audience API のオークション データと関連付けられ、サーバーにレポートされます。

イベントレベル レポート

イベントレベル レポートでは、1 つ以上のイベントの詳細情報を確認できます。イベントには、オークションの落札、広告のインプレッション、コンバージョンなどがあります。遅くとも 2026 年までは、イベントレベルのオークション落札レポートはそのままご利用いただけます。Protected Audience 広告の表示にフェンス付きフレームを使用する必要はなく、ネットワーク アクセスが制約されていない iframe はイベントレベルのレポートに使用できます。また、フェンス付きフレームと iframe で Ads Reporting API を使用して、オークション データとコンバージョン データをフレームのイベントレベルのデータに関連付けることができます。これは、システムを Protected Audience に移行する間、少なくとも 2026 年までは既存のレポート インフラストラクチャを使用し続けることができるため、エコシステムの移行が容易になるように設計されています。

sendReportTo() によるイベントレベルのオークション落札レポート

Protected Audience オークション内でイベントレベルのデータを報告するためのメカニズムは、オークションで落札した場合の sendReportTo() function です。この関数は、購入者と販売者のレポート ワークレットで使用できます。広告レンダリングが開始されると、ブラウザは指定された URL 文字列に GET リクエストを行います。ワークレットで使用可能なシグナルを URL のクエリ パラメータとしてエンコードできます。

たとえば、購入者は請求処理のために reportWin() ワークレットから落札額を報告できます。

// Buyer reporting worklet
function reportWin(auctionSignals, perBuyerSignals, sellerSignals, browserSignals, directFromSellerSignals) {
  sendReportTo(`https://buyer-reporting-server.example/reporting?bid=${browserSignals.bid}`);
}

sendReportTo() 関数を使用して、reportResult() から呼び出された場合は販売者の落札レポートを生成し、reportWin() から呼び出された場合は購入者の落札レポートを生成できます。sendReportTo() 関数は 2026 年まで利用できますが、

エンゲージメント レポート

エンゲージメント レポートには、広告をレンダリングした Protected Audience API オークションのシグナルに関連付けられたインプレッション データやクリックデータなど、広告クリエイティブのイベントレベルのデータが含まれます。広告はオークション終了後に表示されるため、広告を表示するフレーム内ではオークション シグナルを利用できません。異なる期間のこれらのデータを関連付けられるように、Google ではエンゲージメント レポートを生成するための 2 つの移行メカニズムを提供しています。

上記の sendReportTo() 関数を使用すると、オークション データを iframe のイベントレベルのデータに関連付けることができますが、埋め込みフレームとフェンス フレームの間の通信が制限されてエンベダーから一意の ID を渡すことができないため、フェンス付きフレームでは機能しません。オークション データをフェンス付きフレーム広告のイベントレベル データに関連付けるには、Ads Reporting API を使用できます。

フェンス付きフレームと iframe 用の Ads Reporting API

フェンス付きフレームと iframe 用の Ads Reporting API は、広告フレームのユーザー イベントレベルのデータを Protected Audience オークション内のシグナルに関連付けるメカニズムを提供します。

Protected Audience API レポート ワークレットでは、registerAdBeacon() 関数で広告ビーコンを登録し、シグナルをクエリ パラメータとして追加したレポート URL を渡すことができます。また、レポート URL に関連付けるカスタム イベントも指定します。その後、広告がフェンス付きフレームにレンダリングされた時点で、window.fence.reportEvent() 関数を呼び出してカスタム イベントをトリガーできます。フェンス付きフレーム内で利用可能なデータをペイロードとして追加できます。

registerAdBeacon() 関数はレポート関数でのみ使用でき、購入者の入札ロジックと販売者のスコアリング ロジックでは使用できません。

次の例では、キャンペーン ID がクリック座標とともにイベントレベルのペイロードに関連付けられています。

// Protected Audience API buyer win reporting worklet
function reportWin(auctionSignals) {
  const { campaignId } = auctionSignals

  registerAdBeacon({
    click: `https://buyer-server.example/report/click?campaignId=${campaignId}`
  })
}
// Protected Audience API seller reporting worklet
function reportResult(auctionConfig) {
  const { campaignId } = auctionConfig.auctionSignals;

  registerAdBeacon({
    click: `https://seller-server.example/report/click?campaignId=${campaignId}`
  })
}
// Ad frame
window.fence.reportEvent({
  eventType: 'click',
  eventData: JSON.stringify({'clickX': '123', 'clickY': '456'}),
  destination:['buyer', 'seller']
});

Fenced Frames Ads Reporting API は、落札レポートと同じ理由により、遅くとも 2026 年まで利用可能です。

詳しくは、説明をご覧ください。

制約のないネットワーク アクセス

フェンス付きフレームでは、iframe と同じ方法でネットワーク リソースを読み込むことができ、フェンス付きフレーム内のイベントレベルのデータをサーバーに送信できます。後でサーバーサイドでイベントレベル レポートを生成するには、フェンス付きフレームのイベントレベル データを、上記のオークション イベントレベルのレポート メカニズムで説明した sendReportTo() で送信されたオークション データに関連付けます。

サードパーティ Cookie のサポートが終了した後、ネットワーク アクセスはある程度制限されます。

現在 Protected Audience API に存在するイベントレベルのレポート メカニズムは移行メカニズムであり、既存のユースケースをより適切にサポートするための代替ソリューションが設計されています。

アトリビューション レポート

アトリビューション レポートを使用すると、ウェブサイトでのコンバージョンを Protected Audience API オークションで選択された広告に関連付けることができます。たとえば、お客様が配信した商品広告をユーザーがクリックし、広告主のサイトにリダイレクトされ、そこで商品を購入したとします。この場合、表示された広告に購入を関連付けることにします。Attribution Reporting API を Protected Audience API と統合して、パブリッシャー サイトのオークション データと広告主サイトのコンバージョン データを組み合わせます。

Google はより永続的なソリューションを設計していますが、Attribution Reporting でイベントレベルの集計可能レポートを生成するための移行メカニズムとして、フェンス付きフレームに Ads Reporting API を使用できます。これらのレポートはコンバージョンを測定するためのもので、オークションや広告フレームから生成されるイベントレベルおよび集計可能なエンゲージメント レポートとは別のものです。準備ができ次第、より永続的な解決策についての解説を公開する予定です。

移行メカニズム

広告ビーコンを登録する際にキーワード reserved.top_navigation を使用すると、ビーコンの Attribution-Reporting-Eligible ヘッダーが自動的に追加され、アトリビューション ソースとして登録できるようになります。

registerAdBeacon({
 'reserved.top_navigation': 'https://adtech.example/click?buyer_event_id=123',
});

登録したビーコンにイベントレベルのデータを追加するには、フェンス付きフレームからイベント ペイロードを指定して setReportEventDataForAutomaticBeacons() を呼び出します。

window.fence.setReportEventDataForAutomaticBeacons({
  eventType: 'reserved.top_navigation',
  eventData: 'data from the frame',
  destination:['seller', 'buyer']
})

詳しくは、Ads Reporting API の説明の「Attribution Reporting」セクションをご覧ください。

エンゲージメントとコンバージョンのレポートの例

この例では、オークション、広告フレーム、コンバージョン サイトのデータを関連付けたいと考えている購入者の視点から見ていきます。

このワークフローでは、購入者は販売者と連携して一意の ID をオークションに送信します。オークション中に、購入者はこの一意の ID とオークション データを送信します。レンダリング時とコンバージョン時に、フェンス付きフレームまたは iframe からのデータも、同じ一意の ID で送信されます。後で一意の ID を使用して、これらのレポートを関連付けることができます。

ワークフロー:

  1. オークションを開始する前に、購入者はプログラマティックリアルタイム ビッダー(RTB)の入札レスポンスの一環として一意の ID を販売者に送信します。ID は auctionId のような変数として設定できます。ID は auctionConfigperBuyerSignals として渡され、購入者のワークレットで使用できるようになります。
  2. オークションの期間中、購入者は、広告のレンダリング時およびコンバージョン時にトリガーされる広告ビーコンを登録できます(registerAdBeacon())。
    1. オークション シグナルを広告フレーム イベントに関連付けるには、ビーコン URL のクエリ パラメータとして auctionId を設定します。
    2. コンバージョン イベントにオークション シグナルを関連付けるには、ビーコン URL に auctionId を設定します。
  3. 広告の表示中は、オークション時に登録したビーコンをトリガーしたり、イベントレベルのデータを使って強化したりできます。
    1. reportEvent() でフレーム イベントをトリガーし、イベントレベルのデータを渡します。
    2. setReportEventDataForAutomaticBeacons() を使用して、アトリビューション ビーコンにイベントレベルのペイロードを追加する
    3. Attribution-Reporting-Register-Source ヘッダーで広告ビーコン リクエストに応答して、Attribution Reporting API に広告を登録します。
  4. コンバージョンの期間中に、登録したソースをオークション時にトリガーできます。

上記の手順を踏むと、オークション レポート、エンゲージメント レポート、コンバージョン レポートが作成され、これらはすべて一意の 1 つのキーで結び付けられ、互いに関連付けられるようになります。

アトリビューション データにアクセスする必要がある場合も同様のワークフローが適用されます。また、一意の ID を使用して registerAdBeacon() で送信することもできます。フレームからの reportEvent() 呼び出しには、購入者と販売者の両方にレポートを送信するために使用できる宛先プロパティが含まれています。トリガーをソースに関連付けるには、SSP がランディング ページにも含まれている必要があります。

Protected Audience データの集計

Private Aggregation API は、Protected Audience データをレポートして概要レポートを生成するために使用されるメカニズムです。サマリー レポートとは、バケットで収集されたデータのノイズの多い集計レポートです。バケットは集計キーで表され、一部の情報をこのキーにエンコードできます。

たとえば、広告インプレッション イベントを複数のバケットにカウントでき、各バケットが異なる広告キャンペーンを表します。概要レポートは、個々のイベントに関する情報が表示されないという点で、イベントレベル レポートとは異なります。イベントレベル レポートでは、ユーザー A、ユーザー B、ユーザー C がキャンペーン 123 を表示したことがわかります。概要レポートでは、キャンペーン 123 が表示されたユーザーの数を測定し、ユーザーのプライバシーを保護するためにノイズを追加できます。

API の詳細については、プライベート集計の記事をご覧ください。

オークション シグナルの集約

プライベート アグリゲーションを使用して、ワークレット内で利用可能なシグナルをサーバーに集約できます。シグナルの集約には、購入者の入札ワークレット、販売者スコアリング ワークレット、購入者/販売者レポート ワークレットで利用可能な privateAggregation.contributeToHistogram() メソッドを使用できます。

この例では、落札単価がインタレスト グループのオーナー バケットに集計されます。

function convertBuyerToBucket(igOwner) {}
function convertWinningBidToValue(winningBid) {}

function reportResult(auctionConfig, browserSignals) {
  privateAggregation.contributeToHistogram({
    bucket: convertBuyerToBucket(browserSignals.interestGroupOwner),
    value: convertWinningBidToValue(browserSignals.bid)
  });
} 

これは、集計するシグナルがイベントレベルのデータに関連付けられていない場合や、オークション以外のイベントによってトリガーされない場合に使用する一般的なメカニズムです。オークション シグナルのレポートについて詳しくは、説明をご覧ください。

イベントデータを使用してオークション シグナルを集約する

広告フレームで発生したイベントに関する限定的な情報を使って、オークション シグナルを集約できます。たとえば、あるキャンペーンの広告が獲得したクリック数を集計するには、そのキャンペーンとクリック イベントを表すバケットを作成します。広告フレームからは、発生したイベントを指定できますが、イベントレベルのペイロードを添付することはできません。

オークション シグナルをイベント別に集計するには、privateAggregation.contributeToHistogramOnEvent(eventType, contribution) を使用します。これは、イベントの種類とそのイベントがトリガーされたときに報告される貢献度を指定する文字列を受け取ります。カスタム イベント タイプでメソッドを呼び出し、広告フレームから window.fence.reportEvent(eventType) を呼び出して、レポートの送信をトリガーできます。

たとえば、キャンペーンの広告が獲得したクリック数を測定する場合、

// Protected Audience API worklet
function getClickReportBucketForCampaign(campaignId) {
  // return a bucket for the campaign ID and the click event
}

function generateBid(interestGroup) {
  privateAggregation.contributeToHistogramOnEvent('click', {
    bucket: getClickReportBucketForCampaign(interestGroup.ads.metadata.campaignId), 
    value: 1
  });
}

入札生成関数では、キャンペーン ID とクリック イベントの組み合わせとしてバケットを定義し、イベントがトリガーされるたびにそのバケットの値を 1 ずつ増やすことができます。

// Ad frame
window.fence.reportEvent('click');

その後、広告フレームから reportEvent(eventType) を呼び出してレポートの送信をトリガーできます。

フレームから Private Aggregation コントリビューションをトリガーする方法については、説明をご覧ください。

オークションの結果とパフォーマンスのレポート

また、予約済みのイベントタイプのキーワード(reserved.win, reserved.lossreserved.always)を渡すと、contributeToHistogramOnEvent(eventType, contribution) を使用してオークションの落札または不成約のイベントでトリガーされたオークションの結果を集計することもできます。

プライベート アグリゲーションには、負担のバケットと値を計算できる基本値のリストが表示されます。オークション結果の基本値は、落札した広告の入札単価、2 番目に高い入札額、入札がオークションで拒否された理由です。

落札単価など、なんらかの基本値を提供すると、その値にどの程度の増減するかを設定し、最終的な値をレポートできます。たとえば、落札単価 500 円を基本値として提示した場合、入札単価 200 円からオークションに負けた実際の単価 300 円を算出できます。

オークション結果レポート

オークションで競り負けた例で、入札単価とオークションの清算価格がどの程度異なっているかを確認する場合を見てみましょう。

落札した入札価格から入札価格を差し引くと、オークションで競り負けた金額を確認できます。手順は次のとおりです。

function generateBid() {
  const bid = calculateBidAmount();

  privateAggregation.contributeToHistogramOnEvent('reserved.loss', {
    bucket: getBucketForCampaign(interestGroup.ads.metadata.campaignId),
    value: {
      baseValue: 'winning-bid',
      scale: 1 // Scale the value to minimize noise-to-signal ratio 
      offset: -bid, // Numbers added to browser value after scaling 
    }
  });
}

レポートが送信されると、実際にレポートされる値は、スケーリングされた baseValue から offset の値をシフトしたものになります。詳しくは、説明をご覧ください。

パフォーマンス レポートの作成

購入者と販売者は、スクリプトの実行にかかった時間と、信頼できるシグナルの取得にかかった時間を報告できます。販売者は、許可を得たうえで、各購入者の入札生成時刻と信頼できる入札シグナル時刻を収集できます。

詳しくは、説明をご覧ください。

オークション シグナルを共有ストレージに保存する

共有ストレージは、パーティション分割されていないクロスオリジン ストレージです。自由に書き込みを行うことができますが、保存された値の読み取りと処理はゲートによって保護されます。Shared Storage API で使用できるゲートの一つに Private Aggregation があります。共有ストレージ内の値はワークレット内からのみ読み取ることができ、ワークレットからプライベート集計を使用してそれらの値をレポートできます。

Protected Audience API の入札、スコアリング、レポートのワークレットから共有ストレージに書き込むこともできます。後で、プライベート アグリゲーションを使用して、共有ストレージ内のこれらの値をサーバーに報告できます。保存された値は、URL の選択オペレーションでも使用できます。

Protected Audience API ワークレットから、任意のキーと値を共有ストレージに書き込むことができます。

// Protected Audience API worklet
function generateBid() {
  sharedStorage.set('test-bucket', 123);
}

後で共有ストレージ ワークレットを読み込み、その値を読み取り、プライベート集計で送信できます。

// Shared Storage worklet
class SendReachReport{
  async run() {
    const testBucket = await this.sharedStorage.get('test-bucket');

    privateAggregation.contributeToHistogram({
      bucket: testBucket,
      value: 1
    });
  }
}

register('send-report', SendReachReport);

共有ストレージについて詳しくは、Protected Audience API レポートに関するデベロッパー ガイドの共有ストレージのセクション、説明ライブデモGitHub のデモコードをご覧ください。

次のステップ

誰もが利用できる API を構築するために、Google は皆様との対話を通じてしたいと考えています。

API についてディスカッションする

他のプライバシー サンドボックス API と同様に、この API はドキュメント化され、一般公開されているです。

API を試す

Protected Audience API に関する会話をテストして参加できます。