পরিমাপ প্রোটোকল ব্যবহার করে ব্যবহারকারী-আইডি সহ ব্যবহারকারী-প্রদত্ত ডেটা পাঠান

gtag ব্যবহার করার মতোই, Google Analytics 4-এর জন্য Google Analytics পরিমাপ প্রোটোকল ব্যবহার করে ব্যবহারকারী-আইডি সহ ব্যবহারকারী-প্রদত্ত ডেটা পাঠানো সম্ভব, যা আচরণ এবং রূপান্তর পরিমাপ উন্নত করতে ব্যবহার করা যেতে পারে।

একটি পরিমাপ প্রোটোকল অনুরোধের সাথে ব্যবহারকারীর দেওয়া ডেটা পাঠাতে, JSON পেলোডে user_data প্যারামিটার যোগ করুন। user_id প্যারামিটারটি অবশ্যই উপস্থিত থাকতে হবে যখনই user_data প্রদান করা হয়।

পরিমাপ প্রোটোকল Google বিজ্ঞাপন API উন্নত পরিমাপ বৈশিষ্ট্য হিসাবে একই স্বাভাবিককরণ এবং হ্যাশিং অ্যালগরিদম ব্যবহার করছে। গোপনীয়তার উদ্বেগের জন্য, ইমেল ঠিকানা, ফোন নম্বর, প্রথম নাম, শেষ নাম এবং রাস্তার ঠিকানাগুলি আপলোড করার আগে SHA-256 অ্যালগরিদম ব্যবহার করে হ্যাশ করতে হবে৷ হ্যাশ করা মানটি হেক্স স্ট্রিং বিন্যাসে এনকোড করা উচিত (শুধুমাত্র হেক্সাডেসিমেল সংখ্যা ধারণকারী স্ট্রিং অবজেক্ট), যেমন 88d7ecb5c5b21d7b1

হ্যাশ ফলাফল মানক করার জন্য, এই মানগুলির একটি হ্যাশ করার আগে আপনাকে অবশ্যই:

  • অগ্রণী এবং পিছনের হোয়াইটস্পেসগুলি সরান৷
  • লেখাটিকে ছোট হাতের অক্ষরে রূপান্তর করুন।
  • E164 মান অনুযায়ী ফোন নম্বর ফরম্যাট করুন।
  • gmail.com এবং googlemail.com ইমেল ঠিকানাগুলিতে ডোমেন নামের আগে থাকা সমস্ত সময়কাল (.) সরান৷

JSON পোস্ট বডি

চাবি টাইপ বর্ণনা
ব্যবহারকারী আইডি স্ট্রিং ব্যবহারকারীর জন্য একটি অনন্য শনাক্তকারী। এই শনাক্তকারী সম্পর্কে আরও তথ্যের জন্য ক্রস-প্ল্যাটফর্ম বিশ্লেষণের জন্য ব্যবহারকারী-আইডি দেখুন।
ব্যবহারকারী তথ্য বস্তু বর্ধিত ব্যবহারকারীর ডেটা ক্ষেত্রগুলি একজন ব্যবহারকারীকে সনাক্ত করে।
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 নামক একটি নিরাপদ ওয়ান-ওয়ে হ্যাশিং অ্যালগরিদম ব্যবহার করে সংবেদনশীল ব্যবহারকারী-প্রদত্ত ডেটা হ্যাশ করতে হবে এবং API কল করার আগে হেক্স স্ট্রিং ফর্ম্যাট ব্যবহার করে এনকোড করতে হবে।

তাদের নামের 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
      }
    }
  })
});

একাধিক মান

বিকাশকারীরা ঐচ্ছিকভাবে একটি স্ট্রিংয়ের পরিবর্তে একটি অ্যারে মান ব্যবহার করে একাধিক মান (ফোন এবং ইমেলের জন্য 3 এবং ঠিকানার জন্য 2 পর্যন্ত) প্রদান করতে পারে। আপনি যদি একাধিক মান ক্যাপচার করেন তবে এটি প্রদান করলে একটি ম্যাচ হওয়ার সম্ভাবনা বৃদ্ধি পাবে।

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
      }]
    }
  })
});