Pliki cookie i identyfikacja użytkownika

Aby usługa Google Analytics mogła ustalić, że 2 różne działania należą do tego samego użytkownika, z każdym działaniem musi być powiązany z nim unikalny identyfikator.

Biblioteka analytics.js umożliwia to za pomocą pola Client ID (Identyfikator klienta), czyli niepowtarzalnego, generowanego losowo ciągu znaków, który jest zapisywany w plikach cookie przeglądarki. Dzięki temu kolejne wizyty w tej samej witrynie mogą być powiązane z tym samym użytkownikiem.

Domyślnie analytics.js do przechowywania identyfikatora klienta używa 1 własnego pliku cookie o nazwie _ga, ale nazwę, domenę i czas ważności pliku cookie można dostosować. Inne pliki cookie utworzone przez analytics.js to _gid, AMP_TOKEN i _gac_<property-id>. Zawierają one inne losowo wygenerowane identyfikatory i informacje o kampaniach użytkownika.

Używanie plików cookie umożliwia tagowi analytics.js identyfikowanie unikalnych użytkowników podczas sesji przeglądania, ale nie identyfikowanie unikalnych użytkowników korzystających z różnych przeglądarek lub urządzeń. Jeśli Twoja witryna ma własny system uwierzytelniania, możesz (oprócz identyfikatora klienta) używać funkcji User-ID, aby jeszcze dokładniej identyfikować użytkownika na wszystkich urządzeniach, za których pomocą wchodzi do Twojej witryny.

Z tego przewodnika dowiesz się, jak dostosować ustawienia plików cookie i jak skonfigurować pole identyfikatora użytkownika, aby dokładniej mierzyć aktywność użytkownika w różnych sesjach.

W tabeli poniżej znajdziesz domyślne wartości pól plików cookie używane przez tag analytics.js:

Nazwa pola Typ wartości Wartość domyślna
cookieName plik tekstowy, _ga
cookieDomain plik tekstowy, Wynik wyrażenia JavaScript:
document.location.hostname
cookieExpires Liczba całkowita 63072000 (dwa lata w sekundach)
cookieUpdate boolean true
cookieFlags plik tekstowy,

Aby zmodyfikować dowolną z tych wartości, możesz podać ją w fieldObject przekazywanym w poleceniu create. Przykład:

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

Najczęściej ustawiane pole pliku cookie to cookieDomain, dlatego dla wygody polecenie create akceptuje pole cookieDomain jako opcjonalny trzeci parametr:

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

Zalecany tag Google Analytics ustawia ciąg 'auto' w polu cookieDomain:

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

Określenie 'auto' jako cookieDomain umożliwia automatyczną konfigurację domeny plików cookie, co sprawia, że kod analytics.js ma automatycznie określać najlepszą domenę plików cookie do użycia.

Automatyczna konfiguracja domeny pliku cookie ustawia plik cookie _ga na domenie najwyższego możliwego poziomu. Jeśli np. adres witryny to blog.example.co.uk, analytics.js ustawi domenę pliku cookie na .example.co.uk. Poza tym, jeśli analytics.js wykryje, że serwer działa lokalnie (np. localhost), automatycznie ustawi cookieDomain na 'none'.

Za każdym razem, gdy do Google Analytics wysyłane jest działanie, okres ważności pliku cookie jest aktualizowany do aktualnej godziny powiększonej o wartość z pola cookieExpires. Oznacza to, że jeśli użyjesz domyślnego ustawienia cookieExpires, wynoszącego 2 lata, a użytkownik odwiedza Twoją witrynę co miesiąc, jego plik cookie nigdy nie wygaśnie.

Jeśli ustawisz czas cookieExpires na 0 (zero) s, plik cookie zmieni się w plik cookie na podstawie sesji i straci ważność po zakończeniu bieżącej sesji przeglądarki:

Jeśli cookieUpdate ma wartość domyślną true, analytics.js będzie aktualizować pliki cookie przy każdym wczytaniu strony. Powoduje to ustawianie okresu ważności plików cookie względem najnowszej wizyty w witrynie. Jeśli np. okres ważności pliku cookie jest ustawiony na tydzień, a użytkownik odwiedza witrynę w tej samej przeglądarce co 5 dni, plik cookie będzie aktualizowany po każdej wizycie i w konsekwencji nigdy nie wygaśnie.

Jeśli zasada ma wartość false, pliki cookie nie są aktualizowane po każdym wczytaniu strony. Okres ważności pliku cookie będzie więc zależał od terminu pierwszej wizyty użytkownika w witrynie.

Dzięki zdefiniowaniu tego parametru możesz dołączać do pliku cookie dodatkowe flagi. Flagi muszą być rozdzielone średnikami.

Nie należy uzyskiwać bezpośredniego dostępu do zestawów plików analytics.js, ponieważ ich format może się w przyszłości zmienić. Zamiast tego deweloperzy powinni używać readyCallback i czekać na wczytanie kodu analytics.js, a potem pobierać wartość clientId zapisaną w module.

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

Wyłączanie plików cookie

W niektórych przypadkach możesz chcieć użyć własnego mechanizmu przechowywania danych (np. localStorage lub skryptu service worker), aby zachować identyfikator klienta w wielu sesjach bez używania plików cookie. Aby wyłączyć zapisywanie plików cookie za pomocą tagu analytics.js, w polu storage ustaw wartość 'none'.

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

Jeśli przechowujesz pole clientId samodzielnie, musisz ustawić pole cliendId podczas tworzenia tagu śledzenia.

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

Aby wyłączyć pliki cookie _gac_<property-id>, ustaw pole storeGac na false w poleceniu create:

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

Zapisywanie identyfikatora klienta za pomocą lokalnej pamięci masowej

Ten przykładowy kod pokazuje, jak można zmodyfikować tag JavaScript, by przechowywać identyfikator klienta localStorage, a nie pliki 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');

Identyfikator użytkownika

Funkcja User-ID umożliwia analizę grup sesji na różnych urządzeniach z wykorzystaniem niepowtarzalnego, trwałego i nieumożliwiającego poznania tożsamości osób identyfikatora, składającego się z ciągu znaków, który reprezentuje użytkownika. Aby dowiedzieć się, dlaczego warto zaimplementować funkcję User ID, przeczytaj artykuł Zalety korzystania z tej funkcji.

Aby zaimplementować funkcję User ID za pomocą tagu analytics.js:

  1. Podaj własny, unikalny, trwały i nieumożliwiający identyfikacji osoby identyfikator ciągu, który będzie reprezentował każdego zalogowanego użytkownika. Jest on najczęściej udostępniany przez system uwierzytelniania.
  2. Ustaw User ID na trackerze:
ga('create', 'UA-XXXXX-Y', 'auto', {
  userId: USER_ID
});
ga('send', 'pageview');

Obsługa uwierzytelniania po wczytaniu strony

Gdy tworzysz aplikacje jednostronicowe lub inne dynamiczne witryny, które obsługują logowanie użytkownika po wstępnym wczytaniu strony, proces ustawiania wartości identyfikatora User-ID w tagu śledzenia nie może nastąpić w momencie tworzenia.

W takich przypadkach możesz użyć polecenia set, aby ustawić wartość w module śledzącym, gdy tylko będzie znana.

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

Przy tej metodzie działania wysłane przed ustawieniem pola userId nie będą zawierać wartości identyfikatora użytkownika. Jednak dzięki procesowi zwanemu ujednoliceniem sesji Google Analytics może w czasie przetwarzania powiązać te działania z właściwym użytkownikiem.