คู่มือนี้อธิบายวิธีส่ง Google Analytics Measurement Protocol เหตุการณ์สตรีมเว็บและสตรีมแอป ไปยังเซิร์ฟเวอร์ Google Analytics เพื่อให้คุณดูเหตุการณ์ Measurement Protocol ใน รายงาน Google Analyticsได้
ตัวระบุและพารามิเตอร์ที่จำเป็นสำหรับคำขอ Measurement Protocol จะขึ้นอยู่กับว่าคุณส่งเหตุการณ์ไปยังสตรีมเว็บ หรือสตรีมแอป
- สําหรับสตรีมเว็บ (โดยปกติจะใช้ gtag.js หรือ Google Tag Manager) คุณจะใช้
measurement_idใน URL ของคําขอและclient_idในเนื้อหา JSON เพื่อระบุอินสแตนซ์ของผู้ใช้client_idควรตรงกับรหัสที่แท็ก Google Analytics สร้างขึ้นในเว็บไซต์ - สําหรับสตรีมแอป (ใช้ Firebase SDK) คุณจะใช้
firebase_app_idใน URL ของคําขอและapp_instance_idในเนื้อหา JSON ซึ่ง Google Analytics สําหรับ Firebase SDK จะเป็นผู้ระบุ
คู่มือนี้มีตัวอย่างสําหรับทั้ง 2 สถานการณ์
องค์ประกอบหลักของคําขอตามประเภทสตรีม
| ส่วนประกอบ | สตรีมเว็บ (gtag.js/GTM) | สตรีมแอป (Firebase) |
|---|---|---|
| พารามิเตอร์ของ URL สตรีมข้อมูล | measurement_id |
firebase_app_id |
| พารามิเตอร์ของ URL API Secret | ต้องระบุ | ต้องระบุ |
| ฟิลด์เนื้อหา JSON ของรหัสอุปกรณ์ | client_id |
app_instance_id |
เลือกแพลตฟอร์มที่ต้องการดูในคู่มือนี้
แท็บนี้แสดงวิธีการส่งเหตุการณ์จากเซิร์ฟเวอร์ที่สัมพันธ์กับกิจกรรมของผู้ใช้ในสตรีมแอป โดยใช้ SDK ของ Google Analytics สําหรับ Firebase โปรดทราบว่าคําขอเหล่านี้ใช้ firebase_app_id และ app_instance_id
ข้อกำหนดเบื้องต้น
หากต้องการส่งเหตุการณ์โดยใช้ Measurement Protocol คุณต้องมีตัวระบุที่เฉพาะเจาะจงจากพร็อพเพอร์ตี้ Google Analytics หรือโปรเจ็กต์ Firebase
API Secret
ระบบจะใช้ api_secret เพื่อตรวจสอบสิทธิ์คําขอ คุณต้องเก็บข้อมูลลับนี้ไว้เป็นความลับ
วิธีสร้างข้อมูลลับใหม่
- ไปที่ Google Analytics แล้วไปยัง บัญชีและพร็อพเพอร์ตี้
- คลิกผู้ดูแลระบบ ทางด้านซ้ายล่าง
- ในส่วนการเก็บรวบรวมข้อมูลและการแก้ไขข้อมูล ให้คลิกสตรีมข้อมูล
- เลือกสตรีมข้อมูลเว็บหรือแอป
- คลิก API Secret สำหรับ Measurement Protocol
- คลิกสร้าง
- ป้อนชื่อเล่นให้ข้อมูลลับ แล้วคลิกสร้าง
คัดลอกค่าข้อมูลลับ
รหัสแอป Firebase
firebase_app_id ใช้ระบุแอป Firebase และไม่เหมือนกับ app_instance_id
วิธีค้นหารหัสแอป Firebase
- เปิดโปรเจ็กต์ใน คอนโซล Firebase
- คลิกไอคอนรูปเฟืองการตั้งค่าข้างภาพรวมโปรเจ็กต์ แล้วเลือกการตั้งค่าโปรเจ็กต์
- ในแท็บทั่วไป ให้ไปที่ส่วนแอปของคุณ
- เลือกแอป iOS หรือ Android ที่ต้องการ
- คัดลอกค่ารหัสแอป
จัดรูปแบบคำขอ
Measurement Protocol ของ 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 Secret เพื่อตรวจสอบสิทธิ์คําขอfirebase_app_id: รหัสแอป Firebase ของแอปพลิเคชัน
คุณต้องระบุเนื้อหาของคําขอในรูปแบบเนื้อหา JSON POST สําหรับ Measurement Protocol ตัวอย่าง
{
"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 ไปยังเซิร์ฟเวอร์ Google Analytics รวมถึงข้อมูลทางภูมิศาสตร์โดยใช้ฟิลด์ 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 ได้รับคําขอ
ตัวอย่างต่อไปนี้จะส่งการประทับเวลาระดับคําขอซึ่งใช้กับเหตุการณ์และ
พร็อพเพอร์ตี้ผู้ใช้ทั้งหมดใน
คําขอ ด้วยเหตุนี้ 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 จึงกําหนดการประทับเวลาต่อไปนี้
tutorialBeginUnixEpochTimeInMicrosสําหรับเหตุการณ์tutorial_begincustomerTierUnixEpochTimeInMicrosสําหรับพร็อพเพอร์ตี้ผู้ใช้customer_tierrequestUnixEpochTimeInMicrosสําหรับเหตุการณ์join_groupและพร็อพเพอร์ตี้ผู้ใช้newsletter_reader
{
"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"
}
}
}
ลักษณะการทํางานของการตรวจสอบสําหรับเหตุการณ์และพร็อพเพอร์ตี้ผู้ใช้ที่ผ่านมา
คุณสามารถระบุวันที่ย้อนหลังสําหรับเหตุการณ์และพร็อพเพอร์ตี้ผู้ใช้ได้ไม่เกิน 72 ชั่วโมง หากค่า timestamp_micros เก่ากว่า 72 ชั่วโมงที่ผ่านมา Measurement Protocol จะยอมรับหรือปฏิเสธเหตุการณ์หรือพร็อพเพอร์ตี้ผู้ใช้ดังนี้
- หากไม่ได้ตั้งค่า
validation_behaviorหรือตั้งค่าเป็นRELAXEDMeasurement Protocol จะยอมรับเหตุการณ์หรือพร็อพเพอร์ตี้ผู้ใช้ แต่จะลบล้างการประทับเวลาเป็น 72 ชั่วโมงที่ผ่านมา - หากตั้งค่า
validation_behaviorเป็นENFORCE_RECOMMENDATIONSMeasurement Protocol จะปฏิเสธเหตุการณ์หรือพร็อพเพอร์ตี้ผู้ใช้
Google Analytics ควรได้รับเหตุการณ์ที่ส่งโดยใช้ Measurement Protocol ซึ่งมีไว้เพื่อเข้าร่วมหรือประมวลผลร่วมกับเหตุการณ์ที่เก็บรวบรวมโดย Google Analytics สําหรับ Firebase SDK หรือ gtag.js ภายใน 48 ชั่วโมง นับจากการประทับเวลาเหตุการณ์ฝั่งไคลเอ็นต์เดิม ระบบอาจไม่ประมวลผลเหตุการณ์ที่ได้รับหลังจากช่วงเวลานี้ตามที่คาดไว้ โดยเฉพาะอย่างยิ่งสําหรับวัตถุประสงค์ต่างๆ เช่น การระบุแหล่งที่มาของ Conversion
ข้อจำกัด
ข้อจํากัดต่อไปนี้มีผลกับการส่งเหตุการณ์ Measurement Protocol ไปยัง Google Analytics
- คําขอมีเหตุการณ์ได้สูงสุด 25 รายการ
- เหตุการณ์มีพารามิเตอร์ได้สูงสุด 25 รายการ
- เหตุการณ์มีพร็อพเพอร์ตี้ผู้ใช้ได้สูงสุด 25 รายการ
- ชื่อพร็อพเพอร์ตี้ผู้ใช้ต้องมีความยาวไม่เกิน 24 อักขระ
- ค่าพร็อพเพอร์ตี้ผู้ใช้ต้องมีความยาวไม่เกิน 36 อักขระ
- ชื่อเหตุการณ์ต้องขึ้นต้นด้วยตัวอักษรและมีความยาวไม่เกิน 40 อักขระ ซึ่งจะใช้ได้เพียงตัวอักษร ตัวเลข และขีดล่างเท่านั้น
- ชื่อพารามิเตอร์ รวมถึงพารามิเตอร์ของรายการ ต้องขึ้นต้นด้วยตัวอักษรและมีความยาวไม่เกิน 40 อักขระ ซึ่งจะใช้ได้เพียงตัวอักษร ตัวเลข และขีดล่างเท่านั้น
ค่าพารามิเตอร์ รวมถึงค่าพารามิเตอร์ของรายการ ต้องมีความยาวไม่เกิน 100 อักขระสําหรับพร็อพเพอร์ตี้ Google Analytics มาตรฐาน และไม่เกิน 500 อักขระสําหรับพร็อพเพอร์ตี้ Google Analytics 360
ขีดจํากัดนี้ไม่มีผลกับพารามิเตอร์
session_idและsession_numberเมื่อค่าของพารามิเตอร์มาจากตัวแปรในตัวของรหัสเซสชัน Analytics และ หมายเลขเซสชัน Analytics ที่เกี่ยวข้องใน Google Tag Managerพารามิเตอร์ของรายการมีพารามิเตอร์ที่กําหนดเองได้สูงสุด 10 รายการ
เนื้อหาของคําขอ POST ต้องมีขนาดเล็กกว่า 130 KB
เหตุการณ์ App Measurement Protocol ที่ส่งไปยัง Google Analytics จะไม่แสดงกลุ่มเป้าหมายการค้นหาใน Google Ads สําหรับผู้ใช้แอป
ชื่อเหตุการณ์ ชื่อพารามิเตอร์ และชื่อพร็อพเพอร์ตี้ผู้ใช้บางรายการเป็นชื่อที่สงวนไว้และไม่สามารถใช้ได้ ดูรายละเอียดได้ที่ชื่อที่สงวนไว้สำหรับ
ชื่อที่สงวนไว้
Measurement Protocol มีชื่อที่สงวนไว้หลายชื่อซึ่ง ไม่สามารถใช้กับเหตุการณ์ พารามิเตอร์ หรือพร็อพเพอร์ตี้ผู้ใช้
ชื่อเหตุการณ์ต่อไปนี้เป็นจุดที่มักเกิดความสับสน
screen_view: เหตุการณ์นี้อนุญาตให้ใช้กับสตรีมแอปเท่านั้น สําหรับสตรีมเว็บ ให้ใช้page_viewแทนad_impression: เหตุการณ์นี้อนุญาตให้ใช้กับสตรีมแอปเท่านั้นin_app_purchase: เหตุการณ์นี้อนุญาตให้ใช้กับสตรีมแอปเท่านั้น สําหรับสตรีมเว็บ ให้ใช้purchaseเหตุการณ์แทน
ดูข้อกําหนดเพิ่มเติมของ Use Case แต่ละรายการได้ที่ Use Case ทั่วไป