プライバシーサンドボックスのAttribution Reporting API
はじめまして。エンジニアの平尾です。
プライバシーサンドボックスとは
プライバシーサンドボックスとは、Googleが提案するサードパーティ Cookie やその他の追跡の仕組みを使用せずにクロスサイトに関わるユースケースを満たすための一連の提案のことです。まだ、実用化はされてません。
Attribution Reporting API
Attribution Reporting APIはプライバシーサンドボックスの提案の一つです。
現在、多くの広告の計測にサードパーティーCookieが使われてます。ただ、サードパーティーCookieはユーザーのプライバシーを妨げる可能性があるため、ほとんどのブラウザでサードパーティーCookieの利用の制限がされています。
Attribution Reporting APIはサードパーティーCookieを使用することなく、広告の計測が可能になっているみたいです。
イベントレベルレポートと集計レポート
Attribution Reporting APIにはイベントレベルレポートと集計レポートがあります。イベントレベルレポートは個々の広告のクリックや表示を成果と関連付けます。集計レポートはイベントレベルレポートより詳しいデータを取得できます。例えば購入額やカートの内容などです。ただし個々のイベントごとの確認はできないので、合算値でのレポートとなります。
今回はイベントレベルレポートについて実際に説明していきます。
Googleでデモページを用意しているようなので実際にさわってみましょう。
デモをつかってテストする際には、最新のChrome Beta 版を使う必要があるので準備しましょう。
デモにはメディア(Publisher site)、広告主(Advertiser site)、計測をアドテクサーバーが用意されてます。
また、chrome://attribution-internals/ で後述のアトリビューションソースやトリガーイベントレベルレポートの確認が可能です。
アトリビューションソースイベントの送信
広告のクリックやビュースルーはメディアで行います。
Attribution Reporting APIはクリックとビュースルーに対応しており、デモのメディアページにはそれぞれのリンクや画像(アトリビューションソースイベント)が用意されてます。
アトリビューションソースイベントは2種類あります。
いづれもattributionsrc属性にアトリビューションソースイベントの送信先を指定します。デモではアドテクサーバーが指定されてます。
attributionsrc属性はAttribution Reporting APIの測定のために用意された属性です。
navigation
アンカーリンクによるクリック
<a href="https://arapi-advertiser.web.app"
src="/blue-shoes.png" alt="blue shoes"
attributionsrc="https://arapi-adtech.web.app/register-source" target="_blank">Click me</a>
event
<img>や<script>タグ
<img width="180" src="/blue-shoes.png" alt="blue shoes"
attributionsrc="https://arapi-adtech.web.app/register-source">
アトリビューションソースイベントにはAttribution-Reporting-Eligibleというヘッダーフィールドが含まれたリクエストがおくられます。また、下記のようにヘッダーフィールドを手動で設定して送ることも可能です。
const headers = {
'Attribution-Reporting-Eligible': 'event-source'
};
// Optionally set keepalive to ensure the request outlives the page.
window.fetch("https://arapi-adtech.web.app/register-source",
{ headers, keepalive: true });
また、レスポンスヘッダーにattribution-reporting-register-sourceで下記のjsonでおくります。
{
"destination":"https://arapi-advertiser.web.app",
"source_event_id":"860324796298273",
"expiry":"604800",
"priority":"1"
}
このレスポンスがブラウザに受信されると、アトリビューションソースイベントがブラウザのストレージに保存されます。
次に広告主ページに遷移してみます。
アトリビューションのトリガー
成果発生時のテストは広告主サイトで行います。
デモページでは各種アトリビューションのトリガー(Visit product page: shoesやAdd product to cartなど)が用意されてます。attribution-reporting-register-sourceのヘッダーで設定したdestinationと同じeTLD+1のサイトでないとトリガーしないので注意しましょう(https://arapi-advertiser.web.appではなく、https://hoge-advertiser.web.appなどはダメ)。imgタグかjsでアトリビューションをトリガーします。
img
<img class="pixel" height="12" width="12"
attributionsrc="https://arapi-adtech.web.app/conversion?conversion-type=visit-product-page&product-category=category_1&prio-checkout=false&dedup=false">
js
const headers = {
'Attribution-Reporting-Eligible': 'trigger'
};
// Optionally set keepalive to ensure the request outlives the page.
window.fetch("https://arapi-adtech.web.app/conversion?conversion-type=visit-product-page&product-category=category_1&prio-checkout=false&dedup=false",
{ headers, keepalive: true });
トリガーに関しても、アトリビューションソースイベントと同様にレスポンスヘッダーでjsonを返します。ヘッダーフィールドはAttribution-Reporting-Register-Triggerで下記のjsonをおくります。
{
"event_trigger_data":[{
"trigger_data":"3",
"priority": "1",
"deduplication_key": "346066127110453"
}]
}
このレスポンスをブラウザが受け取ると、レポートデータのスケジューリングを行います(リアルタイムでレポーティングはされません)。
レポートデータの送信
下記のようなリクエストでレポートデータが送信されます。
https://arapi-adtech.web.app/.well-known/attribution-reporting/report-event-attribution
{
"attribution_destination": "https://arapi-advertiser.web.app",
"randomized_trigger_rate": 0.0024,
"report_id": "7b5a3a38-951a-47fe-a875-eaf908708cd6",
"source_event_id": "346066127110455",
"source_type": "navigation",
"trigger_data": "4",
}
このデータを元にアトリビューションイベントソースとトリガーを照合して計測が可能となります。
まだ実用化は未定ですが、サードパーティーCookieに代わるプライバシーにも考慮した計測方法となるのかどうか今後が楽しみです。
参考リンク
Google Chromeのアトリビューションレポート紹介
Demo: Attribution Reporting API
Attribution Reporting with event-level reportsの仕様説明