Gửi các sự kiện Measurement Protocol đến Google Analytics

Hướng dẫn này giải thích cách bạn có thể gửi Luồng ứng dụng và web Google Analytics Measurement Protocol sự kiện sang một máy chủ Google Analytics để bạn có thể xem các sự kiện Measurement Protocol trong báo cáo Google Analytics.

Hãy chọn nền tảng bạn muốn xem trong hướng dẫn này:

Định dạng yêu cầu

Measurement Protocol của Google Analytics chỉ hỗ trợ các yêu cầu HTTP POST.

Để gửi một sự kiện, hãy sử dụng định dạng sau:

POST /mp/collect HTTP/1.1
HOST: www.google-analytics.com
Content-Type: application/json
<payload_data>

Bạn phải cung cấp những thông tin sau trong URL yêu cầu:

  • api_secret: BÍ MẬT API được tạo trong giao diện người dùng Google Analytics.

    Để tạo khoá bí mật mới, hãy chuyển đến mục Quản trị > Luồng dữ liệu > chọn luồng của bạn > Measurement Protocol > Tạo.

  • measurement_id: Mã đo lường liên kết với một luồng, nằm trong Giao diện người dùng của Google Analytics trong mục Quản trị > Luồng dữ liệu > chọn luồng > Mã đo lường.

    measurement_id không phải là Mã luồng của bạn.

Hãy xem tham số truy vấn để tham khảo đầy đủ.

Bạn phải cung cấp các thông tin sau trong nội dung yêu cầu:

  • client_id: Giá trị nhận dạng duy nhất của ứng dụng. Điều này khác với Firebase app_instance_id. Sử dụng gtag.js('get').
  • user_id: Không bắt buộc. Giá trị nhận dạng duy nhất của người dùng. Chỉ có thể chứa UTF-8 ký tự. Tham khảo bài viết User-ID cho bản phân tích trên nhiều nền tảng để biết thêm thông tin về mã nhận dạng này.

  • consent: Không bắt buộc. Tìm hiểu cách đặt sự đồng ý cài đặt.

  • timestamp_micros: Không bắt buộc. Thời gian bắt đầu của hệ thống Unix, tính bằng micrô giây, đối với các sự kiện và thuộc tính người dùng trong yêu cầu. Nếu không được chỉ định, mặc định là thời gian yêu cầu.

  • events: Một mảng các mục sự kiện. Bạn có thể thêm nhiều sự kiện vào một của bạn.

    Để hoạt động của người dùng hiển thị trong các báo cáo như Thời gian thực, Bạn phải cung cấp engagement_time_msecsession_id trong params cho event. Tham số engagement_time_msec sẽ phản ánh thời gian tương tác của sự kiện tính bằng mili giây.

    Ví dụ:

```json { "client_id": "123456.7654321", "events": [ { "name": "campaign_details", "params": { "campaign_id": "google_1234", "campaign": "Summer_fun", "source": "google", "medium": "cpc", "term": "summer+travel", "content": "logolink", "session_id": "123", "engagement_time_msec": "100" } } ] } ``` While `session_start` is a [reserved event name](/analytics/devguides/collection/protocol/ga4/reference#reserved_names), creating a new `session_id` creates a new session without the need to send `session_start`. Understand how [sessions are counted](//support.google.com/analytics/answer/9191807). ## Try it Here's an example you can use to send a [`tutorial_begin`] event to your Google Analytics server: ```javascript const measurement_id = `G-XXXXXXXXXX`; const api_secret = `<secret_value>`; fetch(`https://www.google-analytics.com/mp/collect?measurement_id=${measurement_id}&api_secret=${api_secret}`, { method: "POST", body: JSON.stringify({ client_id: 'XXXXXXXXXX.YYYYYYYYYY', events: [{ name: 'tutorial_begin', params: {}, }] }) }); ``` ## Override timestamp The Measurement Protocol uses the *first* timestamp it finds in the following list for each event in the request: 1. The `timestamp_micros` of the event. 1. The `timestamp_micros` of the request. 1. The time that the Measurement Protocol receives the request. The following example sends a request-level timestamp that applies to all of the events in the request. As a result, the Measurement Protocol assigns both the `tutorial_begin` and `join_group` events a timestamp of `requestUnixEpochTimeInMicros`. ```javascript { "timestamp_micros": requestUnixEpochTimeInMicros, "events": [ { "name": "tutorial_begin" }, { "name": "join_group", "params": { "group_id": "G_12345", } } ] } ``` The following example sends both a request-level timestamp and an event-level timestamp. As a result, the Measurement Protocol assigns the `tutorial_begin` event a timestamp of `tutorialBeginUnixEpochTimeInMicros`, and the `join_group` event a timestamp of `requestUnixEpochTimeInMicros`. ```javascript { "timestamp_micros": requestUnixEpochTimeInMicros, "events": [ { "name": "tutorial_begin", "timestamp_micros": tutorialBeginUnixEpochTimeInMicros }, { "name": "join_group", "params": { "group_id": "G_12345", } } ] } ``` ## Limitations The following limitations apply to sending Measurement Protocol events to Google Analytics: Note: For information on the limitations of 360 features, see [Google Analytics 360](//support.google.com/analytics/answer/11202874). * Requests can have a maximum of 25 events. * Events can have a maximum of 25 parameters. * Events can have a maximum of 25 user properties. * User property names must be 24 characters or fewer. * User property values must be 36 characters or fewer. * Event names must be 40 characters or fewer, can only contain alpha-numeric characters and underscores, and must start with an alphabetic character. * Parameter names including item parameters must be 40 characters or fewer, can only contain alpha-numeric characters and underscores, and must start with an alphabetic character. * Parameter values including item parameter values must be 100 characters or fewer for a standard Google Analytics property, and 500 characters or fewer for a Google Analytics 360 property. * Item parameters can have a maximum of 10 custom parameters. * The post body must be smaller than 130kB. * App Measurement Protocol events sent to Google Analytics 4 don't populate Search audiences in Google Ads for app users. For additional requirements of each use case, see [common use cases].