Protected Audience API のオークション データと結果を測定する
この記事では、Protected Audience API オークション データをサーバーに報告するために利用できるさまざまなメカニズムの概要と、代替ソリューションが準備されるまでの移行期間中に利用できる移行メカニズムについて説明します。
広告オークションから収集した重要な指標をレポートするには、Protected Audience API を以下と連携させます。
- 非公開集計: オークション シグナルと結果を収集して概要レポートを生成します。
- Fenced Frames と iframes 用の Ads Reporting API。これは、Protected Audience API ワークレットと通信するためのフレーム内のチャネルです。この API を使用すると、イベントレベルのデータをオークション シグナルに関連付けることができます。Ads Reporting API のイベントレベル レポートは、よりプライバシーに配慮したレポート メカニズムが設計されるまでの移行メカニズムです。
- アトリビューション レポート: コンバージョン データをオークション シグナルに関連付けることができます。
- Shared Storage: オークション シグナルをクロスオリジン ストレージに書き込み、後でプライベート集計を使用してそのデータをレポートできます。
Protected Audience API レポートの概要

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 scoreAd reportWin reportResult |
directFromSellerSignals | auctionSignals 、perBuyerSignals 、sellerSignals と同じデータですが、指定された販売者から送信されたシグナルであることが保証されます。 |
販売者からの HTTP レスポンス ヘッダーで設定 | 購入者 販売者 |
generateBid scoreAd reportWin reportResult |
browserSignals | ブラウザから提供されるさまざまなデータ(topWindowHostname 、interestGroupOwner 、renderUrl 、adComponents 、biddingDurationMsec 、IGJoinCount 、IGRecency 、modelingSignals )。 |
ブラウザによって設定されます。 | 購入者 販売者 |
generateBid scoreAd reportWin reportResult |
sellerSignals | 広告のスコアリング用に販売者に提供されるシグナル。 | パブリッシャーのサイトのオークションで販売者が設定します。 | 販売者 | scoreAd reportWin reportResult |
trustedScoringSignals | 広告のスコアリング用に販売者に提供されるリアルタイム シグナル。 | この URL は、オークション設定でパブリッシャー サイトから販売者が設定します。 | 販売者 | scoreAd reportResult |
perBuyerSignals | 特定の購入者に提供されるオークションのコンテキスト データ。販売者は、オークションの開始前に購入者の値を取得できます。これは、購入者が広告配信の機会について知っていることです。 | パブリッシャーのサイトのオークションで販売者が設定します。 | 購入者 | generateBid scoreAd reportWin 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 を使用できます。また、Ads Reporting API は、フェンスされたフレームと iframe で使用できるため、オークション データとコンバージョン データをフレームのイベントレベルのデータに関連付けることができます。これは、システムを 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 オークションのシグナルに関連付けられた、広告クリエイティブのイベントレベル データ(インプレッション データやクリック データなど)が含まれます。広告はオークションの終了後にレンダリングされるため、広告をレンダリングするフレーム内ではオークション シグナルを使用できません。期間の異なるデータを関連付けるには、エンゲージメント レポートを生成するための 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()
とともに送信されたオークションデータに関連付けることで、後でサーバーサイドでイベントレベル レポートを生成できます。
今後、ネットワーク アクセスが制限される予定です。
アトリビューション レポート
アトリビューション レポートを使用すると、ウェブサイトでのコンバージョンを、Protected Audience API オークションから選択された広告に関連付けることができます。たとえば、ユーザーが配信した商品広告をクリックし、広告主のサイトにリダイレクトされて購入した場合、その購入を表示された広告に関連付けたいとします。Attribution Reporting API は Protected Audience API と統合され、パブリッシャー サイトのオークション データと広告主サイトのコンバージョン データを組み合わせることができます。
より永続的なソリューションを設計するまでの間、アトリビューション レポートでイベントレベルの集計可能レポートを生成するための移行メカニズムとして、フェンスド フレーム用の 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 の説明の「アトリビューション レポート」セクションをご覧ください。
エンゲージメントとコンバージョンのレポートの例
この例では、オークション、広告枠、コンバージョン サイトのデータの関連付けに関心を持つ購入者の視点から説明します。
このワークフローでは、購入者は販売者と連携して、オークションに一意の ID を送信します。オークション中に、購入者はオークション データとともにこの一意の ID を送信します。レンダリング時とコンバージョン発生時に、フェンスされたフレームまたは iframe のデータも同じ一意の ID で送信されます。後で、一意の ID を使用してこれらのレポートを関連付けることができます。
ワークフロー:
- オークションの開始前に、購入者はプログラマティック リアルタイム ビッダー(RTB)入札レスポンスの一環として、一意の ID を販売者に送信します。ID は
auctionId
などの変数として設定できます。ID はauctionConfig
でperBuyerSignals
として渡され、購入者のワークレットで使用できるようになります。 - オークション中に、広告のレンダリング時とコンバージョン時(
registerAdBeacon()
)にトリガーされる広告ビーコンを登録できます。- 広告フレーム イベントのオークション シグナルを関連付けるには、ビーコン URL のクエリ パラメータとして
auctionId
を設定します。 - コンバージョン イベントのオークション シグナルを関連付けるには、ビーコン URL に
auctionId
を設定します。
- 広告フレーム イベントのオークション シグナルを関連付けるには、ビーコン URL のクエリ パラメータとして
- 広告のレンダリング時に、オークション時に登録したビーコンをトリガーしたり、イベント単位のデータで拡張したりできます。
reportEvent()
でフレーム イベントをトリガーし、イベントレベルのデータを渡します。setReportEventDataForAutomaticBeacons()
を使用して、アトリビューション ビーコンにイベントレベルのペイロードを追加します。Attribution-Reporting-Register-Source
ヘッダーを使用して広告ビーコン リクエストに応答し、Attribution Reporting API に広告を登録します。
- コンバージョン発生時に、オークション発生時に登録したソースをトリガーできます。
上記のプロセスが完了すると、オークション レポート、エンゲージメント レポート、コンバージョン レポートが作成され、これらはすべて 1 つの一意のキーで関連付けられます。このキーは、レポート同士を関連付けるために使用できます。
アトリビューション データにアクセスする必要がある販売者にも同様のワークフローが適用されます。販売者は、registerAdBeacon()
とともに一意の ID を使用して送信することもできます。フレームから、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)
を使用します。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)
を呼び出して、レポートの送信をトリガーできます。
フレームからプライベート集計の投稿をトリガーする方法については、説明をご覧ください。
オークションの結果とパフォーマンスのレポート
また、オークションの落札または不落札イベントによってトリガーされたオークション結果を contributeToHistogramOnEvent(eventType, contribution)
で集計することもできます。この場合、予約済みイベントタイプのキーワード(reserved.win, reserved.loss
、reserved.always
)を渡します。
非公開集計では、ベース値のリストが提供されます。このリストから、貢献度のバケットと値を計算できます。オークションの結果に使用できるベース値は、落札した広告の入札単価、2 番目に高いスコアが得られた入札単価、オークションで入札が不承認となった理由です。
落札単価などのベース値が提供されている場合は、その値に加算または減算する金額を設定して、最終的な値を報告できます。たとえば、落札した入札額が 5 ドルでベース値として提供されている場合、入札額 2 ドルを差し引いて、オークションで落札できなかった金額の実際の値 3 ドルを計算できます。
オークション結果レポート
オークションで落札できなかった場合、入札単価がオークションの落札価格からどの程度離れていたかを確認する例を見てみましょう。
オークションで落札できなかった金額を確認するには、落札した入札単価から自分の入札単価を差し引きます。
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
}
});
}
レポートが送信されると、実際の報告値は、offset
値でシフトされたスケーリングされた baseValue
になります。詳しくは、説明をご覧ください。
パフォーマンス レポート
購入者と販売者は、スクリプトの実行時間と信頼できるシグナルの取得時間のレポートを作成できます。販売者は、各購入者の許可を得て、入札の生成時間と信頼できる入札シグナルの時間を収集できます。
詳しくは、説明をご覧ください。
共有ストレージへのオークション シグナルの保存
共有ストレージは、パーティショニングされていないクロスオリジン ストレージで、自由に書き込みできますが、保存された値の読み取りと処理時にゲートで保護されます。Shared Storage API で利用可能なゲートの 1 つが Private Aggregation です。共有ストレージ内の値は、ワークレット内からのみ読み取ることができ、ワークレットからプライベート集計を使用してこれらの値をレポートできます。
Protected Audience API の入札、スコアリング、レポート作成のワークレットから共有ストレージに書き込むこともできます。後で、プライベート集計を使用して、共有ストレージ内のこれらの値をサーバーに報告できます。保存した値を URL 選択オペレーションに使用することもできます。
Protected Audience API ワークレットから、任意のキーと値を共有ストレージに書き込むことができます。
// Protected Audience API worklet
function generateBid() {
sharedStorage.set('test-bucket', 123);
}
後で共有ストレージ ワークレットを読み込み、Private Aggregation を使用してその値を読み取って送信できます。
// 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 に関する会話をテストして参加できます。