এই নির্দেশিকা থেকে আপনি জানতে পারবেন কীভাবে Google Analytics মেজারমেন্ট প্রোটোকল ওয়েব ও অ্যাপ স্ট্রিম ইভেন্ট একটি Google Analytics সার্ভারে পাঠাতে হয়, যাতে আপনি নিজের Google Analytics রিপোর্টে মেজারমেন্ট প্রোটোকল ইভেন্ট দেখতে পান।
আপনি ওয়েব স্ট্রিম বা অ্যাপ স্ট্রিমে ইভেন্ট পাঠাচ্ছেন কিনা তার উপর মেজারমেন্ট প্রোটোকল অনুরোধের জন্য প্রয়োজনীয় শনাক্তকারী ও প্যারামিটার নির্ভর করে।
- ওয়েব স্ট্রিমের (সাধারণত gtag.js বা Google Tag
Manager দিয়ে ইন্সট্রুমেন্ট করা হয়) ক্ষেত্রে, ব্যবহারকারীর ইনস্ট্যান্স শনাক্ত করতে, অনুরোধ URL-এ
measurement_idএবং JSON বডিতেclient_idব্যবহার করুন।client_idআপনার ওয়েবসাইটে Google Analytics ট্যাগ থেকে তৈরি হওয়া আইডির সাথে ম্যাচ করতে হবে। - অ্যাপ স্ট্রিমের (Firebase SDK-এর মাধ্যমে ইনস্ট্রুমেন্ট করা) জন্য, আপনি
অনুরোধ URL-এ
firebase_app_idএবং JSON বডিতেapp_instance_idব্যবহার করেন, যা Firebase SDK-এর জন্য Google Analytics প্রদান করে।
এই নির্দেশিকায় দুটি পরিস্থিতির উদাহরণ দেওয়া আছে।
স্ট্রিমের ধরন অনুযায়ী অনুরোধের মূল উপাদান
| কম্পোনেন্ট | ওয়েব স্ট্রিম (gtag.js/GTM) | অ্যাপ স্ট্রিম (Firebase) |
|---|---|---|
| ডেটা স্ট্রিম URL প্যারামিটার | measurement_id |
firebase_app_id |
| API সিক্রেট URL প্যারামিটার | প্রয়োজনীয় | প্রয়োজনীয় |
| ডিভাইস আইডি JSON বডি ফিল্ড | client_id |
app_instance_id |
এই নির্দেশিকায় আপনি যে প্ল্যাটফর্ম দেখতে চান সেটি বেছে নিন:
এই ট্যাবে আপনার সার্ভার থেকে ইভেন্ট পাঠানোর নির্দেশাবলী দেখানো হয় যা Google Analytics for Firebase
SDK ব্যবহার করে অ্যাপ স্ট্রিমের মধ্যে ব্যবহারকারীর অ্যাক্টিভিটির সাথে কোরিলেট
করে। মনে রাখবেন, এইসব অনুরোধে firebase_app_id এবং
app_instance_id ব্যবহার করা হয়।
পূর্বশর্ত
মেজারমেন্ট প্রোটোকল ব্যবহার করে ইভেন্ট পাঠাতে, আপনার Google Analytics প্রপার্টি বা Firebase প্রোজেক্ট থেকে নির্দিষ্ট শনাক্তকারী প্রয়োজন।
API সিক্রেট
আপনার অনুরোধ যাচাই করার জন্য api_secret ব্যবহার করা হয়। এই গোপন তথ্যটি
গোপন রাখা খুবই গুরুত্বপূর্ণ।
নতুন সিক্রেট তৈরি করতে:
- Google Analytics-এ যান এবং আপনার অ্যাকাউন্ট ও প্রপার্টিতে নেভিগেট করুন।
- নিচে বাঁদিকে অ্যাডমিন বিকল্পে ক্লিক করুন।
- ডেটা সংগ্রহ ও পরিবর্তন বিকল্পের মধ্যে, ডেটা স্ট্রিম বিকল্পে ক্লিক করুন।
- আপনার ওয়েব বা অ্যাপ ডেটা স্ট্রিম বেছে নিন।
- পরিমাপ প্রোটোকল API সিক্রেট বিকল্পে ক্লিক করুন।
- তৈরি করুন বিকল্পে ক্লিক করুন।
- গোপনীয়তার জন্য একটি ডাকনাম লিখুন এবং তৈরি করুন বিকল্পে ক্লিক করুন।
গোপন ভ্যালু কপি করুন।
Firebase অ্যাপ আইডি
firebase_app_id আপনার Firebase অ্যাপকে শনাক্ত করে। এটি
app_instance_id-এর মতো নয়।
আপনার Firebase অ্যাপ আইডি খুঁজে পেতে:
- Firebase কনসোলে আপনার প্রোজেক্ট খুলুন।
- প্রোজেক্ট ওভারভিউ বিকল্পের পাশে থাকা সেটিংস গিয়ার আইকনে ক্লিক করুন এবং প্রোজেক্ট সেটিংস বিকল্প বেছে নিন।
- সাধারণ ট্যাবের মধ্যে, আপনার অ্যাপ বিভাগে যান।
- নির্দিষ্ট iOS বা Android অ্যাপ বেছে নিন।
- অ্যাপ আইডির ভ্যালু কপি করুন।
অনুরোধ ফর্ম্যাট করা
Google Analytics পরিমাপের প্রোটোকল শুধুমাত্র 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: অনুরোধ যাচাই করার জন্য API সিক্রেট।firebase_app_id: আপনার অ্যাপ্লিকেশনের Firebase অ্যাপ আইডি।
আপনাকে অবশ্যই Measurement Protocol-এর জন্য 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 পাঠানোর
প্রয়োজন ছাড়াই নতুন সেশন তৈরি হয়। সেশন কীভাবে
গণনা করা হয় তা বুঝুন।
এটি ব্যবহার করে দেখুন
একসাথে একাধিক ইভেন্ট পাঠানোর জন্য আপনি এখানে একটি উদাহরণ দেখতে পারেন। এই উদাহরণে
আপনার Google Analytics সার্ভারে একটি 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 কনফিগারেশন ফাইল ও অবজেক্ট-এর মধ্যে অ্যাপ্লিকেশন আইডি
দেখুন।
টাইমস্ট্যাম্প ওভাররাইড করা
Measurement Protocol, অনুরোধের প্রতিটি ইভেন্ট ও ব্যবহারকারীর প্রপার্টির জন্য নিম্নলিখিত তালিকা থেকে পাওয়া প্রথম টাইমস্ট্যাম্প ব্যবহার করে:
- ইভেন্ট বা ব্যবহারকারীর প্রপার্টির
timestamp_micros। - অনুরোধের
timestamp_micros. - মেজারমেন্ট প্রোটোকল যে সময়ে অনুরোধটি পায়।
নিচের উদাহরণে একটি অনুরোধ-লেভেল টাইমস্ট্যাম্প পাঠানো হয়েছে যা অনুরোধের মধ্যে থাকা সব
ইভেন্ট ও ব্যবহারকারীর
প্রপার্টির ক্ষেত্রে প্রযোজ্য।
এর ফলে, Measurement Protocol
requestUnixEpochTimeInMicros-এর টাইমস্ট্যাম্প tutorial_begin ও join_group ইভেন্ট
এবং customer_tier ব্যবহারকারীর প্রপার্টিতে অ্যাসাইন করে।
{
"timestamp_micros": requestUnixEpochTimeInMicros,
"events": [
{
"name": "tutorial_begin"
},
{
"name": "join_group",
"params": {
"group_id": "G_12345",
}
}
],
"user_properties": {
"customer_tier": {
"value": "PREMIUM"
}
}
}
নিচের উদাহরণে একটি অনুরোধ-লেভেল টাইমস্ট্যাম্প, একটি ইভেন্ট-লেভেল টাইমস্ট্যাম্প এবং একটি ব্যবহারকারীর প্রপার্টি-লেভেল টাইমস্ট্যাম্প পাঠানো হয়েছে। এর ফলে, Measurement Protocol নিম্নলিখিত টাইমস্ট্যাম্প অ্যাসাইন করে:
tutorial_beginইভেন্টেরtutorialBeginUnixEpochTimeInMicrosজন্যcustomer_tierব্যবহারকারীর প্রপার্টির জন্যcustomerTierUnixEpochTimeInMicrosjoin_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 ভ্যালু ৭২ ঘণ্টা আগের হয়, তাহলে Measurement Protocol
নিম্নলিখিতভাবে ইভেন্ট বা ব্যবহারকারীর প্রপার্টি গ্রহণ বা বাতিল করে:
validation_behaviorসেট করা না থাকলে বাRELAXEDহিসেবে সেট করা থাকলে, মেজারমেন্ট প্রোটোকল ইভেন্ট বা ব্যবহারকারীর প্রপার্টি গ্রহণ করে, কিন্তু এর টাইমস্ট্যাম্পকে ৭২ ঘণ্টা আগে ওভাররাইড করে।validation_behaviorENFORCE_RECOMMENDATIONSহিসেবে সেট করা থাকলে, মেজারমেন্ট প্রোটোকল ইভেন্ট বা ব্যবহারকারীর প্রপার্টি বাতিল করে দেয়।
মেজারমেন্ট প্রোটোকল ব্যবহার করে পাঠানো ইভেন্ট যা Google Analytics for Firebase SDK বা gtag.js-এর মাধ্যমে সংগ্রহ করা ইভেন্টের সাথে যুক্ত বা প্রসেস করার উদ্দেশ্যে পাঠানো হয়, সেগুলি Google Analytics-এর কাছে মূল ক্লায়েন্ট-সাইড ইভেন্ট টাইমস্ট্যাম্পের ৪৮ ঘণ্টার মধ্যে পৌঁছাতে হবে। এর পরে পাওয়া ইভেন্টগুলি প্রত্যাশিতভাবে প্রসেস নাও হতে পারে, বিশেষ করে কনভার্সন অ্যাট্রিবিউশনের মতো উদ্দেশ্যের জন্য।
সীমাবদ্ধতা
Google Analytics-এ মেজারমেন্ট প্রোটোকল ইভেন্ট পাঠানোর ক্ষেত্রে নিম্নলিখিত বিধিনিষেধ প্রযোজ্য:
আপনি প্রতিটি প্রপার্টির জন্য প্রতি ঘণ্টায় সর্বাধিক ১০০ মিলিয়ন কনভার্সন নয় এমন অনুরোধ পাঠাতে পারবেন। অনুরোধে থাকা কোনও ইভেন্ট যদি এমন কোনও কী ইভেন্ট না হয় যার জন্য Google Ads-এ কনভার্সন আছে, তাহলে সেই অনুরোধকে কনভার্সন নয় এমন অনুরোধ বলা হয়। আপনি এই সীমা অতিক্রম করলে, বাকি এক ঘণ্টার জন্য প্রপার্টির জন্য মেজারমেন্ট প্রোটোকল নীরবে কনভার্সন নয় এমন সব অনুরোধ উপেক্ষা করে।
অনুরোধে সর্বাধিক ২৫টি ইভেন্ট থাকতে পারে।
ইভেন্টে সর্বাধিক ২৫টি প্যারামিটার থাকতে পারে।
ইভেন্টে সর্বাধিক ২৫টি ব্যবহারকারীর প্রপার্টি থাকতে পারে।
ব্যবহারকারীর প্রপার্টির নাম ২৪টি অক্ষর বা তার কম হতে হবে।
ব্যবহারকারীর প্রপার্টির ভ্যালু অবশ্যই ৩৬টি অক্ষর বা তার কম হতে হবে।
ইভেন্টের নাম ৪০ অক্ষর বা তার কম হতে হবে, শুধুমাত্র বর্ণসাংখ্যিক অক্ষর ও আন্ডারস্কোর থাকতে পারবে এবং অবশ্যই কোনও অক্ষর দিয়ে শুরু হতে হবে।
আইটেম প্যারামিটার সহ প্যারামিটারের নাম ৪০ অক্ষর বা তার কম হতে হবে, শুধুমাত্র বর্ণসাংখ্যিক অক্ষর ও আন্ডারস্কোর থাকতে পারবে এবং অবশ্যই বর্ণ দিয়ে শুরু হতে হবে।
স্ট্যান্ডার্ড Google Analytics প্রপার্টির ক্ষেত্রে আইটেম প্যারামিটার ভ্যালু সহ প্যারামিটার ভ্যালু ১০০ অক্ষর বা তার কম হতে হবে এবং Google Analytics 360 প্রপার্টির ক্ষেত্রে ৫০০ অক্ষর বা তার কম হতে হবে।
Google Tag Manager-এ বিল্ট-ইন ভেরিয়েবল হিসেবে সংশ্লিষ্ট Analytics সেশন আইডি ও Analytics সেশন নম্বর এর মান প্রদান করা হলে, এই সীমা
session_idওsession_numberপ্যারামিটারের ক্ষেত্রে প্রযোজ্য হয় না।আইটেম প্যারামিটারে সর্বাধিক ১০টি কাস্টম প্যারামিটার থাকতে পারে।
পোস্টের বডি ১৩০ কেবির থেকে ছোট হতে হবে।
Google Analytics-এ পাঠানো অ্যাপ মেজারমেন্ট প্রোটোকল ইভেন্ট, অ্যাপ ব্যবহারকারীদের জন্য Google Ads-এ Search অডিয়েন্স পূরণ করে না।
কিছু ইভেন্ট, প্যারামিটার ও ব্যবহারকারীর প্রপার্টির নাম রিজার্ভ করা আছে এবং সেগুলি ব্যবহার করা যাবে না। বিস্তারিত জানতে, সংরক্ষিত নাম দেখুন।
রিজার্ভ করা নাম
মেজারমেন্ট প্রোটোকলে বেশ কিছু রিজার্ভ করা নাম আছে যেগুলি ইভেন্ট, প্যারামিটার বা ব্যবহারকারীর প্রপার্টির জন্য ব্যবহার করা যায় না।
নিচে উল্লেখ করা ইভেন্টের নামগুলি সাধারণত বিভ্রান্তি সৃষ্টি করে:
screen_view: এই ইভেন্ট শুধুমাত্র অ্যাপ স্ট্রিমের জন্য অনুমোদিত। ওয়েব স্ট্রিমের জন্য, এর পরিবর্তেpage_viewব্যবহার করুন।ad_impression: এই ইভেন্ট শুধুমাত্র অ্যাপ স্ট্রিমের জন্য অনুমোদিত।in_app_purchase: এই ইভেন্ট শুধুমাত্র অ্যাপ স্ট্রিমের জন্য অনুমোদিত। ওয়েব স্ট্রিমের জন্য, এর পরিবর্তেpurchaseইভেন্ট ব্যবহার করুন।
প্রতিটি ব্যবহারের ক্ষেত্রে অতিরিক্ত প্রয়োজনীয়তা সম্পর্কে জানতে, সাধারণ ব্যবহারের ক্ষেত্রে দেখুন।