Ringkasan Private Aggregation API

Membuat laporan data gabungan menggunakan data dari Protected Audience dan data lintas situs dari Shared Storage.

Untuk menyediakan fitur penting yang diandalkan web, Private Aggregation API telah dibuat untuk menggabungkan dan melaporkan data lintas situs dengan cara yang menjaga privasi.

Status penerapan

Proposal Status
Mencegah laporan Private Aggregation API yang tidak valid dengan verifikasi laporan untuk Shared Storage
Penjelasan
Tersedia di Chrome
Ketersediaan mode debug Agregasi Pribadi bergantung pada kelayakan 3PC
Masalah GitHub
Tersedia di Chrome M119
Mengurangi keterlambatan laporan
Penjelasan
Tersedia di Chrome M119
Waktu tunggu kontribusi Agregasi Pribadi untuk Shared Storage
Penjelasan
Tersedia di M119
Dukungan untuk Private Aggregation API dan Layanan Agregasi untuk Google Cloud
Penjelasan
Tersedia di Chrome M121
Padding untuk payload laporan gabungan
Penjelasan
Tersedia di Chrome M119
Mode debug Agregasi Pribadi tersedia untuk pelaporan auctionReportBuyers
Penjelasan
Tersedia di Chrome M123
Dukungan ID pemfilteran
Penjelasan
Tersedia di Chrome M128
Penggabungan kontribusi sisi klien
Penjelasan
Tersedia di Chrome M129
Batas kontribusi per konteks
Penjelasan
Diperkirakan akan tersedia pada K1 2025
Anggaran privasi bernama yang mengalokasikan anggaran privasi secara otomatis untuk berbagai kasus penggunaan pengukuran
Penjelasan
Diperkirakan akan hadir pada K2 2025
Pelaporan error gabungan yang men-debug masalah penerapan tanpa mengandalkan cookie pihak ketiga
Penjelasan
Diperkirakan akan hadir pada K2 2025

Apa yang dimaksud dengan Private Aggregation API

Private Aggregation API memungkinkan developer membuat laporan data gabungan dengan data dari Protected Audience API dan data lintas situs dari Shared Storage.

Fungsi utama API ini dikenal sebagai contributeToHistogram(). Operasi histogram memungkinkan Anda menggabungkan data di seluruh pengguna dalam setiap bucket (dikenal dalam API sebagai kunci agregasi) yang Anda tentukan. Panggilan histogram Anda mengumpulkan nilai dan menampilkan hasil gabungan yang diberi derau dalam bentuk laporan ringkasan. Misalnya, laporan dapat menampilkan jumlah situs tempat setiap pengguna melihat konten Anda, atau menemukan bug dalam skrip pihak ketiga Anda. Operasi ini dilakukan dalam worklet API lain.

Misalnya, jika sebelumnya Anda telah merekam data demografi dan geografis di Shared Storage, Anda dapat menggunakan Private Aggregation API untuk membuat histogram yang memberi tahu Anda perkiraan jumlah pengguna di New York City yang telah melihat konten lintas situs Anda. Untuk menggabungkan pengukuran ini, Anda dapat mengenkode dimensi geografi ke dalam kunci agregasi dan menghitung pengguna dalam nilai yang dapat diagregasi.

Konsep utama

Saat Anda memanggil Private Aggregation API dengan kunci agregasi dan nilai yang dapat diagregasi, browser akan membuat laporan yang dapat diagregasi.

Laporan agregat dikirim ke server Anda untuk dikumpulkan dan di-batch. Laporan yang di-batch akan diproses nanti oleh Layanan Agregasi, dan laporan ringkasan akan dibuat.

Lihat dokumen Dasar-dasar Private Aggregation API untuk mempelajari lebih lanjut konsep utama yang terkait dengan Private Aggregation API.

Perbedaan dari Attribution Reporting

Private Aggregation API memiliki banyak kesamaan dengan Attribution Reporting API. Attribution Reporting adalah API mandiri yang dirancang untuk mengukur konversi, sedangkan Private Aggregation dibuat untuk pengukuran lintas situs bersama dengan API seperti Protected Audience API dan Shared Storage. Kedua API menghasilkan laporan yang dapat digabungkan yang digunakan oleh backend Layanan Agregasi untuk membuat laporan ringkasan.

Pelaporan Atribusi mengaitkan data yang dikumpulkan dari peristiwa tayangan iklan dan peristiwa konversi, yang terjadi pada waktu yang berbeda. Agregasi Pribadi mengukur satu peristiwa lintas situs.

Menguji API ini

Untuk menguji Private Aggregation API secara lokal, aktifkan semua API Privasi iklan di bagian chrome://settings/adPrivacy.

Baca selengkapnya tentang pengujian dalam eksperimen dan partisipasi.

Menggunakan demo

Demo Private Aggregation API untuk Shared Storage dapat diakses di goo.gle/shared-storage-demo, dan kodenya tersedia di GitHub. Demo ini mengimplementasikan operasi sisi klien dan menghasilkan laporan yang dapat digabungkan yang dikirim ke server Anda.

Demo Private Aggregation API untuk Protected Audience API akan dipublikasikan pada masa mendatang.

Kasus penggunaan

Private Aggregation adalah API tujuan umum untuk pengukuran lintas situs, dan tersedia untuk digunakan di worklet Shared Storage dan Protected Audience API. Langkah pertama adalah memutuskan secara spesifik informasi apa yang ingin Anda kumpulkan. Poin data tersebut adalah dasar kunci agregasi Anda.

Dengan Shared Storage

Shared Storage memungkinkan Anda membaca dan menulis data lintas situs di lingkungan yang aman untuk mencegah kebocoran, dan Private Aggregation API memungkinkan Anda mengukur data lintas situs yang disimpan di Shared Storage.

Pengukuran jangkauan unik

Anda mungkin ingin mengukur jumlah pengguna unik yang telah melihat konten mereka. Private Aggregation API dapat memberikan jawaban seperti "Sekitar 317 pengguna unik telah melihat Content ID 861".

Anda dapat menyetel tanda di Shared Storage untuk menunjukkan apakah pengguna telah melihat konten atau belum. Pada kunjungan pertama saat tanda tidak ada, panggilan ke Private Aggregation dilakukan, lalu tanda ditetapkan. Pada kunjungan berikutnya oleh pengguna, termasuk kunjungan lintas situs, Anda dapat memeriksa Shared Storage dan melewati pengiriman laporan ke Private Aggregation jika tanda ditetapkan. Untuk mempelajari lebih lanjut metode penerapan pengukuran ini, lihat laporan resmi jangkauan kami.

Pengukuran demografi

Anda mungkin ingin mengukur demografi pengguna yang telah melihat konten Anda di berbagai situs.

Agregasi Pribadi dapat memberikan jawaban, seperti "Sekitar 317 pengguna unik berusia 18-45 tahun dan berasal dari Jerman". Gunakan Shared Storage untuk mengakses data demografi dari konteks pihak ketiga. Di lain waktu, Anda dapat membuat laporan dengan Private Aggregation dengan mengenkode dimensi kelompok usia dan negara dalam kunci agregasi.

Pengukuran frekuensi K+

Anda mungkin ingin mengukur jumlah pengguna yang telah melihat konten atau iklan setidaknya K kali di browser tertentu, untuk nilai K yang telah dipilih sebelumnya.

Agregasi Pribadi dapat memberikan jawaban seperti "Sekitar 89 pengguna telah melihat Content ID 581 setidaknya 3 kali." Penghitung dapat di-increment di Shared Storage dari berbagai situs dan dapat dibaca dalam worklet. Setelah jumlahnya mencapai K, laporan dapat dikirimkan menggunakan Private Aggregation.

Atribusi multi-sentuh

Atribusi pemasaran adalah metode yang digunakan oleh pengiklan untuk menentukan kontribusi taktik pemasaran dan interaksi iklan berikutnya terhadap penjualan atau konversi.

Dengan Protected Audience API

Protected Audience API memungkinkan kasus penggunaan audiens kustom dan penargetan ulang, dan Private Aggregation memungkinkan Anda melaporkan peristiwa dari worklet pembeli dan penjual. API ini dapat digunakan untuk tugas seperti mengukur distribusi bid lelang.

Dari worklet Protected Audience API, Anda dapat menggabungkan data secara langsung menggunakan contributeToHistogram() dan melaporkan data berdasarkan pemicu menggunakan contributeToHistogramOnEvent(), yang merupakan ekstensi khusus untuk Protected Audience API.

Fungsi yang tersedia

Fungsi berikut tersedia di objek privateAggregation yang tersedia di worklet Shared Storage dan Protected Audience API.

contributeToHistogram()

Anda dapat memanggil privateAggregation.contributeToHistogram({ bucket: <bucket>, value: <value> }), dengan kunci agregasi adalah bucket dan nilai yang dapat diagregasi adalah value. Untuk parameter bucket, BigInt wajib diisi. Untuk parameter value, diperlukan Number bilangan bulat.

Berikut adalah contoh cara pemanggilannya di Shared Storage untuk pengukuran jangkauan:

iframe.js

// Cross-site iframe code

async function measureReach() {
 // Register worklet
 await window.sharedStorage.worklet.addModule('worklet.js');

 // Run reach measurement operation
 await window.sharedStorage.run('reach-measurement', {
  data: { contentId: '1234' }
 });
}

measureReach();

worklet.js

// Shared storage worklet code

function convertContentIdToBucket(campaignId){
  // Generate aggregation key
}

// The scale factor is multiplied by the aggregatable value to
// maximize the signal-to-noise ratio. See "Noise and scaling"
// section in the Aggregation Fundamentals document to learn more.
const SCALE_FACTOR = 65536;

class ReachMeasurementOperation {
  async run(data) {
    const key = 'has-reported-content';
    // Read the flag from Shared Storage
    const hasReportedContent = await sharedStorage.get(key) === 'true';

    // Don't send report if the flag is set
    if (hasReportedContent) {
      return;
    }

    // Send histogram report
    // Set the aggregation key in `bucket`
    // Bucket examples: 54153254n or BigInt(54153254)
    // Set the scaled aggregatable value in `value`
    privateAggregation.contributeToHistogram({
      bucket: convertContentIdToBucket(data.contentId),
      value: 1 * SCALE_FACTOR
    });

    // Set the flag in Shared Storage
    await sharedStorage.set(key, true);
  }
}

register('reach-measurement', ReachMeasurementOperation);

Contoh kode sebelumnya akan memanggil Private Aggregation setiap kali konten iframe lintas situs dimuat. Kode iframe memuat worklet, dan worklet memanggil Private Aggregation API dengan ID konten yang dikonversi menjadi kunci agregasi (bucket).

contributeToHistogramOnEvent()

Hanya dalam worklet Protected Audience API, kami menyediakan mekanisme berbasis pemicu untuk mengirim laporan hanya jika peristiwa tertentu terjadi. Fungsi ini juga memungkinkan bucket dan nilai bergantung pada sinyal yang belum tersedia pada titik tersebut dalam lelang.

Metode privateAggregation.contributeToHistogramOnEvent(eventType, contribution) mengambil eventType yang menentukan peristiwa pemicu, dan contribution yang akan dikirimkan saat peristiwa dipicu. Peristiwa pemicu dapat berasal dari lelang itu sendiri setelah lelang berakhir, seperti peristiwa menang atau kalah dalam lelang, atau dapat berasal dari frame tertutup yang merender iklan.

Untuk mengirim laporan untuk peristiwa lelang, Anda dapat menggunakan dua kata kunci yang dicadangkan, reserved.win, reserved.loss, dan reserved.always. Untuk mengirimkan laporan yang dipicu oleh peristiwa dari frame yang dibatasi, tentukan jenis peristiwa kustom. Untuk memicu peristiwa dari frame tertutup, gunakan metode fence.reportEvent() yang tersedia dari Fenced Frames Ads Reporting API.

Contoh berikut mengirimkan laporan tayangan iklan saat peristiwa kemenangan lelang dipicu, dan mengirimkan laporan klik jika peristiwa click dipicu dari frame tertutup yang merender iklan. Kedua nilai ini dapat digunakan untuk menghitung rasio klik-tayang.

function generateBid(interestGroup, auctionSignals, perBuyerSignals, trustedBiddingSignals, browserSignals) {
  // …
  privateAggregation.contributeToHistogramOnEvent("reserved.win", {
      bucket: getImpressionReportBucket(),
      value: 1
  });
  privateAggregation.contributeToHistogramOnEvent("click", {
      bucket: getClickReportBuckets(), // 128-bit integer as BigInt
      value: 1
  });

Lihat Penjelasan Pelaporan Agregasi Pribadi yang Diperluas untuk mempelajari lebih lanjut.

enableDebugMode()

Selama cookie pihak ketiga masih tersedia, kami akan menyediakan mekanisme sementara yang memungkinkan proses debug dan pengujian yang lebih mudah dengan mengaktifkan mode debug. Laporan debug berguna untuk membandingkan pengukuran berbasis cookie dengan pengukuran Private Aggregation, dan juga memungkinkan Anda memvalidasi integrasi API dengan cepat.

Memanggil privateAggregation.enableDebugMode() di worklet akan mengaktifkan mode debug yang menyebabkan laporan yang dapat diagregasi menyertakan payload yang tidak dienkripsi (cleartext). Kemudian, Anda dapat memproses payload ini dengan alat pengujian lokal Layanan Agregasi.

Mode debug hanya tersedia untuk pemanggil yang diizinkan mengakses cookie pihak ketiga. Jika pemanggil tidak memiliki akses ke cookie pihak ketiga, enableDebugMode() akan gagal tanpa ada peringatan.

Anda juga dapat menyetel kunci debug dengan memanggil privateAggregation.enableDebugMode({ <debugKey: debugKey> }) tempat BigInt dapat digunakan sebagai kunci debug. Kunci debug dapat digunakan untuk mengaitkan data dari pengukuran berbasis cookie dan data dari pengukuran Private Aggregation.

Fungsi ini hanya dapat dipanggil sekali per konteks. Semua panggilan berikutnya akan menampilkan pengecualian.

// Enables debug mode
privateAggregation.enableDebugMode();

// Enables debug mode and sets a debug key
privateAggregation.enableDebugMode({ debugKey: BigInt(1234) });

Verifikasi laporan

Private Aggregation API memungkinkan pengukuran lintas situs sekaligus melindungi privasi pengguna. Namun, pihak tidak bertanggung jawab dapat mencoba memanipulasi akurasi pengukuran ini. Untuk mencegah hal ini, Anda dapat menggunakan ID konteks untuk memverifikasi keaslian laporan.

Menetapkan ID konteks membantu memastikan bahwa data akurat saat berkontribusi pada hasil gabungan akhir. Hal ini dapat dilakukan dengan:

  • Mencegah laporan yang tidak sah atau tidak autentik: Verifikasi bahwa laporan dibuat melalui panggilan API yang sah dan autentik, sehingga pelaku kejahatan sulit memalsukan laporan.
  • Mencegah pemutaran ulang laporan: Mendeteksi dan menolak upaya untuk menggunakan kembali laporan lama, sehingga memastikan bahwa setiap laporan hanya berkontribusi satu kali pada hasil gabungan.

Shared Storage

Saat menggunakan Shared Storage untuk menjalankan operasi yang dapat mengirim laporan yang dapat diagregasi, Anda dapat menetapkan ID yang tidak dapat diprediksi di luar worklet.

ID ini disematkan dalam laporan yang dibuat dari worklet. Anda dapat menentukannya saat memanggil metode Shared Storage run() atau selectURL(), dalam objek opsi di bawah kunci privateAggregationConfig.

Contoh:

sharedStorage.run('measurement-operation', {
  privateAggregationConfig: {
    contextId: 'exampleId123456789abcdeFGHijk'
  }
});

Setelah ID ini ditetapkan, Anda dapat menggunakannya untuk memverifikasi bahwa laporan dikirim dari operasi Shared Storage Anda. Untuk mencegah kebocoran informasi, tepat satu laporan dikirim per operasi Shared Storage (meskipun tidak ada kontribusi yang dilakukan), terlepas dari jumlah panggilan contributeToHistogram().

Private Aggregation API mengirim laporan agregat dengan penundaan acak hingga satu jam. Namun, menetapkan ID konteks untuk memverifikasi laporan akan mengurangi penundaan ini. Dalam hal ini, ada penundaan tetap yang lebih kecil, yaitu 5 detik, dari dimulainya operasi Shared Storage.

Contoh alur kerja untuk verifikasi laporan.
Contoh alur kerja untuk verifikasi laporan.

Contoh alur kerja (seperti yang ditunjukkan dalam diagram di atas):

  1. Operasi Shared Storage dijalankan dengan konfigurasi Private Aggregation yang menentukan ID konteks dan laporan yang dapat diagregasi dibuat.
  2. ID konteks disematkan dalam laporan agregat yang dibuat dan dikirim ke server Anda.
  3. Server Anda mengumpulkan laporan gabungan yang dibuat.
  4. Proses di server Anda memeriksa ID konteks di setiap laporan yang dapat diagregasi terhadap ID konteks yang disimpan untuk memverifikasi validitasnya sebelum mengelompokkan laporan dan mengirimkannya ke Layanan Agregasi Anda.

Verifikasi ID konteks

Laporan masuk ke server pengumpul Anda dapat diverifikasi dengan beberapa cara sebelum dikirim ke Layanan Agregasi. Laporan dengan ID konteks yang tidak valid dapat ditolak jika ID Konteks adalah:

  • Tidak diketahui: Jika laporan tiba dengan ID konteks yang belum dibuat oleh sistem Anda, Anda dapat menghapusnya. Hal ini mencegah pihak yang tidak dikenal atau berniat jahat menyuntikkan data ke dalam pipeline agregasi Anda.
  • Duplikat: Jika Anda menerima dua (atau lebih) laporan dengan ID konteks yang sama, berarti Anda harus memilih laporan mana yang akan dihapus.
  • Ditandai dalam deteksi spam:
    • Jika Anda mendeteksi aktivitas mencurigakan dari pengguna, misalnya perubahan mendadak dalam aktivitas pengguna, saat memproses laporannya, Anda dapat menghapusnya.
    • Anda dapat menyimpan laporan beserta ID konteks dan sinyal yang relevan (misalnya, agen pengguna, sumber rujukan, dll.). Selanjutnya, saat menganalisis perilaku pengguna dan mengidentifikasi indikator spam baru, Anda dapat mengevaluasi ulang laporan tersimpan berdasarkan ID konteks dan sinyal terkaitnya. Dengan begitu, Anda dapat menghapus laporan dari pengguna yang menunjukkan aktivitas mencurigakan, meskipun awalnya tidak ditandai.

Berinteraksi dan memberikan masukan

Private Aggregation API sedang dalam tahap pembahasan aktif dan dapat berubah sewaktu-waktu. Jika Anda mencoba API ini dan memiliki masukan, kami ingin mendengarnya.