এই নির্দেশিকায় ব্যাখ্যা করা হয়েছে কীভাবে আপনি গুগল অ্যানালিটিক্স মেজারমেন্ট প্রোটোকল ওয়েব এবং অ্যাপ স্ট্রিম ইভেন্টগুলো একটি গুগল অ্যানালিটিক্স সার্ভারে পাঠাতে পারেন, যাতে আপনি আপনার গুগল অ্যানালিটিক্স রিপোর্টগুলোতে মেজারমেন্ট প্রোটোকল ইভেন্টগুলো দেখতে পারেন।
আপনি ওয়েব স্ট্রিমে নাকি অ্যাপ স্ট্রিমে ইভেন্ট পাঠাচ্ছেন, তার ওপর নির্ভর করে মেজারমেন্ট প্রোটোকল অনুরোধের জন্য প্রয়োজনীয় আইডেন্টিফায়ার এবং প্যারামিটারসমূহ নির্ধারিত হয়।
- ওয়েব স্ট্রিমের ক্ষেত্রে (যা সাধারণত gtag.js বা Google Tag Manager দিয়ে পরিচালিত হয়), ব্যবহারকারীকে শনাক্ত করার জন্য রিকোয়েস্ট URL-এ
measurement_idএবং JSON বডিতেclient_idব্যবহার করা হয়।client_idআপনার ওয়েবসাইটে থাকা Google Analytics ট্যাগ দ্বারা তৈরি ID-র সাথে মিলতে হবে। - অ্যাপ স্ট্রিমের (যা ফায়ারবেস এসডিকে দ্বারা পরিচালিত) ক্ষেত্রে, আপনাকে রিকোয়েস্ট ইউআরএল-এ
firebase_app_idএবং JSON বডিতেapp_instance_idব্যবহার করতে হবে, যা গুগল অ্যানালিটিক্স ফর ফায়ারবেস এসডিকে দ্বারা সরবরাহ করা হয়।
এই নির্দেশিকায় উভয় পরিস্থিতির জন্যই উদাহরণ দেওয়া হয়েছে।
স্ট্রিম টাইপ অনুসারে মূল অনুরোধের উপাদানসমূহ
| উপাদান | ওয়েব স্ট্রিম (gtag.js/GTM) | অ্যাপ স্ট্রিম (ফায়ারবেস) |
|---|---|---|
| ডেটা স্ট্রিম ইউআরএল প্যারামিটার | measurement_id | firebase_app_id |
| এপিআই গোপন ইউআরএল প্যারামিটার | প্রয়োজনীয় | প্রয়োজনীয় |
| ডিভাইস আইডি JSON বডি ফিল্ড | client_id | app_instance_id |
এই নির্দেশিকায় আপনি যে প্ল্যাটফর্মটি দেখতে চান তা বেছে নিন:
এই ট্যাবে Google Analytics for Firebase SDK ব্যবহার করে আপনার সার্ভার থেকে এমন ইভেন্ট পাঠানোর নির্দেশাবলী দেখানো হয়েছে, যা একটি অ্যাপ স্ট্রিমে ব্যবহারকারীর কার্যকলাপের সাথে সম্পর্কিত। মনে রাখবেন যে এই অনুরোধগুলিতে firebase_app_id এবং app_instance_id ব্যবহৃত হয়।
পূর্বশর্ত
মেজারমেন্ট প্রোটোকল ব্যবহার করে ইভেন্ট পাঠাতে, আপনার গুগল অ্যানালিটিক্স প্রপার্টি বা ফায়ারবেস প্রজেক্ট থেকে নির্দিষ্ট আইডেন্টিফায়ার প্রয়োজন।
এপিআই গোপনীয়তা
আপনার অনুরোধগুলো প্রমাণীকরণের জন্য api_secret ব্যবহার করা হয়। এই গোপনীয়তাটি গোপন রাখা অত্যন্ত গুরুত্বপূর্ণ।
একটি নতুন গোপনীয়তা তৈরি করতে:
- গুগল অ্যানালিটিক্সে যান এবং আপনার অ্যাকাউন্ট ও প্রপার্টিতে নেভিগেট করুন।
- নিচের বাম দিকে থাকা অ্যাডমিন- এ ক্লিক করুন।
- ডেটা সংগ্রহ ও পরিবর্তন-এর অধীনে, ডেটা স্ট্রিম-এ ক্লিক করুন।
- আপনার ওয়েব বা অ্যাপ ডেটা স্ট্রিম নির্বাচন করুন।
- মেজারমেন্ট প্রোটোকল এপিআই সিক্রেটস-এ ক্লিক করুন।
- তৈরি করুন- এ ক্লিক করুন।
- গোপনীয়তার জন্য একটি ডাকনাম লিখুন এবং তৈরি করুন-এ ক্লিক করুন।
গোপন মানটি কপি করুন।
গুরুত্বপূর্ণ:
api_secretব্যক্তিগত। আপনার ওয়েবসাইট বা অ্যাপের ক্লায়েন্ট-সাইড কোডে এটি প্রকাশ করবেন না।- নিরাপত্তা ঝুঁকি:
api_secretপ্রকাশ করার ফলে অননুমোদিত পক্ষগুলো আপনার গুগল অ্যানালিটিক্স প্রপার্টিতে যথেচ্ছ বা স্প্যাম ডেটা পাঠাতে পারে, যা আপনার রিপোর্টিংকে ত্রুটিপূর্ণ করে তুলতে পারে। - সঠিক ব্যবহার: মেজারমেন্ট প্রোটোকলটি মূলত সার্ভার-সাইড বা বিশ্বস্ত পরিবেশের (যেমন অফলাইন সিস্টেম বা সার্ভার-টু-সার্ভার যোগাযোগ) জন্য ডিজাইন করা হয়েছে।
- ক্লায়েন্ট-সাইড ট্র্যাকিং: যদি আপনার সরাসরি ওয়েব ব্রাউজার থেকে ইভেন্ট পাঠানোর প্রয়োজন হয়, তাহলে গুগল ট্যাগ (gtag.js) অথবা গুগল ট্যাগ ম্যানেজার ব্যবহার করুন।
- ক্রোম এক্সটেনশন: ম্যানিফেস্ট ভি৩ ক্রোম এক্সটেনশনের ক্ষেত্রে, আপনি
gtag.jsমতো রিমোট কোড লোড করতে পারবেন না। এক্ষেত্রে, মেজারমেন্ট প্রোটোকল ব্যবহার করার পরামর্শ দেওয়া হয়। ক্রোম এক্সটেনশনে গুগল অ্যানালিটিক্স ব্যবহার দেখুন।
- নিরাপত্তা ঝুঁকি:
ফায়ারবেস অ্যাপ আইডি
firebase_app_id আপনার Firebase অ্যাপকে শনাক্ত করে। এটি app_instance_id মতো নয়।
আপনার ফায়ারবেস অ্যাপ আইডি খুঁজে পেতে:
- ফায়ারবেস কনসোলে আপনার প্রজেক্টটি খুলুন।
- প্রজেক্ট ওভারভিউ- এর পাশে থাকা সেটিংস গিয়ার আইকনে ক্লিক করুন এবং প্রজেক্ট সেটিংস নির্বাচন করুন।
- জেনারেল ট্যাবের অধীনে, আপনার অ্যাপস বিভাগে যান।
- নির্দিষ্ট iOS বা Android অ্যাপটি নির্বাচন করুন।
- অ্যাপ আইডি-র মানটি কপি করুন।
অনুরোধটি ফরম্যাট করুন
গুগল অ্যানালিটিক্স মেজারমেন্ট প্রোটোকল শুধুমাত্র HTTP POST অনুরোধ সমর্থন করে।
ইভেন্ট পাঠাতে নিম্নলিখিত ফরম্যাটটি ব্যবহার করুন:
POST /mp/collect?firebase_app_id=<var>FIREBASE_APP_ID</var>&api_secret=<var>API_SECRET</var> HTTP/1.1
HOST: www.google-analytics.com
Content-Type: application/json
PAYLOAD_DATA
আপনাকে অনুরোধ URL কোয়েরি প্যারামিটারগুলিতে নিম্নলিখিতগুলি অবশ্যই প্রদান করতে হবে (এই মানগুলি কীভাবে খুঁজে বের করতে বা তৈরি করতে হয় তার বিশদ বিবরণের জন্য পূর্বশর্তগুলি দেখুন):
-
api_secret: অনুরোধটি প্রমাণীকরণের জন্য ব্যবহৃত এপিআই সিক্রেট। -
firebase_app_id: আপনার অ্যাপ্লিকেশনের ফায়ারবেস অ্যাপ আইডি।
মেজারমেন্ট প্রোটোকলের জন্য আপনাকে অবশ্যই JSON POST বডি ফরম্যাটে একটি রিকোয়েস্ট বডি প্রদান করতে হবে। এখানে একটি উদাহরণ দেওয়া হলো:
{
"app_instance_id": "APP_INSTANCE_ID",
"events": [
{
"name": "login",
"params": {
"method": "Google",
"session_id": "SESSION_ID",
"engagement_time_msec": 100
}
}
]
}
আপনার মোবাইল অ্যাপের একটি অনন্য ইনস্টলেশন শনাক্ত করার জন্য আপনাকে অবশ্যই রিকোয়েস্ট বডিতে app_instance_id প্রদান করতে হবে। মনে রাখবেন যে এটি firebase_app_id থেকে ভিন্ন, যা অ্যাপটিকে শনাক্ত করে। app_instance_id এবং Firebase SDK ব্যবহার করে কীভাবে এটি পুনরুদ্ধার করা যায় সে সম্পর্কে আরও তথ্যের জন্য, app_instance_id রেফারেন্স ডকুমেন্টেশন দেখুন।
যদিও session_start একটি সংরক্ষিত ইভেন্টের নাম , একটি নতুন session_id তৈরি করলে session_start পাঠানোর প্রয়োজন হয় না। সেশন কীভাবে গণনা করা হয় তা বুঝুন।
চেষ্টা করে দেখুন
একসাথে একাধিক ইভেন্ট পাঠানোর জন্য এখানে একটি উদাহরণ দেওয়া হলো। এই উদাহরণটি আপনার গুগল অ্যানালিটিক্স সার্ভারে একটি tutorial_begin ইভেন্ট এবং একটি join_group ইভেন্ট পাঠায়, user_location ফিল্ড ব্যবহার করে ভৌগোলিক তথ্য এবং device ফিল্ড ব্যবহার করে ডিভাইসের তথ্য অন্তর্ভুক্ত করে।
const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";
fetch(`https://www.google-analytics.com/mp/collect?firebase_app_id=${firebaseAppId}&api_secret=${apiSecret}`, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
app_instance_id: "APP_INSTANCE_ID",
events: [
{
name: "tutorial_begin",
params: {
"session_id": "SESSION_ID",
"engagement_time_msec": 100
}
},
{
name: "join_group",
params: {
"group_id": "G_12345",
"session_id": "SESSION_ID",
"engagement_time_msec": 150
}
}
],
user_location: {
city: "Mountain View",
region_id: "US-CA",
country_id: "US",
subcontinent_id: "021",
continent_id: "019"
},
device: {
category: "mobile",
language: "en",
screen_resolution: "1280x2856",
operating_system: "Android",
operating_system_version: "14",
model: "Pixel 9 Pro",
brand: "Google",
browser: "Chrome",
browser_version: "136.0.7103.60"
}
})
});
firebase_app_id এর ফরম্যাট প্ল্যাটফর্ম-ভিত্তিক। Firebase কনফিগারেশন ফাইল এবং অবজেক্ট- এর অধীনে অ্যাপ্লিকেশন আইডি দেখুন।
টাইমস্ট্যাম্প ওভাররাইড করুন
মেজারমেন্ট প্রোটোকল অনুরোধের প্রতিটি ইভেন্ট এবং ব্যবহারকারীর প্রপার্টির জন্য নিম্নলিখিত তালিকা থেকে খুঁজে পাওয়া প্রথম টাইমস্ট্যাম্পটি ব্যবহার করে:
- ইভেন্ট বা ব্যবহারকারী প্রপার্টির
timestamp_micros। - অনুরোধের
timestamp_micros। - যে সময়ে পরিমাপ প্রোটোকল অনুরোধটি গ্রহণ করে।
নিম্নলিখিত উদাহরণটি একটি অনুরোধ-স্তরের টাইমস্ট্যাম্প পাঠায় যা অনুরোধের সমস্ত ইভেন্ট এবং ব্যবহারকারীর প্রপার্টিতে প্রযোজ্য। ফলস্বরূপ, মেজারমেন্ট প্রোটোকল tutorial_begin এবং join_group ইভেন্ট এবং customer_tier ব্যবহারকারী প্রপার্টিতে requestUnixEpochTimeInMicros টাইমস্ট্যাম্পটি নির্ধারণ করে।
{
"timestamp_micros": requestUnixEpochTimeInMicros,
"events": [
{
"name": "tutorial_begin"
},
{
"name": "join_group",
"params": {
"group_id": "G_12345",
}
}
],
"user_properties": {
"customer_tier": {
"value": "PREMIUM"
}
}
}
নিম্নলিখিত উদাহরণটি একটি অনুরোধ-স্তরের টাইমস্ট্যাম্প, একটি ইভেন্ট-স্তরের টাইমস্ট্যাম্প এবং একটি ব্যবহারকারী প্রপার্টি-স্তরের টাইমস্ট্যাম্প পাঠায়। ফলস্বরূপ, মেজারমেন্ট প্রোটোকল নিম্নলিখিত টাইমস্ট্যাম্পগুলি বরাদ্দ করে:
-
tutorial_beginইভেন্টের জন্যtutorialBeginUnixEpochTimeInMicros -
customer_tierব্যবহারকারী প্রপার্টির জন্যcustomerTierUnixEpochTimeInMicros -
join_groupইভেন্ট এবংnewsletter_readerইউজার প্রপার্টির জন্যrequestUnixEpochTimeInMicros।
{
"timestamp_micros": requestUnixEpochTimeInMicros,
"events": [
{
"name": "tutorial_begin",
"timestamp_micros": tutorialBeginUnixEpochTimeInMicros
},
{
"name": "join_group",
"params": {
"group_id": "G_12345",
}
}
],
"user_properties": {
"customer_tier": {
"value": "PREMIUM",
"timestamp_micros": customerTierUnixEpochTimeInMicros
},
"newsletter_reader": {
"value": "true"
}
}
}
অতীতের ঘটনা এবং ব্যবহারকারীর বৈশিষ্ট্যগুলির জন্য বৈধতা যাচাইয়ের আচরণ
ইভেন্ট এবং ব্যবহারকারীর বৈশিষ্ট্যগুলো ৭২ ঘন্টা পর্যন্ত পূর্ববর্তী তারিখের করা যেতে পারে। যদি timestamp_micros মান ৭২ ঘন্টারও আগের হয়, তাহলে মেজারমেন্ট প্রোটোকল নিম্নলিখিতভাবে ইভেন্ট বা ব্যবহারকারীর বৈশিষ্ট্যটি গ্রহণ বা প্রত্যাখ্যান করে:
- যদি
validation_behaviorসেট করা না থাকে বাRELAXEDএ সেট করা থাকে, তাহলে Measurement Protocol ইভেন্ট বা ইউজার প্রপার্টিটি গ্রহণ করে, কিন্তু এর টাইমস্ট্যাম্পকে ৭২ ঘণ্টা আগের সময়ে ওভাররাইড করে দেয়। - যদি
validation_behaviorENFORCE_RECOMMENDATIONSএ সেট করা থাকে, তাহলে Measurement Protocol ইভেন্ট বা ব্যবহারকারীর প্রপার্টিটি প্রত্যাখ্যান করে।
মেজারমেন্ট প্রোটোকল ব্যবহার করে পাঠানো যে ইভেন্টগুলো Google Analytics for Firebase SDK বা gtag.js দ্বারা সংগৃহীত ইভেন্টগুলোর সাথে যুক্ত বা প্রক্রিয়াজাত করার জন্য পাঠানো হয়, সেগুলো মূল ক্লায়েন্ট-সাইড ইভেন্টের টাইমস্ট্যাম্পের ৪৮ ঘণ্টার মধ্যে Google Analytics-এর কাছে পৌঁছানো উচিত। এর পরে প্রাপ্ত ইভেন্টগুলো প্রত্যাশিতভাবে প্রক্রিয়াজাত নাও হতে পারে, বিশেষ করে কনভার্সন অ্যাট্রিবিউশনের মতো উদ্দেশ্যে।
সীমাবদ্ধতা
গুগল অ্যানালিটিক্সে মেজারমেন্ট প্রোটোকল ইভেন্ট পাঠানোর ক্ষেত্রে নিম্নলিখিত সীমাবদ্ধতাগুলো প্রযোজ্য:
- একটি অনুরোধে সর্বোচ্চ ২৫টি ইভেন্ট থাকতে পারে।
- একটি ইভেন্টে সর্বাধিক ২৫টি প্যারামিটার থাকতে পারে।
- একটি ইভেন্টে সর্বাধিক ২৫টি ব্যবহারকারী বৈশিষ্ট্য থাকতে পারে।
- ব্যবহারকারীর প্রপার্টির নাম অবশ্যই ২৪ অক্ষর বা তার কম হতে হবে।
- ব্যবহারকারীর প্রপার্টির মান অবশ্যই ৩৬ অক্ষর বা তার কম হতে হবে।
- অনুষ্ঠানের নাম অবশ্যই ৪০ অক্ষর বা তার কম হতে হবে, এতে শুধুমাত্র আলফানিউমেরিক অক্ষর ও আন্ডারস্কোর থাকতে পারবে এবং নামটি অবশ্যই একটি বর্ণ দিয়ে শুরু হতে হবে।
- আইটেম প্যারামিটার সহ প্যারামিটারের নাম অবশ্যই ৪০ অক্ষর বা তার কম হতে হবে, এতে শুধুমাত্র আলফানিউমেরিক অক্ষর এবং আন্ডারস্কোর থাকতে পারবে এবং এটি অবশ্যই একটি আলফাবেটিক অক্ষর দিয়ে শুরু হতে হবে।
একটি স্ট্যান্ডার্ড গুগল অ্যানালিটিক্স প্রপার্টির জন্য আইটেম প্যারামিটার ভ্যালু সহ প্যারামিটার ভ্যালুগুলো অবশ্যই ১০০ অক্ষর বা তার কম হতে হবে এবং একটি গুগল অ্যানালিটিক্স ৩৬০ প্রপার্টির জন্য তা ৫০০ অক্ষর বা তার কম হতে হবে।
এই সীমাবদ্ধতা
session_idএবংsession_numberপ্যারামিটারগুলোর ক্ষেত্রে প্রযোজ্য নয়, যখন তাদের মান Google Tag Manager-এর সংশ্লিষ্ট Analytics Session ID এবং Analytics Session Number বিল্ট-ইন ভেরিয়েবলগুলো থেকে সরবরাহ করা হয়।আইটেমের প্যারামিটারগুলিতে সর্বোচ্চ ১০টি কাস্টম প্যারামিটার থাকতে পারে।
পোস্ট বডির আকার অবশ্যই ১৩০ কিলোবাইটের চেয়ে ছোট হতে হবে।
গুগল অ্যানালিটিক্সে পাঠানো অ্যাপ মেজারমেন্ট প্রোটোকল ইভেন্টগুলো অ্যাপ ব্যবহারকারীদের জন্য গুগল অ্যাডস-এর সার্চ অডিয়েন্সে যুক্ত হয় না।
কিছু ইভেন্ট, প্যারামিটার এবং ইউজার প্রপার্টির নাম সংরক্ষিত এবং ব্যবহার করা যাবে না। বিস্তারিত জানতে সংরক্ষিত নামসমূহ (Reserved names) দেখুন।
সংরক্ষিত নাম
মেজারমেন্ট প্রোটোকলে বেশ কিছু সংরক্ষিত নাম রয়েছে যা ইভেন্ট, প্যারামিটার বা ইউজার প্রপার্টির জন্য ব্যবহার করা যায় না।
নিম্নলিখিত ইভেন্টের নামগুলো নিয়ে প্রায়শই বিভ্রান্তি সৃষ্টি হয়:
-
screen_view: এই ইভেন্টটি শুধুমাত্র অ্যাপ স্ট্রিমের জন্য অনুমোদিত । ওয়েব স্ট্রিমের জন্য এর পরিবর্তেpage_viewব্যবহার করুন। -
ad_impression: এই ইভেন্টটি শুধুমাত্র অ্যাপ স্ট্রিমের জন্য অনুমোদিত । -
in_app_purchase: এই ইভেন্টটি শুধুমাত্র অ্যাপ স্ট্রিমের জন্য অনুমোদিত । ওয়েব স্ট্রিমের জন্য, এর পরিবর্তেpurchaseইভেন্টটি ব্যবহার করুন।
প্রতিটি ইউজ কেসের অতিরিক্ত প্রয়োজনীয়তার জন্য, কমন ইউজ কেসেস দেখুন।