Protected Audience API のオークション データと結果を測定する
この記事では、Protected Audience API オークション データをサーバーに報告するために利用できるさまざまなメカニズムの概要と、代替ソリューションが準備されるまでの移行期間中に利用できる移行メカニズムについて説明します。
広告オークションから収集した重要な指標をレポートするには、Protected Audience API を以下と連携させます。
- 非公開集計: オークション シグナルと結果を収集して概要レポートを生成します。
- Fenced Frames と iframes 用の Ads Reporting API。これは、Protected Audience API ワークレットと通信するためのフレーム内のチャネルです。この API を使用すると、イベントレベルのデータをオークション シグナルに関連付けることができます。Ads Reporting API のイベントレベル レポートは、よりプライバシーに配慮したレポート メカニズムが設計されるまでの移行メカニズムです。
- アトリビューション レポート: コンバージョン データをオークション シグナルに関連付けることができます。
- 共有ストレージ: オークション シグナルをクロスオリジン ストレージに書き込み、後で Private Aggregation を使用してそのデータをレポートできます。
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 ワークレットから報告できるデータは次のとおりです。
シグナル
シグナルとは、オークションのコンテキスト データ、ユーザーデータ、リアルタイム データ、ブラウザ データのことです。ワークレット内の購入者と販売者は、これらのシグナルを使用して入札単価の生成、広告のスコアリング、オークションの結果のレポート作成を行います。
Signal | 説明 | 場所を設定する | ユーザー | 利用可能な国と地域 |
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)
を呼び出して、レポートの送信をトリガーできます。
フレームから Private Aggregation の投稿をトリガーする方法について詳しくは、説明をご覧ください。
オークションの結果とパフォーマンスのレポート
また、オークションの落札または落札失敗イベントによってトリガーされたオークション結果を、予約済みイベントタイプのキーワード(reserved.win, reserved.loss
、reserved.always
)を渡して contributeToHistogramOnEvent(eventType, contribution)
で集計することもできます。
非公開集計では、ベース値のリストが提供されます。このリストから、貢献度のバケットと値を計算できます。オークションの結果に使用できるベース値は、落札した広告の入札単価、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);
}
後で、Shared Storage ワークレットを読み込み、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 に関する会話をテストして参加できます。