कुकी मैचिंग एक ऐसी प्रोसेस है जिसमें विज्ञापन देने वाला व्यक्ति या कंपनी या वेंडर, अपने डोमेन की कुकी को 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 फ़्रेमवर्क के तहत अनुमति दी है.
पहले पक्ष (ग्राहक) की सहमति की पुष्टि
यह पक्का करने के लिए कि 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 की कुकी मैचिंग सेवाओं के बीच कम्यूनिकेशन शुरू करता है.
सिलसिलेवार तरीके से खास जानकारी
- कोई उपयोगकर्ता मैच टैग वाले पेज पर जाता है.
- मैच टैग, Google Marketing Platform, Google Ads, और YouTube की मैचिंग सेवाओं पर रीडायरेक्ट की एक सीरीज़ शुरू करता है. अनुरोधों में, उस उपयोगकर्ता का आईडी या आपकी वेबसाइट की कुकी शामिल होती है. साथ ही, मैच करने वाली हर सेवा के आईडी स्पेस में Google की कुकी शामिल होती है.
- अनुरोध पूरा होने की पुष्टि करने के लिए, ब्राउज़र को 1x1 पिक्सल का पारदर्शी इमेज फ़ाइल फ़ॉर्मैट भेजा जाता है.
इस प्रोसेस को इस डायग्राम में दिखाया गया है:
सेटअप
Ads Data Hub में कुकी मैचिंग सेट अप करने का तरीका यहां दिया गया है:
- अपने खाता प्रतिनिधि से संपर्क करें और कुकी मैचिंग में अपनी दिलचस्पी के बारे में बताएं. वे आपके लक्ष्यों के बारे में चर्चा करेंगे. साथ ही, आपके डोमेन पर ट्रैकिंग पिक्सल को डिप्लॉय करने के बारे में ज़्यादा जानकारी देंगे.
- Ads Data Hub के विशेषज्ञ, तकनीकी ज़रूरी शर्तों और इस्तेमाल के उदाहरणों पर चर्चा करने के लिए, एक और बातचीत शुरू करेंगे.
- ट्रैकिंग पिक्सल और गड़बड़ी वाले एंडपॉइंट को डिप्लॉय करते समय, 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
कहा जाता है. यह उपयोगकर्ता के आइडेंटिफ़ायर को BYTES के तौर पर सेव करता है.
क्वेरी लिखते समय, फ़ील्ड के टाइप को ध्यान में रखना ज़रूरी है. SQL कंपैरिज़न ऑपरेटर यह उम्मीद करते हैं कि तुलना किए जा रहे लिटरल एक ही टाइप के हों. आपकी टेबल में पहले पक्ष (ग्राहक) का डेटा किस तरह से सेव किया गया है, इसके आधार पर आपको डेटा मैच करने से पहले टेबल में मौजूद वैल्यू को एन्कोड करना पड़ सकता है.user_id
मैचिंग के लिए, आपको अपनी जॉइन की को BYTES में काटना होगा:
JOIN ON
adh.google_ads_impressions_match.external_cookie = CAST(my_data.user_id AS BYTES)
इसके अलावा, एसक्यूएल में स्ट्रिंग की तुलना करते समय, कैपिटल लेटर का ध्यान रखा जाता है. इसलिए, आपको तुलना के दोनों ओर स्ट्रिंग को एन्कोड करने की ज़रूरत पड़ सकती है, ताकि यह पक्का किया जा सके कि उनकी सटीक तुलना की जा सके.
यूज़र आईडी को कोड में बदलना
क्लाइंट-साइड पर यूज़र आईडी को कोड में बदलना
यह पक्का करने के लिए कि अलग-अलग आईडी फ़ॉर्मैट को यूआरएल के ज़रिए सुरक्षित तरीके से भेजा जा सके, सभी आईडी को भेजने से पहले यूआरएल-सेफ़ Base64 फ़ॉर्मैट में कोड में बदलना ज़रूरी है. URL-सेफ़ Base64 फ़ॉर्मैट में डिकोड किया गया आईडी, Ads Data Hub में external_cookie
फ़ील्ड में उपलब्ध कराया जाएगा. इसलिए, आपको अपने ओरिजनल आईडी को पाने के लिए, एन्कोड करने से पहले किए गए सभी बदलावों को पहले जैसा करना होगा.
अगर आपका आईडी हमेशा 24 वर्णों (या बाइट) या इससे कम का होता है, तो पिक्सल में यूआरएल के लिए सुरक्षित Base64 कोड में बदला गया आईडी शामिल किया जा सकता है. इसे पहले उदाहरण में दिखाया गया है. अगर आपका आईडी 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 इन ट्रांसफ़ॉर्मेशन का सुझाव देता है:
- यूयूआईडी को 36 वर्णों वाली स्ट्रिंग के तौर पर फ़ॉर्मैट किया जाता है.
- यूयूआईडी को हैक्साडेसिमल में डिकोड करता है.
- यूयूआईडी को बाइट के तौर पर फ़ॉर्मैट किया जाता है.
- यूआरएल के लिए सुरक्षित Base64 कोड में बाइट को बदलता है.
- यूयूआईडी को स्ट्रिंग के तौर पर फ़ॉर्मैट किया जाता है.
इसे इस कोड की मदद से लागू किया जा सकता है:
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
फ़ील्ड में आपका आईडी, बाइट वैल्यू के तौर पर मौजूद होता है. आपके ओरिजनल आईडी को फिर से बनाने के लिए, यह बदलाव करना ज़रूरी है:
external_cookie
को बाइट के तौर पर फ़ॉर्मैट किया जाता है.- हेक्साडेसिमल में कोड में बदलें
external_cookie
. external_cookie
को स्ट्रिंग के तौर पर फ़ॉर्मैट किया गया है.
Ads Data Hub में उपयोगकर्ता आईडी को कोड में बदलना
अगर आपने यूयूआईडी स्ट्रिंग को पहले पक्ष के डेटा के किसी फ़ील्ड में सेव किया है, तो आपको उसे बाइट में बदलना होगा. ऐसा ऊपर दिए गए उदाहरण की तरह करें, ताकि आपका डेटा सही तरीके से जुड़ सके.
यहां दिए गए उदाहरण में, यूयूआईडी को एन्कोड करने और उसे बाहरी कुकी फ़ील्ड में जोड़ने का तरीका बताया गया है:
JOIN my_data ON imp.external_cookie = FROM_HEX(REPLACE(my_data.uuid, '-', ''))
ध्यान दें कि किसी पूर्णांक को बाइट में नहीं बदला जा सकता. अगर आपका उपयोगकर्ता आईडी कोई पूर्णांक है (ऊपर दिए गए पहले उदाहरण की तरह), तो आपको पहले इसे स्ट्रिंग के तौर पर काटना होगा:
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
में शामिल हुआ जा सकता है. इससे, आपके नतीजों में उन कैंपेन का डेटा जुड़ जाता है जिन्हें कोई इंप्रेशन नहीं मिला है.
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)