मेज़रमेंट प्रोटोकॉल का इस्तेमाल करके, User-ID की मदद से उपयोगकर्ता से मिला डेटा भेजें

gtag की तरह ही, Google Analytics 4 के लिए 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[] स्ट्रिंग अरै उपयोगकर्ता का हैश और कोड में बदला गया फ़ोन नंबर. इस तरह से नॉर्मलाइज़ की गई:
  • बिना अंक वाले सभी वर्ण हटाएं
  • + प्रीफ़िक्स जोड़ें
  • SHA256 एल्गोरिदम का इस्तेमाल करके हैश
  • उसे हेक्स स्ट्रिंग फ़ॉर्मैट के साथ एन्कोड करें.
user_data.address[] श्रेणी जगह की जानकारी के आधार पर उपयोगकर्ता की पहचान करता है.
user_data.address[].sha256_first_name स्ट्रिंग उपयोगकर्ता का नाम हैश और कोड में बदला गया. इस तरह से नॉर्मलाइज़ की गई:
  • अंक और प्रतीक वाले वर्ण हटाएं
  • लोअरकेस
  • शुरू और आखिर में मौजूद स्पेस हटाएं
  • SHA256 एल्गोरिदम का इस्तेमाल करके हैश
  • उसे हेक्स स्ट्रिंग फ़ॉर्मैट के साथ एन्कोड करें.
user_data.address[].sha256_last_name स्ट्रिंग उपयोगकर्ता का हैश और कोड में बदला गया उपनाम. इस तरह से नॉर्मलाइज़ की गई:
  • अंक और प्रतीक वाले वर्ण हटाएं
  • लोअरकेस
  • शुरू और आखिर में मौजूद स्पेस हटाएं
  • SHA256 एल्गोरिदम का इस्तेमाल करके हैश
  • उसे हेक्स स्ट्रिंग फ़ॉर्मैट के साथ एन्कोड करें.
user_data.address[].sha256_street स्ट्रिंग हैश और कोड में बदली गई सड़क और उपयोगकर्ता की संख्या. इस तरह से नॉर्मलाइज़ की गई:
  • सिंबल वाले वर्ण हटाएं
  • लोअरकेस
  • शुरू और आखिर में मौजूद स्पेस हटाएं
  • SHA256 एल्गोरिदम का इस्तेमाल करके हैश
  • उसे हेक्स स्ट्रिंग फ़ॉर्मैट के साथ एन्कोड करें.
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 value_utf8 = encoder.encode(value);
  // Compute the hash (digest) using the SHA-256 algorithm.
  const hash_sha256 = await subtle.digest('SHA-256', value_utf8);
  // Convert buffer to byte array.
  const hash_array = Array.from(new Uint8Array(hash_sha256));
  // Return a hex-encoded string.
  return hash_array.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) को अरे के बजाय एक ही वैल्यू का इस्तेमाल किया जा सकता है.

नीचे दिया गया सैंपल कोड, मेज़रमेंट प्रोटोकॉल को कॉल करता है और उपयोगकर्ता-आईडी के साथ उपयोगकर्ता का डेटा पास करता है.

Node.js

const measurement_id = 'G-XXXXXXXXXX';
const api_secret = '<secret_value>';

// 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=${measurement_id}&api_secret=${api_secret}`, {
  method: "POST",
  body: JSON.stringify({
    client_id: 'XXXXXXXXXX.YYYYYYYYYY',
    user_id: "XXX",
    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 measurement_id = 'G-XXXXXXXXXX';
const api_secret = '<secret_value>';

fetch(`https://www.google-analytics.com/mp/collect?measurement_id=${measurement_id}&api_secret=${api_secret}`, {
  method: "POST",
  body: JSON.stringify({
    client_id: 'XXXXXXXXXX.YYYYYYYYYY',
    user_id: "XXX",
    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
      }]
    }
  })
});