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

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

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

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

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

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

JSON পোস্ট বডি

চাবি প্রকার বর্ণনা
ব্যবহারকারীর আইডি স্ট্রিং ব্যবহারকারীর জন্য একটি অনন্য শনাক্তকারী। এই শনাক্তকারী সম্পর্কে আরও তথ্যের জন্য ক্রস-প্ল্যাটফর্ম বিশ্লেষণের জন্য ইউজার-আইডি দেখুন।
ব্যবহারকারীর ডেটা বস্তু ব্যবহারকারীকে শনাক্তকারী উন্নত ব্যবহারকারী ডেটা ফিল্ড।
ব্যবহারকারীর_ডেটা.sha256_ইমেল_ঠিকানা[] স্ট্রিং অ্যারে ব্যবহারকারীর হ্যাশ ও এনকোড করা ইমেল ঠিকানা। নিম্নরূপে স্বাভাবিকীকরণ করা হয়েছে:
ব্যবহারকারীর_ডেটা.sha256_ফোন_নম্বর[] স্ট্রিং অ্যারে ব্যবহারকারীর হ্যাশ করা ও এনকোড করা ফোন নম্বর। নিম্নরূপে স্বাভাবিকীকরণ করা হয়েছে:
  • সমস্ত অ-সংখ্যাসূচক অক্ষর মুছে ফেলুন
  • যোগ করুন + উপসর্গ
  • SHA256 অ্যালগরিদম ব্যবহার করে হ্যাশ
  • হেক্স স্ট্রিং ফরম্যাটে এনকোড করুন।
ব্যবহারকারীর_ডেটা.ঠিকানা[] অ্যারে ভৌতিক অবস্থানের ভিত্তিতে ব্যবহারকারীকে শনাক্ত করে।
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[].country স্ট্রিং ব্যবহারকারীর ঠিকানার জন্য দেশের কোড। ISO 3166-1 alpha-2 মান অনুযায়ী বিন্যাস করা।

ট্রান্সপোর্ট এবং পেলোড কীভাবে ফরম্যাট করা হয় সে সম্পর্কে আরও তথ্যের জন্য মেজারমেন্ট প্রোটোকল রেফারেন্স ডকুমেন্টেশন দেখুন।

ব্যবহারকারীর দেওয়া ডেটা পাঠান

gtag-এর বিপরীতে, যা ব্যবহারকারীর দেওয়া সংবেদনশীল ডেটা স্বয়ংক্রিয়ভাবে হ্যাশ করে, মেজারমেন্ট প্রোটোকল অনুযায়ী এপিআই (API) কল করার আগে একজন ডেভেলপারকে SHA256 নামক একটি নিরাপদ একমুখী হ্যাশিং অ্যালগরিদম ব্যবহার করে সংবেদনশীল ডেটা হ্যাশ করতে এবং হেক্স স্ট্রিং ফরম্যাটে এনকোড করতে হয়।

যেসব ইউজার ডেটা ফিল্ডের নামের শুরুতে sha256 প্রিফিক্স রয়েছে, সেগুলোতে শুধুমাত্র হ্যাশ করা এবং হেক্স-এনকোডেড ভ্যালু দিয়ে পূরণ করতে হবে।

নিম্নলিখিত উদাহরণ কোডটি প্রয়োজনীয় এনক্রিপশন এবং এনকোডিং ধাপগুলো সম্পাদন করে:

নোড.জেএস

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 ) অ্যারের পরিবর্তে একটি একক মান পাস করা যেতে পারে।

নিম্নলিখিত নমুনা কোডটি মেজারমেন্ট প্রোটোকলকে কল করে এবং ইউজার-আইডি সহ ব্যবহারকারীর ডেটা প্রেরণ করে।

নোড.জেএস

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

একাধিক মান

ডেভেলপাররা স্ট্রিং-এর পরিবর্তে অ্যারে ভ্যালু ব্যবহার করে ঐচ্ছিকভাবে একাধিক ভ্যালু (ফোন ও ইমেইলের জন্য সর্বোচ্চ ৩টি এবং ঠিকানার জন্য ২টি) প্রদান করতে পারেন। আপনি যদি একাধিক ভ্যালু সংগ্রহ করেন, তবে এটি প্রদান করলে মিল খুঁজে পাওয়ার সম্ভাবনা বেড়ে যায়।

নোড.জেএস

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