कुकी मैचिंग

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

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

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

हालांकि, असरदार होने के बावजूद, कुकी मैचिंग की कुछ सीमाएं होती हैं:

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

Ads Data Hub में पहले पक्ष (ग्राहक) के डेटा का इस्तेमाल हो सके, यह पक्का करने के लिए आपको पुष्टि करनी होगी कि आपने ईयू उपयोगकर्ता की सहमति से जुड़ी नीति और Ads Data Hub नीति के मुताबिक, ईईए के असली उपयोगकर्ताओं का डेटा, Google के साथ शेयर करने के लिए उचित सहमति ली है. यह शर्त, 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 से दिखाया जाता है. इसमें व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई) और बिना व्यक्तिगत पहचान से जुड़ी जानकारी, दोनों शामिल हैं. ओरिजनल टेबल का इस्तेमाल करने से आपकी रिपोर्ट बेहतर हो सकती हैं और आपको ज़्यादा इनसाइट भी मिल सकती हैं. ऐसा इसलिए, क्योंकि _match टेबल की तुलना में, ओरिजनल टेबल में मौजूद पूरे 1PD डेटा को दिखाया जाता है.

Ads Data Hub स्कीमा की हर टेबल के साथ *_match टेबल होती है, जिसमें 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 नाम का एक अतिरिक्त कॉलम होता है, जिसमें आपकी कुकी बाइट के तौर पर सेव होती है.

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

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

इसके अलावा, एसक्यूएल में स्ट्रिंग की तुलनाएं बड़े अक्षरों के इस्तेमाल को लेकर संवेदनशील होती हैं. इस वजह से आपको यह पक्का करने के लिए कि तुलना की जा सके, इनकी दोनों तरफ़ की स्ट्रिंग को कोड में बदलना पड़ सकता है.

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

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

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

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

उदाहरण 1

आपके यूज़र आईडी की वैल्यू हमेशा 24-बाइट की सीमा से कम होगी. Ads Data Hub का सुझाव है कि आप अपने यूज़र आईडी को सीधे ADH को भेजें. यूआरएल बदलने के लिए, User-ID को यूआरएल-सुरक्षित 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);
दूसरा उदाहरण

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

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

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

इसे नीचे दिए गए कोड के साथ लागू किया जा सकता है:

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 एसक्यूएल में स्ट्रिंग फ़ंक्शन के बारे में ज़्यादा जानें.

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

नीचे दिया गया उदाहरण, पहले पक्ष (ग्राहक) के डेटा को 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 में शामिल हो सकते हैं. इससे आपके नतीजों में, बिना इंप्रेशन वाले कैंपेन का डेटा जुड़ जाता है.

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

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