Pencocokan cookie

Secara umum, pencocokan cookie adalah proses saat pengiklan atau vendor mengaitkan cookie di domain mereka dengan cookie di domain Google. Mencocokkan cookie ini memungkinkan Anda menghubungkan data pihak pertama yang Anda miliki dengan data iklan Google (yang dilacak melalui Display & Video 360 dan Campaign Manager 360) pada pengguna yang sama, sehingga Anda dapat menyertakan data CRM dan lebih memahami perilaku pengguna. Dengan menggabungkan data ini melalui gabungan yang mengutamakan privasi, Anda dapat:

  • Menargetkan 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 lebih lama di domain Anda.
  • Analisis 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 upaya engineering dari Anda dan Google.
  • Anda kemungkinan tidak akan dapat mencocokkan semua data iklan Google Anda. Tingkat kecocokan tunduk pada sejumlah faktor, dan bervariasi menurut kasus penggunaan dan penyiapan sisi klien. Tingkat kecocokan sering kali lebih rendah dari yang diharapkan pengguna. Pengguna hanya memenuhi syarat untuk pencocokan cookie jika mereka telah berinteraksi dengan domain Anda dan iklan Anda.
  • Google mulai mengisi tabel kecocokan Anda saat tabel tersebut disiapkan. Bergantung pada frekuensi pengguna mengunjungi situs Anda dan menerima piksel pencocokan, mungkin perlu waktu berbulan-bulan sebelum tabel kecocokan Anda berisi data holistik dan stabil tentang pengguna Anda.
  • Anda tidak akan dapat mengaitkan pengguna perorangan ke beberapa perangkat, kecuali jika Anda memiliki cara untuk menghubungkan pengguna di seluruh perangkat.
  • Anda tidak dapat mencocokkan satu pengguna menggunakan beberapa cookie, seperti yang akan terjadi saat pengguna menghapus cookie mereka.
  • Pekerjaan yang dijalankan di tabel kecocokan tunduk pada persyaratan agregasi yang sama seperti pekerjaan lain di Ads Data Hub. Rasio kecocokan yang rendah yang 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 pengguna tertentu yang login dan logout.
    • Tidak dapat mencocokkan data dengan pengguna yang telah memilih tidak mengaktifkan 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 kepada 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 membuat 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 kecocokan.

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

Agar Google dapat mengisi tabel kecocokan, Anda harus menayangkan tag kecocokan di setiap halaman domain tempat Anda ingin mencocokkan data iklan. Tempat Anda menempatkan piksel akan bergantung pada sasaran iklan Anda. Misalnya, Anda mungkin ingin mencoba mencocokkan setiap pengguna yang mengunjungi domain Anda (memerlukan piksel di hampir semua halaman), atau Anda dapat mencocokkan pengguna yang berkonversi (memerlukan piksel di halaman konversi). Secara umum, piksel yang lebih tersebar 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 kecocokan.
  2. Tag pencocokan memulai serangkaian pengalihan ke layanan pencocokan Google Marketing Platform, Google Ads, dan YouTube. Permintaan 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 penyiapan pencocokan cookie di Ads Data Hub adalah sebagai berikut:

  1. Hubungi perwakilan akun Anda dan sampaikan minat Anda terhadap pencocokan cookie. Mereka akan mendiskusikan sasaran Anda dan memberi Anda informasi lebih lanjut tentang cara men-deploy piksel 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 endpoint error dan piksel pelacakan, Google akan membuat tabel kecocokan Anda.

Setelah Anda menyelesaikan langkah-langkah ini, tidak ada tindakan langsung yang diperlukan. Google akan mengisi tabel kecocokan Anda setiap hari2, jadi Anda harus memberikan waktu yang cukup sebelum tabel Anda berisi data yang cukup untuk memberikan kecocokan 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. Saat jumlah kecocokan baru melambat, tabel kecocokan Anda akan berisi data yang lebih komprehensif.

Membuat kueri tabel pencocokan

Jika tabel kecocokan Anda berisi cukup data untuk memenuhi pemeriksaan privasi, Anda siap menjalankan kueri pada 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 kualitas laporan Anda dengan lebih banyak insight, karena tabel tersebut merepresentasikan semua data pihak pertama yang tercakup, jika dibandingkan dengan tabel kecocokan.

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 kecocokan yang disebut adh.google_ads_impressions_match yang berisi ID pengguna Anda. Tabel kecocokan terpisah dibuat untuk tabel jaringan yang terisolasi kebijakan. Misalnya, untuk tabel adh.google_ads_impressions_policy_isolated_network, Ads Data Hub juga membuat tabel pencocokan yang disebut adh.google_ads_impressions_policy_isolated_network_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, maka Pengguna B tidak akan ada dalam tabel kecocokan.

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

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 melakukan transmisi kunci gabungan ke BYTES agar kecocokan berhasil:

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

Selain itu, perbandingan string di SQL peka terhadap kapitalisasi, sehingga Anda mungkin perlu mengenkode string di kedua sisi perbandingan untuk memastikan bahwa string dapat dibandingkan secara akurat.

Mengodekan ID pengguna

Mengenkode ID pengguna di sisi klien

Untuk memastikan format ID yang berbeda dapat ditransmisikan 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, jadi Anda harus mengurungkan transformasi apa pun yang diterapkan sebelum melakukan encoding untuk mendapatkan ID asli.

Jika ID Anda selalu 24 karakter (atau byte) atau kurang, Anda dapat menyertakan ID berenkode Base64 yang aman untuk URL dalam piksel, seperti yang ditunjukkan dalam contoh 1. Jika ID Anda lebih dari 24 karakter (atau byte), Anda harus mengubahnya menjadi representasi yang berukuran 24 byte atau kurang. Dalam beberapa kasus (seperti GUID dalam contoh 2), ini adalah masalah konversi ke representasi byte. Dalam kasus lain, Anda mungkin perlu mengirimkan subset (atau hash) tanda pengenal Anda kepada Google. Perhatikan bahwa, dalam kasus apa pun, Anda harus memastikan bahwa Anda dapat menulis SQL JOIN yang akan mengonversi ID dalam tabel pihak pertama dengan cara yang sama.

Contoh 1

Nilai ID pengguna Anda akan selalu berada di bawah batas panjang 24 byte. Ads Data Hub merekomendasikan agar Anda cukup mengirimkan ID Pengguna secara langsung ke ADH (setelah mengenkodnya sebagai Base64 yang aman untuk URL untuk tujuan transfer 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. Mengenkode 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 ID pengguna Google, kolom external_cookie berisi ID Anda sebagai nilai byte. Untuk merekonstruksi ID asli Anda, diperlukan transformasi berikut:

  1. external_cookie diformat sebagai byte.
  2. Encode 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 ke byte, seperti dalam contoh di atas, agar berhasil menggabungkan data.

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

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

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

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

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

Pelajari lebih lanjut fungsi string di SQL BigQuery.

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 menggabungkan 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 batas agregasi 50 pengguna, karena 50 / 0,2 = 250. 

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