Cookie dan Identifikasi Pengguna

Agar Google Analytics dapat menentukan bahwa dua hit berbeda merupakan milik pengguna yang sama, ID unik, yang terkait dengan pengguna tertentu tersebut, harus dikirim bersama setiap hit.

Library analytics.js melakukan hal ini melalui kolom Client-ID, yaitu string unik yang dihasilkan secara acak dan disimpan di cookie browser, sehingga kunjungan berikutnya ke situs yang sama dapat dikaitkan dengan pengguna yang sama.

Secara default, analytics.js menggunakan satu cookie pihak pertama bernama _ga untuk menyimpan Client ID, tetapi nama, domain, dan waktu habis masa berlaku cookie dapat disesuaikan. Cookie lain yang dibuat oleh analytics.js mencakup _gid, AMP_TOKEN, dan _gac_<property-id>. Cookie ini menyimpan ID lain yang dihasilkan secara acak dan informasi kampanye tentang pengguna.

Penggunaan cookie memungkinkan analytics.js mengidentifikasi pengguna unik pada sesi browser, tetapi tidak dapat mengidentifikasi pengguna unik pada browser atau perangkat yang berbeda. Jika situs Anda memiliki sistem autentikasi sendiri, Anda dapat menggunakan fitur User-ID, selain Client ID, untuk mengidentifikasi pengguna secara lebih akurat pada semua perangkat yang mereka gunakan untuk mengakses situs Anda.

Panduan ini menjelaskan cara menyesuaikan setelan cookie dan cara menetapkan kolom User-ID untuk mengukur aktivitas pengguna secara lebih akurat pada semua sesi.

Tabel berikut menunjukkan nilai kolom cookie default yang digunakan oleh analytics.js:

Nama Kolom Jenis Nilai Nilai default
cookieName teks _ga
cookieDomain teks Hasil ekspresi JavaScript berikut:
document.location.hostname
cookieExpires bilangan bulat 63072000 (dua tahun, dalam detik)
cookieUpdate boolean true
cookieFlags teks

Untuk mengubah salah satu nilai tersebut, Anda dapat menentukannya dalam fieldObject yang menerima perintah create. Contoh:

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',
});

Kolom cookie yang paling sering ditetapkan adalah cookieDomain, oleh karena itu, perintah create menerima kolom cookieDomain sebagai parameter ketiga opsional untuk kemudahan:

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

Tag Google Analytics yang direkomendasikan menetapkan string 'auto' untuk kolom cookieDomain:

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

Penentuan 'auto' sebagai cookieDomain akan mengaktifkan konfigurasi domain cookie otomatis, yang akan memberi tahu analytics.js agar otomatis menentukan domain cookie terbaik untuk digunakan.

Konfigurasi domain cookie otomatis menetapkan cookie _ga pada domain tingkat tertinggi yang dimungkinkan. Misalnya, jika alamat situs Anda adalah blog.example.co.uk, analytics.js akan menetapkan domain cookie ke .example.co.uk. Selain itu, jika analytics.js mendeteksi bahwa Anda menjalankan server secara lokal (misalnya dengan localhost), analytic.js akan otomatis menetapkan cookieDomain ke 'none'.

Setiap kali hit dikirim ke Google Analytics, waktu habis masa berlaku cookie akan diperbarui menjadi waktu saat ini ditambah dengan nilai kolom cookieExpires. Hal ini berarti jika Anda menggunakan waktu default cookieExpires selama dua tahun dan pengguna mengunjungi situs Anda setiap bulan, cookie pengguna tersebut tidak akan pernah berakhir.

Jika Anda menetapkan waktu cookieExpires ke 0 (nol) detik, cookie akan berubah menjadi cookie berbasis sesi dan habis masa berlakunya setelah sesi browser saat ini berakhir:

Jika cookieUpdate ditetapkan ke true (nilai default), analytics.js akan memperbarui cookie pada setiap pemuatan halaman. Hal ini akan memperbarui masa berlaku cookie agar ditetapkan secara relatif terhadap kunjungan terbaru ke situs. Misalnya, jika masa berlaku cookie ditetapkan menjadi satu minggu dan pengguna berkunjung setiap lima hari sekali dengan browser yang sama, masa berlaku cookie akan diperbarui pada setiap kunjungan, sehingga masa berlaku tersebut tidak pernah habis.

Jika ditetapkan ke false, cookie tidak akan diperbarui di setiap pemuatan halaman. Hal ini mengakibatkan masa berlaku cookie menjadi relatif terhadap saat pertama kali pengguna mengunjungi situs.

Menambahkan flag tambahan ke cookie saat ditetapkan. Flag harus dipisahkan dengan titik koma.

Anda tidak boleh mengakses langsung kumpulan analytics.js cookie, karena format cookie dapat berubah di masa mendatang. Sebagai gantinya, developer sebaiknya menggunakan readyCallback untuk menunggu hingga analytics.js dimuat, lalu dapatkan nilai clientId yang disimpan di pelacak.

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

Menonaktifkan Cookie

Terkadang, Anda mungkin ingin menggunakan mekanisme penyimpanan sendiri (seperti localStorage atau Pekerja Layanan) untuk mempertahankan Client ID di semua sesi tanpa menggunakan cookie. Anda dapat menonaktifkan analytics.js dari setelan cookie dengan menetapkan kolom storage ke 'none'.

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

Jika Anda menyimpan kolom clientId sendiri, pastikan Anda telah menetapkan kolom cliendId saat membuat pelacak.

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

Untuk menonaktifkan cookie _gac_<property-id>, tetapkan kolom storeGac ke false pada perintah create:

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

Menggunakan localStorage untuk menyimpan Client ID

Contoh kode berikut menunjukkan cara memodifikasi tag JavaScript untuk menyimpan Client ID menggunakan localStorage, bukan 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 memungkinkan analisis grup sesi, di semua perangkat, menggunakan string ID yang unik, persisten, dan tidak dapat diidentifikasi secara pribadi yang mewakili pengguna. Untuk mengetahui alasan Anda harus menerapkan User-ID, lihat Manfaat menggunakan fitur User-ID.

Untuk menerapkan User-ID dengan analytics.js:

  1. Sediakan ID string yang unik, persisten, dan tidak dapat diidentifikasi secara pribadi untuk mewakili setiap pengguna yang login. Biasanya ID ini disediakan oleh sistem autentikasi.
  2. Tetapkan User-ID pada pelacak:
ga('create', 'UA-XXXXX-Y', 'auto', {
  userId: USER_ID
});
ga('send', 'pageview');

Menangani autentikasi setelah pemuatan halaman

Saat membuat Aplikasi Web Satu Halaman atau situs dinamis lainnya yang menangani login pengguna setelah pemuatan halaman awal, proses penetapan nilai User-ID pada pelacak tidak dapat dilakukan pada waktu pembuatan.

Pada kasus seperti itu, Anda dapat menggunakan perintah set untuk menetapkan nilai pada pelacak segera setelah nilai tersebut diketahui.

// 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');

Saat menggunakan pendekatan ini, hit yang dikirim sebelum kolom userId ditetapkan tidak akan berisi nilai User-ID. Namun, melalui proses yang dikenal sebagai Penyatuan Sesi, Google Analytics dapat mengaitkan hit ini dengan pengguna yang sesuai pada waktu pemrosesan.