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ę).
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
}
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
trackClicks()
mierzy kliknięcia w hiperlinki, przyciski i przycisk “Wyślij” (submit) formularzy;
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.
Źródła
Dokumentacja biblioteki Ahoy.js
Mozilla Web Docs, HTTP Cookies