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

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[] स्ट्रिंग अरै उपयोगकर्ता का हैश किया गया और एनकोड किया गया फ़ोन नंबर. इसे इस तरह सामान्य बनाया जाता है:
  • गैर-डिजिट वाले सभी वर्ण हटाएं
  • + प्रीफ़िक्स जोड़ें
  • 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 स्टैंडर्ड के हिसाब से फ़ॉर्मैट किया जाता है.

ट्रांसपोर्ट और पेलोड को फ़ॉर्मैट करने के तरीके के बारे में ज़्यादा जानने के लिए, मेज़रमेंट प्रोटोकॉल के रेफ़रंस से जुड़ा दस्तावेज़ देखें.

उपयोगकर्ता से मिला डेटा भेजना

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",
  headers: {
    "Content-Type": "application/json"
  },
  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",
  headers: {
    "Content-Type": "application/json"
  },
  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
      }]
    }
  })
});