gtag का इस्तेमाल करने की तरह ही, Google Analytics मेज़रमेंट प्रोटोकॉल का इस्तेमाल करके, उपयोगकर्ता से मिला डेटा और User-ID भेजा जा सकता है. इसका इस्तेमाल, व्यवहार और कन्वर्ज़न मेज़रमेंट को बेहतर बनाने के लिए किया जा सकता है.
मेज़रमेंट प्रोटोकॉल के अनुरोध के साथ उपयोगकर्ता से मिला डेटा भेजने के लिए, JSON पेलोड में user_data पैरामीटर जोड़ें. हमारा सुझाव है कि जब भी user_data पैरामीटर की वैल्यू दी जाती है, तब user_id पैरामीटर की वैल्यू भी दी जाए. इससे, सबसे सटीक मेज़रमेंट और सुविधा के काम करने के तरीके को बेहतर बनाने में मदद मिलती है.
मेज़रमेंट प्रोटोकॉल, सामान्य बनाने और हैशिंग के लिए उसी एल्गोरिदम का इस्तेमाल कर रहा है जिसका इस्तेमाल Google Ads API की बेहतर मेज़रमेंट सुविधा करती है.
गोपनीयता से जुड़ी चिंताओं को दूर करने के लिए, यहां दिए गए डेटा को अपलोड करने से पहले, SHA-256 एल्गोरिदम का इस्तेमाल करके हैश करना ज़रूरी है: ईमेल पते, फ़ोन नंबर, नाम, उपनाम, और मोहल्ले के पते. हैश की गई वैल्यू को हेक्स स्ट्रिंग फ़ॉर्मैट में कोड में बदला जाना चाहिए. जैसे, 88d7ecb5c5b21d7b1. हेक्स स्ट्रिंग फ़ॉर्मैट, सिर्फ़ हेक्साडेसिमल अंक वाला स्ट्रिंग ऑब्जेक्ट होता है.
हैश के नतीजों का स्टैंडर्ड तय करने के लिए, इनमें से किसी एक वैल्यू को हैश करने से पहले, आपको ये काम करने होंगे:
- आगे और पीछे की खाली सफ़ेद जगहों को हटाएं.
- टेक्स्ट को अंग्रेज़ी के छोटे अक्षरों में बदलें.
- फ़ोन नंबरों को E164 स्टैंडर्ड के हिसाब से फ़ॉर्मैट करें.
gmail.comऔरgooglemail.comईमेल पतों के डोमेन नेम से पहले के सभी पीरियड (.) हटाएं.
JSON पोस्ट बॉडी
| कुंजी | टाइप | ब्यौरा |
|---|---|---|
| user_id | स्ट्रिंग | यह कुकी, उपयोगकर्ता के लिए यूनीक आइडेंटिफ़ायर होती है. इस आइडेंटिफ़ायर के बारे में ज़्यादा जानने के लिए, क्रॉस-प्लैटफ़ॉर्म विश्लेषण के लिए User-ID देखें. |
| user_data | ऑब्जेक्ट | उपयोगकर्ता की पहचान करने वाले उपयोगकर्ता डेटा फ़ील्ड को बेहतर बनाया गया है. |
| user_data.sha256_email_address[] | स्ट्रिंग अरै | उपयोगकर्ता का हैश और कोड में बदला गया ईमेल पता.
सामान्य तौर पर इस तरह दिखाया जाता है:
|
| user_data.sha256_phone_number[] | स्ट्रिंग अरै | उपयोगकर्ता का हैश और कोड में बदला गया फ़ोन नंबर.
सामान्य तौर पर इस तरह दिखाया जाता है:
|
| user_data.address[] | श्रेणी | यह कुकी, उपयोगकर्ता की जगह की जानकारी के आधार पर उसकी पहचान करती है. |
| user_data.address[].sha256_first_name | स्ट्रिंग | उपयोगकर्ता का हैश और कोड में बदला गया नाम.
सामान्य तौर पर इस तरह दिखाया जाता है:
|
| user_data.address[].sha256_last_name | स्ट्रिंग | उपयोगकर्ता का हैश और कोड में बदला गया उपनाम.
सामान्य तौर पर इस तरह दिखाया जाता है:
|
| user_data.address[].sha256_street | स्ट्रिंग | उपयोगकर्ता की सड़क और घर के नंबर को हैश और कोड किया गया है.
सामान्य तौर पर इस तरह दिखाया जाता है:
|
| user_data.address[].city | स्ट्रिंग | उपयोगकर्ता के पते का शहर.
सामान्य तौर पर इस तरह दिखाया जाता है:
|
| user_data.address[].region | स्ट्रिंग | उपयोगकर्ता के पते का राज्य या इलाका.
सामान्य तौर पर इस तरह दिखाया जाता है:
|
| user_data.address[].postal_code | स्ट्रिंग | उपयोगकर्ता के पते का पिन कोड.
सामान्य तौर पर इस तरह दिखाया जाता है:
|
| user_data.address[].country | स्ट्रिंग | उपयोगकर्ता के पते के लिए देश का कोड. ISO 3166-1 alpha-2 स्टैंडर्ड के मुताबिक फ़ॉर्मैट किया गया. |
ट्रांसपोर्ट और पेलोड को कैसे फ़ॉर्मैट किया जाता है, इस बारे में ज़्यादा जानने के लिए, मेज़रमेंट प्रोटोकॉल का रेफ़रंस दस्तावेज़ देखें.
उपयोगकर्ता से मिला डेटा भेजना
gtag, उपयोगकर्ता से मिले संवेदनशील डेटा को अपने-आप हैश कर देता है. हालांकि, मेज़रमेंट प्रोटोकॉल के लिए, डेवलपर को उपयोगकर्ता से मिले संवेदनशील डेटा को हैश करना होता है. इसके लिए, उसे SHA256 नाम के सुरक्षित हैशिंग एल्गोरिदम का इस्तेमाल करना होता है. साथ ही, एपीआई को कॉल करने से पहले, उसे हेक्स स्ट्रिंग फ़ॉर्मैट का इस्तेमाल करके डेटा को कोड में बदलना होता है.
उपयोगकर्ता के डेटा के ऐसे सभी फ़ील्ड जिनमें sha256 प्रीफ़िक्स से शुरू होने वाले नाम हैं उनमें सिर्फ़ हैश की गई और हेक्स-कोड में बदली गई वैल्यू भरी जानी चाहिए.
यहां दिए गए उदाहरण कोड में, एन्क्रिप्ट (सुरक्षित) करने और कोड में बदलने के ज़रूरी चरण पूरे किए गए हैं:
Node.js
const { subtle } = require('crypto').webcrypto;
async function populateSensitiveUserData(value) {
const encoder = new TextEncoder();
// Convert a string value to UTF-8 encoded text.
const valueUtf8 = encoder.encode(value);
// Compute the hash (digest) using the SHA-256 algorithm.
const hashSha256 = await subtle.digest('SHA-256', valueUtf8);
// Convert buffer to byte array.
const hashArray = Array.from(new Uint8Array(hashSha256));
// Return a hex-encoded string.
return hashArray.map(b => b.toString(16).padStart(2, "0")).join('');
};
// Test the encryption function by calling it.
async function main() {
return await populateSensitiveUserData('<value>');
}
main()
.then(v => console.log(v))
.catch(err => console.error(err));
शॉर्टकट के तौर पर, user_data ऑब्जेक्ट में मौजूद सभी दोहराए गए फ़ील्ड (जैसे कि address, sha256_email_address, sha256_phone_number) को कलेक्शन के बजाय एक वैल्यू दी जा सकती है.
नीचे दिए गए सैंपल कोड में, मेज़रमेंट प्रोटोकॉल को कॉल किया गया है. साथ ही, इसमें User-ID के साथ उपयोगकर्ता का डेटा पास किया गया है.
Node.js
const measurementId = "MEASUREMENT_ID";
const apiSecret = "API_SECRET";
// Populate mock User Data using the `populateSensitiveUserData` function defined
// above.
const yourEmailSha256Variable = await populateSensitiveUserData('test@yourdomain.com');
const yourPhoneSha256Variable = await populateSensitiveUserData('+15555555555');
const yourFirstNameSha256Variable = await populateSensitiveUserData('john');
const yourLastNameSha256Variable = await populateSensitiveUserData('doe');
const yourStreetAddressSha256Variable = await populateSensitiveUserData('123 main street');
// Populate mock unencrypted user data.
const yourCityVariable = 'san francisco';
const yourRegionVariable = 'california';
const yourPostalCodeVariable = '94000';
const yourCountryVariable = 'US';
fetch(`https://www.google-analytics.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret}`, {
method: "POST",
body: JSON.stringify({
client_id: "CLIENT_ID",
user_id: "USER_ID",
events: [{
name: "purchase"
}],
user_data: {
sha256_email_address: yourEmailSha256Variable,
sha256_phone_number: yourPhoneSha256Variable,
address: {
sha256_first_name: yourFirstNameSha256Variable,
sha256_last_name: yourLastNameSha256Variable,
sha256_street: yourStreetAddressSha256Variable,
city: yourCityVariable,
region: yourRegionVariable,
postal_code: yourPostalCodeVariable,
country: yourCountryVariable
}
}
})
});
एक से ज़्यादा वैल्यू
डेवलपर, किसी स्ट्रिंग के बजाय कलेक्शन का इस्तेमाल करके एक से ज़्यादा वैल्यू देने का विकल्प दे सकते हैं. फ़ोन और ईमेल के लिए तीन वैल्यू तक और पते के लिए दो वैल्यू तक देने का विकल्प दिया जा सकता है. अगर एक से ज़्यादा वैल्यू कैप्चर की जाती है, तो इसे देने से मैच होने की संभावना बढ़ जाएगी.
Node.js
const measurementId = "MEASUREMENT_ID";
const apiSecret = "API_SECRET";
fetch(`https://www.google-analytics.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret}`, {
method: "POST",
body: JSON.stringify({
client_id: "CLIENT_ID",
user_id: "USER_ID",
events: [{
name: "purchase"
}],
user_data: {
sha256_email_address: [yourEmailSha256Variable1, yourEmailSha256Variable2],
sha256_phone_number: [yourPhoneSha256Variable1, yourPhoneSha256Variable2],
address: [{
sha256_first_name: yourFirstNameSha256Variable1,
sha256_last_name: yourLastNameSha256Variable1,
sha256_street: yourStreetAddressSha256Variable1,
city: yourCityVariable1,
region: yourRegionVariable1,
postal_code: yourPostalCodeVariable1,
country: yourCountryVariable1
},{
sha256_first_name: yourFirstNameSha256Variable2,
sha256_last_name: yourLastNameSha256Variable2,
sha256_street: yourStreetAddressSha256Variable2,
city: yourCityVariable2,
region: yourRegionVariable2,
postal_code: yourPostalCodeVariable2,
country: yourCountryVariable2
}]
}
})
});