Gunosy Tech Blog

Gunosy Tech Blogは株式会社Gunosyのエンジニアが知見を共有する技術ブログです。

サードパーティ Cookie を使わない広告効果計測 ~Privacy Sandbox の Attribution Reporting API について~

この記事は Gunosy Advent Calendar 2023 の 16 日目の記事です。 昨日の記事は吉岡さんの「iOSアプリのSWIFT_STRICT_CONCURRENCYをcompleteにした」でした。

プロダクト開発部 Ads チームの yamayu です。 最近は専ら蛮カラな街でインクを塗り塗りしています。 持ち武器のブラスター種に数年ぶりの強化が入り熱いです。

本題ですが、Gunosy Ads では、サードパーティ Cookie に依存しない広告効果の計測への対応を進めています。 その一環として、Google の Privacy Sandbox についても検証を行なっているので、その話について書ければと思います。

サードパーティ Cookie とは、ユーザーが訪問している Web サイトとは異なるドメインから発行される Cookie のことを指します。 近年はトラッキングに対するプライバシー保護の観点からサードパーティ Cookie の利用を制限する動きがあります。 すでに Safari や Firefox ではデフォルトでサードパーティ Cookie はブロックされており、Chrome でも 2024 年の中頃から段階的に廃止すると発表されています。

広告主やアドテク事業者の視点では、出稿中の広告が商品の購入や会員登録など(コンバージョン)にどの程度貢献しているかがわかることが重要です。 もっと具体的に言うと、広告をクリックしたユーザーが広告主のサイトのコンバージョンのページに到達したかどうかを計測できる必要があります。 その計測にサードパーティ Cookie を用いている場合、廃止により計測ができなくなる可能性があります。

サードパーティ Cookie を用いて広告のクリックとコンバージョンを関連付けるケースを下図に示します。

広告効果計測のフロー

ユーザーが閲覧しているメディアに広告が掲載されている状況を考えます。 ユーザーが広告をクリックすると、アドテク事業者を経由して広告主のランディングページにリダイレクトします。 このときアドテク事業者は adtech.com の Cookie として、ユーザーのブラウザに広告のクリックを識別するための ID(クリック ID)を保存します。

ユーザーが商品を購入(コンバージョン)すると、広告主の購入完了ページに設置してあるコンバージョンタグ(img タグ)が発火します。 このとき adtech.com の Cookie に保存しておいたクリック ID がアドテク事業者に送信されるので、アドテク事業者は広告のクリックとコンバージョンを紐付けることができます。 ここで参照する adtech.com の Cookie は advertiser.com 視点でサードパーティ Cookie となります。

このケースにおいては、サードパーティ Cookie が廃止されると広告のクリックとコンバージョンを紐づけ付けられなくなるため広告効果の計測が難しくなります。

前述の通り、サードパーティ Cookie が廃止されると広告効果の計測ができなくなるケースがあるので、サードパーティ Cookie を使わずに広告効果を計測する手段が必要になります。

ファーストパーティ Cookie やクエリパラメータなど用いた計測手法もありますが、ここでは Privacy Sandbox の Attribution Reporting API を用いた計測手法について説明します。 なお、Privacy Sandbox は現在開発中の技術であるため今後も仕様が変更される可能性があります。 この記事の説明は執筆時点(2023/12 時点)での内容になります。

Privacy Sandbox とは

Privacy Sandbox は Google が推進しているサードパーティ Cookie やその他のトラッキングメカニズムを使用せずにクロスサイトのユースケースを満たすための一連の提案です。 その提案の一つである Attribution Reporting API を使えば、サードパーティ Cookie を使わずに広告効果を計測することできます。

Attribution Reporting API とは

Attribution Reporting API を使用すると、ユーザーのブラウザ(Chrome)を利用して広告の表示やクリックと広告主サイトでのコンバージョンを関連付けることができます。 アドテク事業者が広告効果について取得できる内容として、イベントレベルレポートと要約レポートの 2 種類のレポートが提供されています。

イベントレベルレポートでは、広告の表示やクリックに対し、個々のコンバージョンの発生単位でレポートを取得できます。 但し、レポートに含めることのできる情報量 (購入金額など) は制限されており、また一定の確率でノイズを含みます。

要約レポートでは、一定期間内の広告の表示やクリックに対し、コンバージョンの発生数や購入金額などを取得できます。 イベントレポートよりも詳細な情報を含むことができますが、得られるのは集計値のみになります。

Attribution Reporting API による広告効果の計測

Attribution Reporting API を用いた広告効果の計測方法をイベントレベルレポートを例に説明します。 要約レポートについては今回の記事では割愛しますが、大まかにはイベントレベルレポートを拡張したような仕様になっています。 まず全体の流れを下図に示します。

Attribution Reporting API のフロー

基本的なフローは同じですが、サードパーティ Cookie を利用してクリック ID を送信する代わりに次の 3 つのステップが追加されています。

  • (1) アトリビューションソースの登録
  • (2) アトリビューショントリガーの登録
  • (3) レポート送信

アドテク事業者は、これらのリクエストに対応するエンドポイントを実装する必要があります。 以下でそれぞれみていきます。

(1) アトリビューションソースの登録

アトリビューションソースの登録では、コンバージョンに紐付ける対象となる広告の表示やクリックといったイベントをアトリビューションソースとして登録するようにブラウザに指示します。 広告のクリックをアトリビューションソースとして登録する場合は、次のように広告の a タグに attributionsrc 属性としてアトリビューションソース登録用のエンドポイントを指定します。

<a href="https://advertiser.com/landing_page" attributionsrc="https://adtech.com/attribution_source?my_ad_id=1234567890">

広告がクリックされると attributionsrc 属性に指定したエンドポイントにリクエストが飛びます。 このエンドポイントでは、アトリビューションソースの登録に必要な情報を HTTP ヘッダーに付与してレスポンスを返します。

# response
HTTP/1.1 200 OK
Attribution-Reporing-Register-Source: {"destination": "https://advertiser.com", "source_event_id": "1234567890", ...}

destination にはコンバージョンが発生するサイトのオリジンを指定します。 source_event_id は広告の表示やクリックなどのイベントを識別するための ID です。 前述のサードパーティ Cookie を利用するケースにおけるクリック ID に相当します。

(2) アトリビューショントリガーの登録

アトリビューショントリガーの登録では、コンバージョンの発生をアトリビューショントリガーとして登録するようにブラウザに指示します。 コンバージョン地点に img タグを設置して、attributionsrc 属性にアトリビューショントリガー登録用のエンドポイントを指定します。

<img src="https://adtech.com/conversion_pixel" attributionsrc="https://adtech.com/attribution_trigger?purchase=1">

コンバージョンが発生すると、attributionsrc 属性に指定したエンドポイントにリクエストが飛びます。 このエンドポイントでは、アトリビューショントリガーの登録に必要な情報を HTTP ヘッダーに付与してレスポンスを返します。

# response
HTTP/1.1 200 OK
Attribution-Reporing-Register-Trigger: {"event_trigger_data": [{"trigger_data": "1", ...}]}

trigger_data は、商品の購入や会員登録などのコンバージョンの種類を識別するための値です。 既定の bit 数の範囲内で自由に定義できるため、ここでは仮に商品の購入を表す番号として 1 を指定しています。

(3) レポートの送信

プライバシー保護のため、コンバージョンが発生しても直ちにアドテク事業者にレポートが送信されるわけではありません。 ランダムな遅延の後にレポートが送信されます。

# request
POST https://adtech.com/.well-known/attribution-reporting/report-event-attribution HTTP/1.1
Content-Type: application/json

{
  "source_event_id": "1234567890",
  "trigger_data": "1"
  ︙
}

レポートの内容には、アトリビューションソースの登録時にブラウザに保存された source_event_id とアトリビューショントリガーの登録時に保存された trigger_data を含みます。 これにより、アドテク事業者は広告のクリックとコンバージョンを紐付けることができました。

参考文献

まとめ

この記事では、サードパーティ Cookie の廃止による広告効果の計測への影響と、Privacy Sandbox の Attribution Reporting API を用いたサードパーティ Cookie に依存にしない広告効果の計測について書きました。

今後も Attribution Reporting API や Privacy Sandbox の他の API についての検証を進めていく予定です。 いずれ機会がありましたらまた記事にできればと思います。

次回は、k.oshiro さんの「社内勉強会での発表内容の紹介 〜MessagePackの仕様を読む〜」です。お楽しみに!