คู่มือนี้อธิบายวิธีส่งเหตุการณ์สตรีมเว็บและแอปของ Measurement Protocol ของ Google Analytics ไปยังเซิร์ฟเวอร์ Google Analytics เพื่อให้คุณดูเหตุการณ์ Measurement Protocol ในรายงาน Google Analytics ได้
เลือกแพลตฟอร์มที่ต้องการดูในคู่มือนี้
จัดรูปแบบคำขอ
Measurement Protocol ของ Google Analytics รองรับเฉพาะคําขอ HTTP POST
หากต้องการส่งเหตุการณ์ ให้ใช้รูปแบบต่อไปนี้
POST /mp/collect HTTP/1.1
HOST: www.google-analytics.com
Content-Type: application/json
PAYLOAD_DATA
คุณต้องป้อนข้อมูลต่อไปนี้ใน URL ที่ขอ
api_secret: API SECRET ที่สร้างใน Google Analytics UIหากต้องการสร้างข้อมูลลับใหม่ ให้ไปที่ ผู้ดูแลระบบ > การเก็บรวบรวมและการแก้ไขข้อมูล > สตรีมข้อมูล > เลือกสตรีม > ข้อมูลลับของ Measurement Protocol API > สร้าง
firebase_app_id: รหัสแอป Firebase ซึ่งอยู่ในคอนโซล Firebase ในส่วน การตั้งค่าโปรเจ็กต์ > ทั่วไป > แอปของคุณ > รหัสแอปfirebase_app_idไม่เหมือนกับapp_instance_idfirebase_app_idระบุแอปของคุณ ในขณะที่app_instance_idระบุ การติดตั้งแอปครั้งเดียว
คุณต้องระบุเนื้อความของคำขอในรูปแบบเนื้อความ JSON POST สำหรับ Measurement Protocol เช่น
  {
   "app_instance_id": "APP_INSTANCE_ID",
   "events": [
      {
        "name": "login",
        "params": {
          "method": "Google",
          "session_id": "SESSION_ID",
          "engagement_time_msec": 100
        }
      }
   ]
  }
แม้ว่า 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",
  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หรือตั้งค่าเป็นRELAXEDโปรโตคอลการวัดจะยอมรับเหตุการณ์หรือพร็อพเพอร์ตี้ผู้ใช้ แต่จะลบล้างการประทับเวลาเป็น 72 ชั่วโมงที่ผ่านมา - หากตั้งค่า 
validation_behaviorเป็นENFORCE_RECOMMENDATIONSMeasurement Protocol จะปฏิเสธเหตุการณ์หรือพร็อพเพอร์ตี้ผู้ใช้ 
ข้อจำกัด
ข้อจํากัดต่อไปนี้มีผลกับการส่งเหตุการณ์ Measurement Protocol ไปยัง Google Analytics
- คำขอมีเหตุการณ์ได้สูงสุด 25 รายการ
 - เหตุการณ์มีพารามิเตอร์ได้สูงสุด 25 รายการ
 - เหตุการณ์มีพร็อพเพอร์ตี้ผู้ใช้ได้สูงสุด 25 รายการ
 - ชื่อพร็อพเพอร์ตี้ผู้ใช้ต้องมีความยาวไม่เกิน 24 อักขระ
 - ค่าพร็อพเพอร์ตี้ผู้ใช้ต้องมีความยาวไม่เกิน 36 อักขระ
 - ชื่อเหตุการณ์ต้องขึ้นต้นด้วยตัวอักษรและมีความยาวไม่เกิน 40 อักขระ ซึ่งจะใช้ได้เพียงตัวอักษร ตัวเลข และขีดล่างเท่านั้น
 - ชื่อพารามิเตอร์ รวมถึงพารามิเตอร์ของสินค้า ต้องมีความยาวไม่เกิน 40 อักขระ ใช้ได้เพียงตัวอักษร ตัวเลข และขีดล่างเท่านั้น และต้องขึ้นต้น ด้วยตัวอักษร
 - ค่าพารามิเตอร์ รวมถึงค่าพารามิเตอร์ของสินค้า ต้องมีความยาวไม่เกิน 100 อักขระสําหรับพร็อพเพอร์ตี้ Google Analytics มาตรฐาน และไม่เกิน 500 อักขระสําหรับพร็อพเพอร์ตี้ Google Analytics 360
 - พารามิเตอร์รายการมีพารามิเตอร์ที่กำหนดเองได้สูงสุด 10 รายการ
 - เนื้อหาของโพสต์ต้องมีขนาดเล็กกว่า 130 KB
 - การประทับเวลาต้องอยู่ในช่วง 72 ชั่วโมงที่ผ่านมา ดูรายละเอียดได้ที่ ลักษณะการทำงานของการตรวจสอบสำหรับกิจกรรมที่ผ่านมา
 - เหตุการณ์ App Measurement Protocol ที่ส่งไปยัง Google Analytics จะไม่สร้างกลุ่มเป้าหมาย Search ใน Google Ads สำหรับผู้ใช้แอป
 
ดูข้อกำหนดเพิ่มเติมของ Use Case แต่ละรายการได้ที่Use Case ทั่วไป