कुकी मैचिंग

कुकी मैचिंग की प्रोसेस में, विज्ञापन देने वाला व्यक्ति या कंपनी या वेंडर, अपने डोमेन में मौजूद कुकी को Google के डोमेन में मौजूद कुकी से जोड़ता है. इन कुकी को मैच करने से, आपको अपने पहले पक्ष (ग्राहक) के डेटा को Google के विज्ञापन डेटा (Display &Video 360 और Campaign Manager 360 के ज़रिए ट्रैक किया गया) से जोड़ने में मदद मिलती है. इससे, आपको सीआरएम डेटा को शामिल करने और उपयोगकर्ता के व्यवहार को बेहतर तरीके से समझने में मदद मिलती है. निजता को ध्यान में रखते हुए, इस डेटा को मिलाकर, ये काम किए जा सकते हैं:

  • शॉपिंग कार्ट में छोड़े गए खास आइटम के आधार पर, ऑडियंस को टारगेट करना. हालांकि, ऐसा तब किया जा सकता है, जब उन उपयोगकर्ताओं ने आपके विज्ञापनों और डोमेन के साथ इंटरैक्ट किया हो.
  • यह पता लगाना कि किन विज्ञापनों की वजह से, आपके डोमेन पर ज़्यादा समय तक सेशन चलते हैं.
  • कैंपेन के बाद के डेटा से जुड़े खरीदारी के इतिहास का विश्लेषण करना.

सीमाएं और असली उपयोगकर्ताओं की निजता

कुकी मैचिंग की सुविधा बहुत काम की है. हालांकि, इसकी कुछ सीमाएं हैं:

  • *_match और *_match के अलावा अन्य टेबल के बीच जॉइन करने की अनुमति नहीं है.
  • इसके लिए, आपको और Google, दोनों को इंजीनियरिंग से जुड़ा काम करना होगा.
  • ऐसा हो सकता है कि Google के सभी विज्ञापन डेटा को मैच न किया जा सके. मैच रेट कई बातों पर निर्भर करते हैं. साथ ही, इस्तेमाल के उदाहरण और क्लाइंट-साइड सेटअप के हिसाब से, इनमें अंतर हो सकता है. मैच रेट अक्सर उपयोगकर्ताओं की उम्मीद से कम होते हैं. उपयोगकर्ता, कुकी मैचिंग के लिए सिर्फ़ तब योग्य होते हैं, जब उन्होंने आपके डोमेन और आपके विज्ञापनों के साथ इंटरैक्ट किया हो.
  • मैच टेबल सेट अप होने के बाद, Google उनमें डेटा भरना शुरू कर देता है. उपयोगकर्ता आपकी साइट पर कितनी बार आते हैं और उन्हें आपका मैचिंग पिक्सल कितनी बार मिलता है, इस पर निर्भर करता है कि आपकी मैच टेबल में उपयोगकर्ताओं से जुड़ा पूरा और स्थिर डेटा आने में महीनों लग सकते हैं.
  • जब तक आपके पास उपयोगकर्ताओं को अलग-अलग डिवाइसों से जोड़ने का कोई तरीका नहीं होता, तब तक अलग-अलग उपयोगकर्ताओं को एक से ज़्यादा डिवाइसों से नहीं जोड़ा जा सकता.
  • एक उपयोगकर्ता को मैच करने के लिए, एक से ज़्यादा कुकी का इस्तेमाल नहीं किया जा सकता. ऐसा तब होता है, जब कोई उपयोगकर्ता अपनी कुकी मिटा देता है.
  • मैच टेबल पर चलने वाले जॉब के लिए, वही एग्रीगेशन ज़रूरी शर्तें लागू होती हैं जो Ads Data Hub में मौजूद अन्य जॉब के लिए लागू होती हैं. कम मैच रेट के साथ-साथ, आपके डोमेन पर कम विज़िट होने की वजह से, डेटा पाने में समस्याएं आ सकती हैं. ऐसा मैच रेट और एग्रीगेशन की ज़रूरी शर्तों 1 के मिले-जुले असर की वजह से होता है.
  • असली उपयोगकर्ताओं की निजता से जुड़ी Google की नीतियों के मुताबिक, आपको:
    • किसी उपयोगकर्ता के साइन-इन और साइन-आउट किए गए डेटा को मैच करने की अनुमति नहीं है.
    • विज्ञापन के हिसाब से निजी बनाने की सुविधा से ऑप्ट आउट करने वाले उपयोगकर्ताओं के डेटा को मैच करने की अनुमति नहीं है.
  • iOS इवेंट के लिए, सिर्फ़ iOS 14.5 या इसके बाद के वर्शन पर चलने वाले ऐप्लिकेशन से मिले डेटा को मैच किया जा सकता है. हालांकि, ऐसा सिर्फ़ उन उपयोगकर्ताओं के डेटा के साथ किया जा सकता है जिन्होंने Apple के ऐप्लिकेशन ट्रैकिंग पारदर्शिता फ़्रेमवर्क के तहत अनुमति दी है.

यह पक्का करने के लिए कि Ads Data Hub में पहले पक्ष (ग्राहक) के डेटा का इस्तेमाल किया जा सके, आपको यह पुष्टि करनी होगी कि आपने यूरोपियन इकनॉमिक एरिया (ईईए) में रहने वाले असली उपयोगकर्ताओं का डेटा Google के साथ शेयर करने के लिए, ईयू उपयोगकर्ता की सहमति से जुड़ी नीति और Ads Data Hub की नीति के मुताबिक सहमति ली है. यह ज़रूरी शर्त, Ads Data Hub के हर खाते पर लागू होती है. साथ ही, पहले पक्ष (ग्राहक) का नया डेटा अपलोड करने पर, इसे अपडेट करना ज़रूरी है. कोई भी उपयोगकर्ता, पूरे खाते की ओर से सहमति की पुष्टि कर सकता है.

ध्यान दें कि Google की सेवा से जुड़ी क्वेरी के लिए लागू होने वाले नियम, कुकी-मैचिंग की क्वेरी पर भी लागू होते हैं. ये नियम, विश्लेषण की क्वेरी पर भी लागू होते हैं. उदाहरण के लिए, मैच टेबल बनाते समय, ईईए में रहने वाले उपयोगकर्ताओं के लिए, अलग-अलग सेवाओं से जुड़ी क्वेरी नहीं चलाई जा सकतीं.

Ads Data Hub में सहमति की पुष्टि करने का तरीका जानने के लिए, यूरोपियन इकनॉमिक एरिया के लिए, सहमति लेने से जुड़ी ज़रूरी शर्तें लेख पढ़ें.

Google को आपकी मैच टेबल में डेटा भरने के लिए, आपको अपने डोमेन के हर उस पेज पर मैच टैग दिखाना होगा जहां आपको विज्ञापन डेटा मैच करना है. पिक्सल कहां प्लेस करना है, यह आपके विज्ञापन के लक्ष्यों पर निर्भर करेगा. उदाहरण के लिए, हो सकता है कि आपको अपने डोमेन पर आने वाले हर उपयोगकर्ता को मैच करना हो. इसके लिए, आपको लगभग सभी पेजों पर पिक्सल की ज़रूरत होगी. इसके अलावा, कन्वर्ज़न करने वाले उपयोगकर्ताओं को मैच किया जा सकता है. इसके लिए, कन्वर्ज़न पेज पर पिक्सल की ज़रूरत होगी. आम तौर पर, ज़्यादा पेजों पर पिक्सल प्लेस करने से, मैच रेट बेहतर होते हैं.

मैच टैग, 1x1 पिक्सल वाला पारदर्शी टैग होता है. इसमें, कुकी मैचिंग प्रोफ़ाइल आईडी और कोड में बदला गया उपयोगकर्ता या कुकी आईडी शामिल होता है:

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

यह मैच टैग, आपके और Google की कुकी मैचिंग सेवाओं के बीच बातचीत शुरू करता है.

प्रोसेस की खास जानकारी

  1. कोई उपयोगकर्ता, मैच टैग वाले पेज पर जाता है.
  2. मैच टैग, Google Marketing Platform, Google Ads, और YouTube की मैचिंग सेवाओं पर रीडायरेक्ट की एक सीरीज़ शुरू करता है. अनुरोधों में, आपकी वेबसाइट से मिले उपयोगकर्ता का आईडी या कुकी के साथ-साथ, मैचिंग सेवा के आईडी स्पेस में Google की कुकी शामिल होती है.
  3. अनुरोध पूरा होने की पुष्टि करने के लिए, ब्राउज़र को 1x1 पिक्सल वाला पारदर्शी टैग भेजा जाता है.

इस प्रोसेस को नीचे दिए गए डायग्राम में दिखाया गया है:

इस डायग्राम में, ब्राउज़र और मैचिंग सेवा की रीडायरेक्ट प्रोसेस के बारे में बताया गया है.

सेटअप

Ads Data Hub में कुकी मैचिंग सेट अप करने की प्रोसेस इस तरह है:

  1. अपने खाता प्रतिनिधि से संपर्क करें और उसे कुकी मैचिंग में अपनी दिलचस्पी के बारे में बताएं. वे आपके लक्ष्यों के बारे में चर्चा करेंगे और आपको अपने डोमेन पर ट्रैकिंग पिक्सल डिप्लॉय करने के बारे में ज़्यादा जानकारी देंगे.
  2. Ads Data Hub के विशेषज्ञ, तकनीकी ज़रूरी शर्तों और इस्तेमाल के उदाहरणों पर चर्चा करने के लिए, एक और बातचीत शुरू करेंगे.
  3. जब आप ट्रैकिंग पिक्सल और गड़बड़ी वाले एंडपॉइंट को डिप्लॉय कर रहे होंगे, तब Google आपकी मैच टेबल बनाएगा.

इन चरणों को पूरा करने के बाद, तुरंत कोई कार्रवाई करने की ज़रूरत नहीं है. Google, आपकी मैच टेबल में हर दिन2 डेटा भरेगा. इसलिए, आपको कुछ समय इंतज़ार करना होगा, ताकि आपकी टेबल में इतना डेटा आ जाए कि काम के मैच मिल सकें और एग्रीगेशन की ज़रूरी शर्तें पूरी हो सकें. यह इस बात पर निर्भर करता है कि उपयोगकर्ता आपकी साइट पर कितनी बार आते हैं. रोज़ाना विज़िटर वाली साइट, महीने में एक बार विज़िटर वाली साइट की तुलना में, इस पॉइंट पर ज़्यादा तेज़ी से पहुंचेगी. मैच की संख्या में कमी आने पर, आपकी मैच टेबल में ज़्यादा जानकारी वाला डेटा होगा.

मैच टेबल पर क्वेरी करना

जब आपकी मैच टेबल में निजता की जांच पूरी करने के लिए ज़रूरी डेटा आ जाता है, तब टेबल के ख़िलाफ़ क्वेरी चलाई जा सकती हैं.

पहले पक्ष (ग्राहक) के डेटा (1PD) की ओरिजनल टेबल को my_data से दिखाया जाता है. इसमें, व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई) और पीआईआई के अलावा अन्य डेटा, दोनों शामिल होते हैं. ओरिजनल टेबल का इस्तेमाल करने से, आपकी रिपोर्ट में ज़्यादा अहम जानकारी मिल सकती है. ऐसा इसलिए, क्योंकि यह स्कोप में मौजूद सभी 1PD डेटा को दिखाती है. वहीं, मैच टेबल में ऐसा नहीं होता.

Ads Data Hub स्कीमा में मौजूद हर टेबल के साथ, जिसमें user_id फ़ील्ड होता है, एक मैच टेबल भी होती है. उदाहरण के लिए, adh.google_ads_impressions टेबल के लिए, Ads Data Hub एक मैच टेबल भी जनरेट करता है. इसे कहा जाता है. इसमें आपके यूज़र आईडी शामिल होते हैं.adh.google_ads_impressions_match नीति के तहत अलग किए गए नेटवर्क टेबल के लिए, अलग-अलग मैच टेबल बनाई जाती हैं. उदाहरण के लिए, adh.google_ads_impressions_policy_isolated_network टेबल के लिए, Ads Data Hub एक मैच टेबल भी जनरेट करता है. इसे adh.google_ads_impressions_policy_isolated_network_match कहा जाता है. इसमें आपके यूज़र आईडी शामिल होते हैं.

इन टेबल में, ओरिजनल टेबल में मौजूद उपयोगकर्ताओं का सबसेट शामिल होता है. इसमें, user_id के आधार पर मैचिंग की जाती है. उदाहरण के लिए, अगर ओरिजनल टेबल में उपयोगकर्ता A और उपयोगकर्ता B का डेटा शामिल है, लेकिन सिर्फ़ उपयोगकर्ता A का डेटा मैच किया गया है, तो मैच टेबल में उपयोगकर्ता B का डेटा शामिल नहीं होगा.

मैच टेबल में external_cookie नाम का एक अतिरिक्त कॉलम होता है. इसमें, उपयोगकर्ता के आइडेंटिफ़ायर को बाइट के तौर पर सेव किया जाता है.

क्वेरी लिखते समय, फ़ील्ड के टाइप को ध्यान में रखना ज़रूरी है. SQL के कंपैरिज़न ऑपरेटर के लिए ज़रूरी है कि तुलना किए जा रहे लिटरल का टाइप एक ही हो. पहले पक्ष (ग्राहक) के डेटा की टेबल में user_id को किस तरह सेव किया गया है, इस पर निर्भर करता है कि डेटा को मैच करने से पहले, आपको टेबल में मौजूद वैल्यू को कोड में बदलना पड़ सकता है. मैच को सही तरीके से करने के लिए, आपको जॉइन की कुंजी को बाइट में बदलना होगा:

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

इसके अलावा, SQL में स्ट्रिंग की तुलना, केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) होती है. इसलिए, यह पक्का करने के लिए कि उनकी तुलना सही तरीके से की जा सके, आपको तुलना के दोनों ओर मौजूद स्ट्रिंग को कोड में बदलना पड़ सकता है.

यूज़र आईडी को कोड में बदलना

क्लाइंट-साइड पर यूज़र आईडी को कोड में बदलना

यह पक्का करने के लिए कि अलग-अलग आईडी फ़ॉर्मैट को यूआरएल के ज़रिए सुरक्षित तरीके से ट्रांसमिट किया जा सके, सभी आईडी को भेजने से पहले, यूआरएल के लिए सुरक्षित Base64 फ़ॉर्मैट में कोड में बदलना ज़रूरी है. यूआरएल के लिए सुरक्षित Base64 फ़ॉर्मैट में डिकोड किया गया आईडी, Ads Data Hub में external_cookie फ़ील्ड में उपलब्ध होगा. इसलिए, आपको अपना ओरिजनल आईडी पाने के लिए, कोड में बदलने से पहले किए गए सभी बदलावों को वापस लाना होगा.

अगर आपका आईडी हमेशा 24 वर्णों (या बाइट) या इससे कम का होता है, तो यूआरएल के लिए सुरक्षित Base64 फ़ॉर्मैट में कोड में बदले गए आईडी को पिक्सल में शामिल किया जा सकता है. जैसा कि उदाहरण 1 में दिखाया गया है. अगर आपका आईडी 24 वर्णों (या बाइट) से ज़्यादा का है, तो आपको इसे ऐसे फ़ॉर्मैट में बदलना होगा जो 24 बाइट या इससे कम का हो. कुछ मामलों में (जैसे, उदाहरण 2 में GUID), इसे बाइट-रिप्रेज़ेंटेशन में बदलना होता है. अन्य मामलों में, आपको Google को अपने आईडी का सबसेट (या हैश) भेजना पड़ सकता है. ध्यान दें कि किसी भी मामले में, आपको यह पक्का करना होगा कि SQL JOIN लिखा जा सके. इससे, पहले पक्ष (ग्राहक) की टेबल में मौजूद आईडी को उसी तरीके से कोड में बदला जा सकेगा.

उदाहरण 1

आपके यूज़र आईडी की वैल्यू हमेशा 24 बाइट की सीमा से कम होगी. Ads Data Hub का सुझाव है कि यूज़र आईडी को सीधे ADH पर भेजें. हालांकि, यूआरएल के ज़रिए ट्रांसफ़र करने के लिए, इसे यूआरएल के लिए सुरक्षित Base64 फ़ॉर्मैट में कोड में बदलें.

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);
उदाहरण 2

यूज़र आईडी के तौर पर, यूनिवर्सल यूनीक आइडेंटिफ़ायर (यूयूआईडी) की वैल्यू असाइन करें. जैसे: 123e4567-e89b-12d3-a456-426655440000.

मैचिंग करते समय, Ads Data Hub इन बदलावों का सुझाव देता है:

  1. यूयूआईडी को 36 वर्णों वाली स्ट्रिंग के तौर पर फ़ॉर्मैट किया जाता है.
  2. यूयूआईडी को हैक्साडेसिमल फ़ॉर्मैट से डिकोड करना.
  3. यूयूआईडी को बाइट के तौर पर फ़ॉर्मैट किया जाता है.
  4. बाइट को यूआरएल के लिए सुरक्षित Base64 फ़ॉर्मैट में कोड में बदलना.
  5. यूयूआईडी को स्ट्रिंग के तौर पर फ़ॉर्मैट किया जाता है.

इसे इस कोड की मदद से लागू किया जा सकता है:

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)

अगर Google के यूज़र आईडी से मैच होता है, तो external_cookie फ़ील्ड में आपका आईडी, बाइट वैल्यू के तौर पर शामिल होता है. अपने ओरिजनल आईडी को फिर से बनाने के लिए, यह बदलाव करना ज़रूरी है:

  1. external_cookie को बाइट के तौर पर फ़ॉर्मैट किया जाता है.
  2. external_cookie को हैक्साडेसिमल फ़ॉर्मैट में कोड में बदलना.
  3. external_cookie को स्ट्रिंग के तौर पर फ़ॉर्मैट किया जाता है.

Ads Data Hub में यूज़र आईडी को कोड में बदलना

अगर पहले पक्ष (ग्राहक) के डेटा में, यूयूआईडी स्ट्रिंग को किसी फ़ील्ड में सेव किया जाता है, तो आपको अपने डेटा को सही तरीके से जॉइन करने के लिए, उसे बाइट में बदलना होगा. जैसा कि ऊपर दिए गए उदाहरण में दिखाया गया है.

यहां दिए गए उदाहरण में, यूयूआईडी को कोड में बदलने और उसे एक्सटर्नल कुकी फ़ील्ड में जॉइन करने का तरीका बताया गया है:

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

ध्यान दें कि किसी पूर्णांक को बाइट में नहीं बदला जा सकता. अगर आपका यूज़र आईडी कोई पूर्णांक है (जैसा कि ऊपर दिए गए उदाहरण 1 में दिखाया गया है), तो आपको सबसे पहले इसे स्ट्रिंग के तौर पर बदलना होगा:

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

ध्यान रखें कि आपके डेटा को मैच करने के लिए ज़रूरी कोड, इस बात पर निर्भर करेगा कि आपने डेटा को किस तरह सेव किया है और Ads Data Hub को भेजने से पहले, आपने इसे किस तरह कोड में बदला है.

BigQuery SQL में स्ट्रिंग फ़ंक्शन के बारे में ज़्यादा जानें.

क्वेरी का उदाहरण

यहां दिए गए उदाहरण में, पहले पक्ष (ग्राहक) के डेटा को google_ads_impressions_match के साथ जॉइन किया गया है. इसके बाद, इन नतीजों को दूसरी क्वेरी में adh_google_ads_impressions के साथ जॉइन किया गया है.

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

previous_results के तौर पर सेव की गई पिछली क्वेरी के नतीजों के साथ, अब google_ads_impressions को जॉइन किया जा सकता है. इससे, आपके नतीजों में उन कैंपेन का डेटा जुड़ जाता है जिनमें 0 इंप्रेशन मिले हैं.

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. उदाहरण: 20% मैच रेट का मतलब है कि एग्रीगेशन के लिए 50 उपयोगकर्ताओं की ज़रूरी शर्त को पूरा करने के लिए, आपको हर लाइन के लिए 250 उपयोगकर्ताओं की ज़रूरत होगी. ऐसा इसलिए, क्योंकि 50 / .2 = 250.

  2. किसी खास दिन किए गए मैच, आपकी टेबल में दिखने से पहले 48 घंटे तक की देरी हो सकती है.