कुकी मैचिंग

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

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

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

कुकी मैचिंग की सुविधा काफ़ी असरदार है, लेकिन इसमें कुछ सीमाएं हैं:

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

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

ध्यान दें कि विश्लेषण क्वेरी पर लागू होने वाले 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_youtube टेबल के लिए, Ads Data Hub एक मैच टेबल भी जनरेट करता है. इसे adh.google_ads_impressions_policy_isolated_youtube_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 बाइट या उससे कम के तौर पर दिखाना होगा. कुछ मामलों में, जैसे कि दूसरे उदाहरण में दिए गए 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 घंटे लग सकते हैं.