Pencocokan cookie

Pada tingkat tinggi, pencocokan cookie adalah proses yang digunakan pengiklan atau vendor untuk mengaitkan cookie di domain mereka dengan cookie di domain Google. Dengan mencocokkan cookie ini, Anda dapat menghubungkan data pihak pertama yang Anda miliki dengan data iklan Google (dilacak melalui Display & Video 360 dan Campaign Manager 360) pada pengguna yang sama, sehingga Anda dapat menggabungkan data CRM dan lebih memahami perilaku pengguna. Dengan menggabungkan data ini melalui join yang mengutamakan privasi, Anda dapat:

  • Targetkan audiens berdasarkan item tertentu yang ditinggalkan di keranjang belanja, jika pengguna tersebut telah berinteraksi dengan iklan dan domain Anda.
  • Tentukan iklan mana yang menghasilkan sesi yang lebih lama di domain Anda.
  • Menganalisis histori pembelian yang digabungkan dengan data pasca-kampanye.

Batasan dan privasi pengguna akhir

Meskipun efektif, pencocokan cookie memiliki beberapa batasan:

  • Gabungan antara tabel *_match dan non-*_match dilarang.
  • Hal ini memerlukan pekerjaan engineering dari Anda dan Google.
  • Anda mungkin tidak dapat mencocokkan semua data iklan Google Anda. Rasio pencocokan tunduk pada sejumlah faktor, dan bervariasi menurut kasus penggunaan dan penyiapan sisi klien. Rasio kecocokan sering kali lebih rendah dari yang diharapkan pengguna. Pengguna hanya memenuhi syarat untuk pencocokan cookie jika mereka telah berinteraksi dengan domain dan iklan Anda.
  • Google akan mulai mengisi tabel pencocokan Anda setelah disiapkan. Bergantung pada frekuensi pengguna mengunjungi situs Anda dan menerima piksel pencocokan, mungkin perlu waktu berbulan-bulan sebelum tabel pencocokan Anda berisi data yang stabil dan menyeluruh tentang pengguna.
  • Anda tidak akan dapat mengaitkan setiap pengguna ke beberapa perangkat, kecuali jika Anda memiliki beberapa cara untuk menghubungkan pengguna di seluruh perangkat.
  • Anda tidak dapat mencocokkan satu pengguna menggunakan beberapa cookie, seperti yang terjadi saat pengguna menghapus cookie-nya.
  • Tugas yang dijalankan di tabel pencocokan tunduk pada persyaratan agregasi yang sama dengan tugas lainnya di Ads Data Hub. Rasio kecocokan yang rendah dikombinasikan dengan kunjungan yang jarang ke domain Anda dapat menyebabkan kesulitan dalam mendapatkan data. Hal ini disebabkan oleh efek gabungan dari rasio kecocokan dan persyaratan agregasi1.
  • Sesuai dengan kebijakan Google tentang privasi pengguna akhir, Anda:
    • Dilarang mencocokkan data login dan logout pengguna tertentu.
    • Tidak dapat mencocokkan data dengan pengguna yang memilih untuk tidak menggunakan personalisasi iklan.
  • Untuk peristiwa iOS, Anda hanya dapat mencocokkan data yang berasal dari aplikasi di iOS 14.5+ dari pengguna yang telah memberikan izin berdasarkan framework App Tracking Transparency Apple.

Untuk memastikan Anda dapat menggunakan data pihak pertama di Ads Data Hub, Anda harus mengonfirmasi bahwa Anda telah memperoleh izin yang sesuai untuk membagikan data dari pengguna akhir EEA ke Google sesuai dengan kebijakan izin pengguna Uni Eropa dan kebijakan Ads Data Hub. Persyaratan ini berlaku untuk setiap akun Ads Data Hub, dan harus diperbarui setiap kali Anda mengupload data pihak pertama baru. Setiap pengguna dapat memberikan konfirmasi ini atas nama seluruh akun.

Perhatikan bahwa aturan kueri layanan Google yang sama yang berlaku untuk kueri analisis juga berlaku untuk kueri pencocokan cookie. Misalnya, Anda tidak dapat menjalankan kueri lintas layanan pada pengguna di EEA saat membuat tabel pencocokan.

Untuk mempelajari cara mengonfirmasi izin di Ads Data Hub, lihat Persyaratan izin untuk Wilayah Ekonomi Eropa.

Agar Google dapat mengisi tabel pencocokan, Anda harus menayangkan tag pencocokan di setiap halaman domain tempat Anda ingin mencocokkan data iklan. Tempat Anda menempatkan pixel akan bergantung pada sasaran iklan Anda. Misalnya, Anda mungkin ingin mencoba mencocokkan setiap pengguna yang mengunjungi domain Anda (memerlukan pixel di hampir semua halaman), atau Anda dapat mencocokkan pengguna yang melakukan konversi (memerlukan pixel di halaman konversi). Secara umum, piksel yang lebih luas akan menghasilkan rasio kecocokan yang lebih tinggi.

Tag pencocokan adalah piksel 1x1 transparan, yang berisi ID profil pencocokan cookie Anda dan ID pengguna atau cookie yang dienkode:

<img src="https://cm.g.doubleclick.net/pixel?google_nid=adh_customername&google_hm=Q29va2llIG51bWJlciAxIQ" />

Tag pencocokan ini adalah yang memulai komunikasi antara Anda dan layanan pencocokan cookie Google.

Ringkasan langkah demi langkah

  1. Pengguna mengunjungi halaman dengan tag pencocokan.
  2. Tag pencocokan memulai serangkaian pengalihan ke layanan pencocokan Google Marketing Platform, Google Ads, dan YouTube. Permintaan tersebut berisi ID atau cookie pengguna tersebut dari situs Anda, ditambah cookie Google di setiap ruang ID layanan yang cocok.
  3. Piksel 1x1 transparan ditampilkan ke browser untuk mengonfirmasi bahwa permintaan telah dipenuhi.

Proses ini ditampilkan dalam diagram berikut:

Gambar yang menggambarkan serangkaian pengalihan antara browser dan layanan
yang cocok

Penyiapan

Proses untuk menyiapkan pencocokan cookie di Ads Data Hub adalah sebagai berikut:

  1. Hubungi perwakilan akun Anda dan sampaikan minat Anda terkait pencocokan cookie. Mereka akan membahas sasaran Anda dan memberikan informasi selengkapnya tentang cara men-deploy pixel pelacakan di domain Anda.
  2. Spesialis Ads Data Hub akan memulai percakapan lain untuk membahas persyaratan teknis dan kasus penggunaan.
  3. Saat Anda men-deploy pixel pelacakan dan endpoint error, Google akan membuat tabel pencocokan.

Setelah Anda menyelesaikan langkah-langkah ini, Anda tidak perlu melakukan tindakan apa pun. Google akan mengisi tabel pencocokan Anda setiap hari2, sehingga Anda harus menunggu cukup lama sebelum tabel Anda berisi data yang cukup untuk memberikan pencocokan yang bermakna dan memenuhi persyaratan agregasi. Hal ini bergantung pada frekuensi pengguna mengunjungi situs Anda; situs dengan pengunjung harian akan mencapai titik ini jauh lebih cepat daripada situs dengan pengunjung bulanan. Seiring dengan melambatnya jumlah kecocokan baru, tabel kecocokan Anda akan berisi data yang lebih komprehensif.

Membuat kueri tabel pencocokan

Jika tabel pencocokan berisi cukup data untuk memenuhi pemeriksaan privasi, Anda sudah siap untuk menjalankan kueri terhadap tabel tersebut.

Tabel asli untuk data pihak pertama (1PD) diwakili oleh my_data. Hal ini mencakup Informasi Identitas Pribadi (PII) dan data non-PII. Menggunakan tabel asli dapat meningkatkan laporan Anda dengan lebih banyak insight, karena mewakili semua data 1PD dalam cakupan, jika dibandingkan dengan tabel pencocokan.

Setiap tabel dalam skema Ads Data Hub yang berisi kolom user_id disertai dengan tabel pencocokan. Misalnya, untuk tabel adh.google_ads_impressions, Ads Data Hub juga membuat tabel pencocokan yang disebut adh.google_ads_impressions_match yang berisi ID pengguna Anda. Tabel kecocokan terpisah dibuat untuk tabel yang terisolasi kebijakan. Misalnya, untuk tabel adh.google_ads_impressions_policy_isolated_youtube, Ads Data Hub juga membuat tabel pencocokan yang disebut adh.google_ads_impressions_policy_isolated_youtube_match yang berisi ID pengguna Anda.

Tabel ini berisi subset pengguna yang tersedia di tabel asli, dengan kecocokan pada user_id. Misalnya, jika tabel asli berisi data untuk Pengguna A dan Pengguna B, tetapi hanya Pengguna A yang cocok, Pengguna B tidak akan ada dalam tabel kecocokan.

Tabel kecocokan berisi kolom tambahan yang disebut external_cookie, yang menyimpan ID pengguna sebagai BYTE.

Penting untuk mempertimbangkan jenis kolom saat menulis kueri. Operator perbandingan SQL mengharapkan literal yang Anda bandingkan memiliki jenis yang sama. Bergantung pada cara user_id disimpan dalam tabel data pihak pertama, Anda mungkin perlu mengenkode nilai dalam tabel sebelum mencocokkan data. Anda harus mentransmisikan kunci join ke BYTE agar kecocokan berhasil:

JOIN ON
  adh.google_ads_impressions_match.external_cookie = CAST(my_data.user_id AS BYTES)

Selain itu, perbandingan string dalam SQL peka huruf besar/kecil, sehingga Anda mungkin perlu mengenkode string di kedua sisi perbandingan untuk memastikan bahwa string tersebut dapat dibandingkan secara akurat.

Mengenkode ID pengguna

Mengenkode ID pengguna sisi klien

Untuk memastikan format ID yang berbeda dapat dikirim dengan aman melalui URL, semua ID harus dienkode Base64 yang aman untuk URL sebelum dikirim. ID yang didekode Base64 yang aman untuk URL akan tersedia di Ads Data Hub di kolom external_cookie, sehingga Anda harus mengurungkan transformasi apa pun yang diterapkan sebelum encoding untuk mendapatkan ID asli.

Jika ID Anda selalu 24 karakter (atau byte) atau kurang, Anda dapat menyertakan ID yang dienkode Base64 dan aman untuk URL dalam piksel, seperti yang ditunjukkan pada contoh 1. Jika ID Anda lebih besar dari 24 karakter (atau byte), Anda harus mengubahnya menjadi representasi yang berukuran 24 byte atau kurang. Dalam beberapa kasus (seperti GUID dalam contoh 2), Anda hanya perlu mengonversinya ke representasi byte. Dalam kasus lain, Anda mungkin perlu mengirimkan subset (atau hash) ID Anda ke Google. Perhatikan bahwa, bagaimanapun, Anda harus memastikan bahwa Anda dapat menulis JOIN SQL yang akan mengonversi ID di tabel pihak pertama dengan cara yang sama.

Contoh 1

Nilai user-ID Anda akan selalu berada di bawah batas panjang 24 byte. Ads Data Hub merekomendasikan agar Anda mengirim ID Pengguna langsung ke ADH (setelah mengenkodenya sebagai Base64 yang aman untuk URL untuk tujuan transpor URL).

var userId = 'abcdef123456789';
// Encode the string (or number) in normal base64.
var userIdBase64 = btoa(userId);

// Ensure that the uploaded user IDs use web-safe Base64 encoding.
userIdBase64 = userIdBase64.replace(/\+/g, '-').replace(/\//g, '_')
    .replace(/=+$/, '');

// After encoding the UUID correctly, you can create the request tag and
// insert it into the DOM.
var imgElement = Document.createElement('img');
imgElement.src =
    'https://cm.g.doubleclick.net/pixel?google_nid=adh_customername&google_hm='
    + userIdBase64;
document.body.appendChild(imgElement);
Contoh 2

Anda menetapkan nilai ID unik universal (UUID) sebagai ID pengguna, seperti: 123e4567-e89b-12d3-a456-426655440000.

Ads Data Hub merekomendasikan transformasi berikut saat mencocokkan:

  1. UUID diformat sebagai string 36 karakter.
  2. UUID dekode heksadesimal.
  3. UUID diformat sebagai byte.
  4. Byte Base64 yang aman untuk URL.
  5. UUID diformat sebagai string.

Hal ini dapat diimplementasikan dengan kode berikut:

JavaScript

var userId = '123e4567-e89b-12d3-a456-426655440000';

// A helper function for converting a hex string to a byte array.
function strToBytes(str) {
        for (var bytes = [], i = 0; i < str.length; i += 2) {
          bytes.push(parseInt(str.substr(i, 2), 16));
        }
        return bytes;
}

// Remove the formatting dashes from the UUID.
userId = userId.replace(/-/g, '');

// Encode the hex string as a byte array.
var userIdBytes = strToBytes(userId);

// Encode the byte array in normal base64.
var userIdBase64 = btoa(String.fromCharCode(...new Uint8Array(userIdBytes)));

// Ensure that the uploaded user IDs use web-safe Base64 encoding.
userIdBase64 = userIdBase64.replace(/\+/g, '-').replace(/\//g, '_').replace(
    /=+$/, '');

// After encoding the UUID correctly, you can create the request tag and
// insert it into the DOM.
var imgElement = Document.createElement('img');
imgElement.src =
    'https://cm.g.doubleclick.net/pixel?google_nid=adh_customername&google_hm='
    + userIdBase64;
document.body.appendChild(imgElement);

Python

import base64

user_id = '123e4567-e89b-12d3-a456-426655440000'
user_id_as_bytes = bytes.fromhex(user_id.replace('-', ''))
base64.urlsafe_b64encode(user_id_as_bytes)

Jika ada kecocokan dengan User-ID Google, kolom external_cookie akan berisi ID Anda sebagai nilai byte. Untuk merekonstruksi ID asli Anda, transformasi berikut diperlukan:

  1. external_cookie diformat sebagai byte.
  2. Encoding heksadesimal external_cookie.
  3. external_cookie diformat sebagai string.

Mengenkode ID pengguna di Ads Data Hub

Jika Anda menyimpan string UUID di kolom dalam data pihak pertama, Anda harus mengonversinya menjadi byte, seperti dalam contoh di atas, agar berhasil menggabungkan data.

Contoh berikut menunjukkan cara mengenkode UUID dan menggabungkannya di kolom cookie eksternal:

JOIN my_data ON imp.external_cookie = FROM_HEX(REPLACE(my_data.uuid, '-', ''))

Perhatikan bahwa Anda tidak dapat mengonversi bilangan bulat menjadi byte. Jika ID pengguna Anda berupa bilangan bulat (seperti pada contoh 1 di atas), Anda harus melakukan transmisi sebagai string terlebih dahulu:

JOIN my_data ON imp.external_cookie = CAST(CAST(my_data.user_id AS STRING) AS BYTES)

Perlu diingat bahwa encoding yang diperlukan untuk mencocokkan data Anda akan spesifik untuk cara Anda menyimpannya, dan cara Anda mengenkodenya sebelum mengirimkannya ke Ads Data Hub.

Pelajari lebih lanjut fungsi string di BigQuery SQL.

Contoh kueri

Contoh berikut menggabungkan data pihak pertama dengan google_ads_impressions_match, lalu menggabungkan hasil ini dengan adh_google_ads_impressions dalam kueri kedua.

SELECT
  imp.campaign_id as campaign_id,
  sum(my_data.recent_orders) as orders,
  average(my_data.lifetime_value) as ltv
FROM
  adh.google_ads_impressions_match as imp
LEFT JOIN
  my_data ON imp.external_cookie = my_data.company_guest_id_bytes
GROUP BY
  campaign_id

Dengan hasil kueri sebelumnya yang disimpan sebagai previous_results, Anda kini dapat bergabung dengan google_ads_impressions. Tindakan ini akan menambahkan data tentang kampanye dengan 0 tayangan ke hasil Anda.

SELECT
  campaign_id,
  COALESCE(orders, 0) as orders,
  COALESCE(ltv, 0) as ltv,
FROM (SELECT DISTINCT campaign_id
   FROM adh.google_ads_impressions)
LEFT JOIN previous_results USING (campaign_id)

  1. Contoh: rasio kecocokan 20% secara efektif berarti Anda memerlukan 250 pengguna per baris untuk memenuhi nilai minimum agregasi 50 pengguna, karena 50 / .2 = 250. 

  2. Kecocokan yang dibuat pada hari tertentu mungkin mengalami penundaan hingga 48 jam sebelum muncul di tabel Anda.