Kể từ ngày 1 tháng 7 năm 2023, Universal Analytics (UA) sẽ ngừng hoạt động, tức là công cụ này sẽ ngừng xử lý dữ liệu. Các tài sản Analytics 360 sẽ ngừng hoạt động từ ngày 1 tháng 10 năm 2023. Di chuyển sang Google Analytics 4.

Cookie và phương pháp nhận dạng người dùng

Để Google Analytics xác định rằng hai lượt truy cập riêng biệt thuộc về cùng một người dùng, một giá trị nhận dạng duy nhất (liên kết với người dùng cụ thể đó) phải được gửi cùng với mỗi lượt truy cập.

Thư viện analytics.js thực hiện việc này thông qua trường Mã ứng dụng khách, một chuỗi duy nhất được tạo ngẫu nhiên được lưu trữ trong cookie của trình duyệt. Do đó, các lượt truy cập tiếp theo vào cùng một trang web có thể được liên kết với cùng một người dùng.

Theo mặc định, analytics.js sử dụng một cookie duy nhất của bên thứ nhất có tên là _ga để lưu trữ Mã ứng dụng. Tuy nhiên, bạn có thể tùy chỉnh tên, miền và thời gian hết hạn cookie của cookie. Các cookie khác do analytics.js tạo bao gồm _gid, AMP_TOKEN_gac_<property-id>. Các cookie này lưu trữ mã nhận dạng được tạo ngẫu nhiên và thông tin chiến dịch khác về người dùng.

Việc sử dụng cookie cho phép analytics.js xác định người dùng riêng biệt trên các phiên duyệt web, nhưng không thể xác định người dùng riêng biệt trên các trình duyệt hoặc thiết bị khác nhau. Nếu trang web của bạn có hệ thống xác thực riêng, thì bạn có thể sử dụng tính năng Mã nhận dạng khách hàng (ngoài Mã ứng dụng khách) để xác định chính xác hơn một người dùng trên tất cả thiết bị mà họ sử dụng để truy cập vào trang web của bạn.

Hướng dẫn này giải thích cách tùy chỉnh các chế độ cài đặt cookie cũng như cách thiết lập trường mã nhận dạng người dùng để đo lường hoạt động của người dùng một cách chính xác hơn trong các phiên hoạt động.

Bảng sau đây trình bày các giá trị trường cookie mặc định mà analytics.js sử dụng:

Tên trường Loại giá trị Giá trị mặc định
cookieName văn bản _ga
cookieDomain văn bản Kết quả của biểu thức JavaScript sau:
document.location.hostname
cookieExpires số nguyên 63072000 (hai năm, tính bằng giây)
cookieUpdate boolean true
cookieFlags văn bản

Để sửa đổi bất kỳ giá trị nào trong số này, bạn có thể chỉ định các giá trị đó trong fieldObject mà bạn truyền lệnh create. Ví dụ:

ga('create', 'UA-XXXXX-Y', {
  'cookieName': 'gaCookie',
  'cookieDomain': 'blog.example.co.uk',
  'cookieExpires': 60 * 60 * 24 * 28  // Time in seconds.
  'cookieUpdate': 'false',
  'cookieFlags': 'SameSite=None; Secure',
});

Trường cookie phổ biến nhất cần đặt là cookieDomain. Do đó, lệnh create chấp nhận trường cookieDomain làm thông số thứ ba không bắt buộc để tiện lợi:

ga('create', 'UA-XXXXX-Y', 'blog.example.co.uk');

Thẻ Google Analytics đề xuất đặt chuỗi 'auto' cho trường cookieDomain:

ga('create', 'UA-XXXXX-Y', 'auto');

Việc chỉ định 'auto' làm cookieDomain sẽ bật cấu hình miền cookie tự động. Lệnh này sẽ yêu cầu analytics.js tự động xác định miền cookie tốt nhất để sử dụng.

Cấu hình miền cookie tự động đặt cookie _ga trên miền cấp cao nhất có thể. Ví dụ: nếu địa chỉ trang web của bạn là blog.example.co.uk, thì analytics.js sẽ đặt miền cookie thành .example.co.uk. Ngoài ra, nếu analytics.js phát hiện thấy bạn đang chạy máy chủ cục bộ (ví dụ: localhost), thì thao tác này sẽ tự động đặt cookieDomain thành 'none'.

Mỗi khi một lượt truy cập được gửi đến Google Analytics, thời gian hết hạn cookie sẽ được cập nhật thành tổng của thời gian hiện tại và giá trị trong trường cookieExpires. Điều này có nghĩa là nếu bạn sử dụng thời gian cookieExpires mặc định là 2 năm và người dùng truy cập trang web của bạn mỗi tháng, thì cookie của họ sẽ không bao giờ hết hạn.

Nếu bạn đặt thời gian cookieExpires thành 0 (không) giây, cookie sẽ chuyển thành cookie dựa trên phiên và hết hạn khi phiên hoạt động của trình duyệt hiện tại kết thúc:

Khi bạn đặt cookieUpdate thành true (giá trị mặc định), analytics.js sẽ cập nhật cookie mỗi lần tải trang. Thao tác này sẽ cập nhật thời hạn cookie được đặt tương ứng với lượt truy cập gần đây nhất vào trang web. Ví dụ: nếu cookie hết hạn được đặt thành một tuần và người dùng truy cập bằng cùng một trình duyệt sau mỗi năm ngày, thì thời hạn cookie sẽ được cập nhật cho mỗi lượt truy cập, do đó sẽ không bao giờ hết hạn.

Khi bạn đặt thành false, các cookie sẽ không được cập nhật trong mỗi lượt tải trang. Điều này có ảnh hưởng của việc hết hạn cookie so với lần đầu tiên người dùng truy cập vào trang web.

Gắn thêm cờ vào cookie khi đặt. Cờ phải được phân tách bằng dấu chấm phẩy.

Bạn không nên trực tiếp truy cập vào các tập hợp cookie analytics.js, vì định dạng cookie có thể thay đổi trong tương lai. Thay vào đó, nhà phát triển nên sử dụng readyCallback để chờ cho đến khi analytics.js được tải, sau đó nhận giá trị clientId được lưu trữ trên trình theo dõi.

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

Tắt cookie

Trong một số trường hợp, bạn có thể muốn sử dụng cơ chế lưu trữ của riêng mình (chẳng hạn như localStorage hoặc Worker Worker) để lưu giữ mã ứng dụng khách trong các phiên hoạt động mà không cần sử dụng cookie. Bạn có thể ngăn Analytics.js đặt cookie bằng cách đặt trường storage thành 'none'.

ga('create', 'UA-XXXXX-Y', {
  'storage': 'none'
});

Nếu đang tự lưu trữ trường clientId, bạn cần đặt trường cliendId khi tạo trình theo dõi.

ga('create', 'UA-XXXXX-Y', {
  'storage': 'none',
  'clientId': '76c24efd-ec42-492a-92df-c62cfd4540a3'
});

Để vô hiệu hoá cookie _gac_<property-id>, hãy đặt trường storeGac thành false trong lệnh create:

ga('create', 'UA-XXXXX-Y', {
  storeGac: false,
});

Sử dụng localStorage để lưu trữ ID ứng dụng khách

Mã mẫu sau đây cho biết cách bạn có thể sửa đổi thẻ JavaScript để sử dụng localStorage nhằm lưu trữ Mã ứng dụng khách thay vì cookie:

var GA_LOCAL_STORAGE_KEY = 'ga:clientId';

if (window.localStorage) {
  ga('create', 'UA-XXXXX-Y', {
    'storage': 'none',
    'clientId': localStorage.getItem(GA_LOCAL_STORAGE_KEY)
  });
  ga(function(tracker) {
    localStorage.setItem(GA_LOCAL_STORAGE_KEY, tracker.get('clientId'));
  });
}
else {
  ga('create', 'UA-XXXXX-Y', 'auto');
}

ga('send', 'pageview');

User ID

User ID cho phép phân tích nhóm phiên, trên thiết bị, bằng cách sử dụng chuỗi ID duy nhất, ổn định và không nhận dạng cá nhân đại diện cho người dùng. Để tìm hiểu lý do bạn nên triển khai User-ID, hãy xem bài viết Lợi ích khi sử dụng tính năng User-ID.

Để triển khai Mã nhận dạng khách hàng bằng analytics.js:

  1. Cung cấp mã chuỗi duy nhất, ổn định và không nhận dạng cá nhân của bạn để đại diện cho từng người dùng đã đăng nhập. Mã này thường do hệ thống xác thực cung cấp.
  2. Đặt Mã nhận dạng khách hàng trên trình theo dõi:
ga('create', 'UA-XXXXX-Y', 'auto', {
  userId: USER_ID
});
ga('send', 'pageview');

Xử lý quy trình xác thực sau khi tải trang

Khi tạo Ứng dụng trang đơn hoặc các trang web động khác xử lý việc đăng nhập của người dùng sau lần tải trang ban đầu, quá trình đặt giá trị mã nhận dạng người dùng trên trình theo dõi không thể xảy ra tại thời điểm tạo.

Trong những trường hợp như vậy, bạn có thể sử dụng lệnh set để đặt giá trị trên công cụ theo dõi ngay khi biết.

// Creates the tracker and sends a pageview as normal
// since the `userId` value is not yet known.
ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');

// At a later time, once the `userId` value is known,
// sets the value on the tracker.
ga('set', 'userId', USER_ID);

// Setting the userId doesn't send data to Google Analytics.
// You must also use a pageview or event to send the data.
ga('send', 'event', 'authentication', 'user-id available');

Khi sử dụng phương pháp này, các lượt truy cập được gửi trước khi trường userId được đặt sẽ không chứa các giá trị mã nhận dạng người dùng. Tuy nhiên, thông qua một quy trình có tên là Hợp nhất phiên, Google Analytics có thể liên kết các lượt truy cập này với đúng người dùng tại thời điểm xử lý.