Moduł analityki

Mimo swoich wad, możliwości systemów do automatyzacji marketingu pozwalają firmom na osiągnięcie bardzo wysokich zwrotów z inwestycji w działania marketingowe. Systemy te zazwyczaj charakteryzują się wysokim stopniem skomplikowania, zarówno po stronie użytkownika, jak i programisty. System automatyzacji marketingu można podzielić na kilka modułów: analityki, segmentacji i akcji.

Moduł analityki ma dwa główne zadania: rozpoznać użytkownika i obserwować jego poczynania. Istnieje wiele implementacji analityki internetowej, między innymi wspomiany wcześniej Google Analytics. Działanie modułu analityki przedstawię na przykładzie biblioteki Ahoy.js napisanej w języku JavaScript oraz dokumentacji Google Analytics. Ahoy.js dzięki językowi JavaScript działa całkowicie po stronie klienta (w przeglądarkach osób odwiedzających stronę).

Identyfikacja za pomocą cookies

Cookies (ciasteczka) to niewielka ilość danych zapisywana w przeglądarce internetowej, która umożliwia zapamiętanie pewnych informacji na stronie internetowej, jak np. zawartość koszyka w sklepie internetowym lub rozpoznanie wcześniej zalogowanego użytkownika. Moduł analityki wykorzystuje cookies do identyfikacji użytkownika za pomocą unikalnego, niepowtarzalnego numeru identyfikacyjnego. Numer ten jest generowany podczas pierwszej wizyty i wykorzystywany podczas kolejnych do połączenia aktywności użytkownika pomiędzy wizytami. Wykorzystywana jest do tego funkcja biblioteki Ahoy.js: generateId().

Ważne jest rozróżnienie pojęć odwiedzającego (ang. visitor) od wizyty (visit). Odwiedzający to urządzenie (komputer, telefon) z zapisanym na stałe unikalnym numerem identyfikacyjnym ważnym przez dwa lata, natomiast wizyta to wszystkie akcje wykonane przez odwiedzającego w danym przedziale czasu. Wizyta może trwać pół godziny (w Google Analytics) lub więcej - w Ahoy.js zastosowany jest czas czterech godzin.

Biblioteka Ahoy.js zawiera funkcję createVisit(), która zapisuje nowego oraz rozpoznaje powracającego użytkownika przy pomocy cookies ahoy_visit oraz ahoy_visitor. Najpierw sprawdza ona wartości tych cookies - jeśli istnieją obydwa, oznacza to, że użytkownik jest rozpoznany i wciąż trwa jego czterogodzinna wizyta - wszystkie jego akcje zostaną zapisane jako wykonane w czasie tej wizyty. Jeśli ciasteczko ahoy_visit nie istnieje, oznacza to, że minęły cztery godziny od rozpoczęcia wizyty i ciasteczko wygasło.

Wówczas Ahoy.js tworzy je od nowa z obecną datą i godziną jako czasem rozpoczęcia nowej wizyty oraz nowo wygenerowanym numerem identyfikacyjnym. Gdy nie istnieją ciasteczka ahoy_visit oraz ahoy_visitor, oznacza to, że dany użytkownik nie został rozpoznany - jest to nowy odwiedzający. Wtedy ciasteczka zostają utworzone na nowo - ahoy_visitor z unikalnym numerem identyfikacyjnym odwiedzającego i czasem wygaśnięcia dwa lata oraz ahoy_visit z czasem wygaśnięcia cztery godziny. Za utworzenie ciasteczek odpowiada funkcja setCookie().

Funkcja generateId() powstała w oparciu o specyfikację RFC412220 i, mimo, że nie gwarantuje stuprocentowej bezkolizyjności pomiędzy wygenerowanymi numerami Id, prawdopodobieństwo powtórzenia jest tak znikome (1 do 5.3x10 36 ), że w praktyce można je uznać za niemożliwe.

Po odczytaniu lub wygenerowaniu unikalnych identyfikatorów dla odwiedzającego i wizyty, funkcja pobiera kolejne informacje: aktualny adres URL, wysokość oraz szerokośćokna przeglądarki (rozdzielczość okna) i referer, po czym przy pomocy funkcji sendRequest() wysyła je jako zapytanie POST w formacie JSON pod adres /ahoy/visits, gdzie serwer zajmuje się ich przetworzeniem oraz umieszczeniem w bazie danych.

Payload wysyłany przez Ahoy.js może wyglądać tak, jak w przykładzie poniżej:

{
visit_token: "ec0f3a70-4489-417f-bf9b-3142ccf9b738",
visitor_token:
"2aaabcc2-b838-4d90-a237-df33ab8e0780",
platform: “Web”,
landing_page: “https://www.example.com”,
screen_width: 1280,
screen_height: 720
}

Monitorowanie aktywności użytkownika

Głównym zadaniem biblioteki Ahoy.js jest monitorowanie aktywności, do czego służy funkcja funkcja track(). Biblioteka nie odwołuje się do niej jednak bezpośrednio, a korzysta z funkcji pomocniczych: trackView(), trackClicks(), trackSubmits(), trackChanges() i trackAll(), które generują tzw. properties - zestaw informacji o wykonanych przez użytkownika akcjach (eventach):

  • trackView() zapisuje odwiedzone podstrony

    • parametry:
      • URL - adres www podstrony (np. http://example.com/welcome)
      • title - tytuł podstrony (np. Example Site)
      • page - ścieżka podstrony (np. /welcome)
    • jako argumenty dla trackView można dostarczyć dowolne dodatkowe parametry, które zostaną wysłane na serwer, np. kategorię odwiedzanego artykułu
  • trackClicks() mierzy kliknięcia w hiperlinki, przyciski i przycisk “Wyślij” (submit) formularzy;

    • parametry:
      • tag - tag HTML
      • id - identyfikator elementu
      • class - klasa elementu
      • text - wartość text elementu
      • href - URL do którego kieruje element
  • trackSubmits() raportuje wypełnienia formularzy na stronie

  • trackChanges() monitoruje zmiany w polach “input”, “textarea” i “select”

  • trackAll() wywołuje wszystkie powyższe funkcje pomocniczne

Dopiero funkcje pomocnicze wywołują główną funkcję track(), dostarczając dwa argumenty: name (nazwę akcji, np. $view w przypadku trackView()) oraz zapisane wartości parametrów (properties).

Funkcja track() z kolei, tworzy obiekt event, który zawiera szereg informacji na temat wykonywanej przez użytkownika akcji:

ahoy.track = function (name, properties) {
// generate unique id
var event = {
id: generateId(),
name: name,
properties: properties || {},
time: (new Date()).getTime() / 1000.0
};

Jako pierwszy generowany jest opisany wcześniej unikalny numer identyfikacyjny id eventu. Kolejno, zapisywana jest nazwa eventu ($view, $click, $submit lub $change), parametry z funkcji pomocniczej oraz aktualny czas. Gdy zmienna event jest gotowa, sprawdzany jest status wizyty użytkownika. Funkcje getVisitId() oraz getVisitorId() pobierają identyfikatory zapisane w ciasteczkach (lub, jeśli identyfikatory nie istnieją, są tworzone przy pomocy opisanej wyżej funkcji createVisit()) i dopisują je do zmiennej event jako visit_token.

Tak przygotowany zestaw danych jest już gotowy do przekazania dalej do serwera. Zostaje on wysłany pod adres /ahoy/events przy pomocy funkcji Web API: navigator.sendBeacon lub, jeśli jest ona niedostępna, jako asynchroniczne zapytanie POST poprzez AJAX.

Czytaj dalej: Moduł segmentacji


Źródła

Dokumentacja biblioteki Ahoy.js

Mozilla Web Docs, HTTP Cookies

Google Analytics, Cookies and User Identification

Analytics help, How a web session is defined in Analytics