GDG DevFest 2015

28 listopada 2015 r. miałem przyjemność wystąpienia na GDG DevFest 2015 – dorocznym spotkaniu developerów skupionych wokół technologii Google.

Temat prezentacji: Poznaj lepiej użytkowników Twojego serwisu z Google Analytics

 


 

Spotkanie cieszyło się dużym zainteresowaniem uczestników, czego dowodem było wiele ciekawych pytań m.in. o strukturę konta i poziomy uprawnień w Google Analytics oraz wykorzystania Google Tag Manager do szybkiego wdrażania kodów analitycznych na stronę www.

 

 

Więcej informacji na stronie konferencji: http://devfest.pl/

Poziom naładowania baterii w Google Analytics + Google Tag Manager

Dla danych, które analizujemy, ważny jest kontekst. Może warto sprawdzić, czy na zachowanie użytkownika na stronie ma wpływ poziom naładowania baterii?

Poniżej modyfikacja kodu , który pozwoli zrobić to za pomocą Google Analytics oraz Google Tag Manager .

Utwórz niestandardowy tag HTML w Google Tag Manager:

Niestandardowy tag HTML w Google Tag Manager

Niestandardowy tag HTML w Google Tag Manager

Z kodem:

<script>
 if (navigator.getBattery) {
 navigator.getBattery().then(function(battery) {
 display(battery);
 });
 } else if (navigator.battery) {
 display(navigator.battery);
 } else {
 console.log("Sorry, Battery Status API is not supported");
 }
 
 function display(battery) {
 dataLayer.push({
 'battery_level': battery.level,
 'battery_is_charging': battery.charging,
 'battery_time_to_charge': battery.chargingTime,
 'battery_time_to_discharge': battery.dischargingTime,
 'event': 'battery_status'
 });
 }
</script>

Mamy już dane w dataLayer. Teraz pozostaje przechwycić ich wartości do zmiennych…

Utwórz 4 nowe zmienne w Google Tag Manager:

  • battery_level
  • battery_is_charging
  • battery_time_to_charge
  • battery_time_to_discharge

Przykład dla poziomu naładowania baterii (battery_level):

Typ: Zmienna warstwy danych
Nazwa zmiennej warstwy danych: battery_level

Zmienna z wartością ładowania baterii

Zmienna dataLayer z wartością ładowania baterii

…i wysłać do Google Analytics. Na przykład jako zdarzenie + niestandardowy wymiar do przyszłej segmentacji użytkowników 🙂 Pamiętaj, aby najpierw utworzyć niestandardowy wymiar w panelu Google Analytics.

Utwórz nowy tag w Google Tag Manager:

Typ tagu: Universal Analytics
Śledź typ: Zdarzenie

Zdarzenie Google Analytics zapisujące poziom baterii

Przykładowe zdarzenie Google Analytics zapisujące poziom baterii.

I wyślij je do Google Analytics, gdy Google Tag Manager sprawdzi status ładowania baterii.

Reguła uruchomienia zdarzenia Google Analytics:

Nowy czynnik uruchamiający

Nowy czynnik uruchamiający

Trzeba utworzyć nowy czynnik uruchamiający.

Typ: zdarzenie niestandardowe
Nazwa zdarzenia: battery_status

Reguła uruchamiająca zdarzenie

Reguła uruchamiająca zdarzenie

Podsumowując:

  1. Dodaj w Google Tag Manager niestandardowy tag HTML z kodem, który sprawdzi poziom ładowania baterii i umieści te dane w dataLayer.
  2. Odbierz dane z dataLayer do zmiennych w Google Tag Manager.
  3. Wyślij odebrane dane do Google Analytics:
    1. Utwórz tag , który wyśle zdarzenie do Google Analytics i wraz z nim ustawi wartość niestandardowego wymiaru. Dzięki temu będzie można segmentować użytkowników
    2. Wyślij zdarzenie do Google Analytics, kiedy dane o poziomie baterii będą już dostępne po wczytaniu strony.

Gotowe 🙂

 

Import JSON do Arkuszy Google w 5 minut

Korzystając z różnych narzędzi, które udostępniają API, wyniki otrzymujemy w pliku JSON. Nie jest on zbyt przyjazny dla mniej technicznych osób 🙂

Na przykład, chcąc pobrać dane o warunkach pogodowych panujących w Krakowie korzystając z Open Weather Map, wpisujemy link:

http://api.openweathermap.org/data/2.5/weather?q=Krakow,pl

I otrzymujemy wyniki:

{"coord":{"lon":19.92,"lat":50.08},"sys":{"message":0.0415,"country":"PL","sunrise":1423461660,"sunset":1423496883},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04d"}],"base":"cmc stations","main":{"temp":272.238,"temp_min":272.238,"temp_max":272.238,"pressure":985.07,"sea_level":1026.33,"grnd_level":985.07,"humidity":94},"wind":{"speed":4.94,"deg":285.5},"clouds":{"all":92},"dt":1423492206,"id":3094802,"name":"Krakow","cod":200}

Czyli w Krakowie mamy aktualnie zachmurzone niebo (Clouds) , temperatura to 272.238 F, zachód słońca o 15:48.

Jak przedstawić dane z JSON w formie bardziej czytelnej?

Z pomocą przyjdą Arkusze Google. Dane z pliku JSON zaimportujemy do tabeli. Wykorzystałem do tego celu Google Apps Script (importJSON oraz skrypt).

Utwórz nowy dokument w Arkuszach Google
Tworzenie nowego Arkusza Google

Tworzenie nowego Arkusza Google

Następnie wybierz Narzędzia -> Edytor skryptów.
Wybierz: Pusty projekt.

Edytor skryptów - Arkusze Google

Edytor skryptów – Arkusze Google

 Usuń domyślnie umieszczoną treść i wklej ten skrypt

Zmień nazwę skryptu na ImportJSON.gs

import JSON

import JSON

Gotowe.

Teraz możesz wrócić do arkusza i pobrać dane z pliku JSON do tabeli w Google Docs.

=ImportJSON("http://api.openweathermap.org/data/2.5/weather?q=Krakow,pl";"/weather/main";"noHeaders, noInherit, noTruncate")

Zwrócony wynik to Clouds (pochmurna pogoda w chwli pisania tego postu):

Wynik import JSON

Wynik import JSON

Więcej o parametrach funkcji Import JSON do Google Spreadsheet można przeczytać tutaj.

Wykrywanie i filtrowanie botów w Google Analytics

Kilka miesięcy temu  w Google Analytics pojawiła się możliwość filtrowania ruchu generowanego przez boty. Boty to skrypty psujące nasze dane w Google Analytics, generując sztuczny ruch na stronie, który rejestrowany w statystykach przez Google Analytics.

Skrypty te mogą być tworzone w różnych celach – np. automatycznego pobieranie treści strony (scrapery), indeksowania zawartości strony przez wyszukiwarki (crawlery) czy też oprogramowanie monitorujące działanie strony, które w określonych odstępach czasu wczytuje jej kod.

Kilka lat wstecz roboty sieciowe pobierały kod strony, ale nie wykonywały kodu Java Script zawartego na stronie – takich wizyt na stronie nie widzieliśmy w raportach Google Analytics. Od pewnego czasu jednak sytuacja uległa zmianie i coraz więcej botów wykonuje ten kod, symulując zachowanie rzeczywistego użytkownika. W efekcie wizyta bota trafia do raportów Google Analytics.

Jak wygląda to aktualnie?

Ruch generowany przez roboty sieciiowe (Źródło: Incapsula)

Ruch generowany przez roboty sieciowe w 2014 r. (Źródło: Incapsula)

W 2014 r. roboty sieciowe generowały 56% ruchu w całym Internecie.

Dla większości serwisów internetowych udział ruchu generowanego przez boty to od 63% do 80%.

Źródło: Incapsula

Nie jest to sytuacja pożądana – zaciemnia nam obraz prawdziwej sytuacji, ponieważ analizujemy ruch prawdziwych użytkowników i użytkowników-robotów. W końcu użytkownik-robot nie dokona konwersji w naszym serwisie 🙂

Zachowanie robota sieciowego w Google Analytics

Zachowanie robota sieciowego w Google Analytics.

Co zrobić, aby ustrzec się przed botami i poprawić jakość zbieranych danych?

1) Możemy włączyć wykluczenie ruchu generowanego przez boty z poziomu Google Analytics

Z poziomu Google Analytics przejdź do zakładki Administracja -> Ustawienia widoku

Ustawienia widoku w Google Analytics

Ustawienia widoku w Google Analytics

i zaznacz opcję:

Wykluczenie botów w Google Analytics

Wykluczenie botów w Google Analytics

Uwaga – zawsze zachowaj czysty widok danych w Googole Analytics, aby nie zepsuć swoich danych w raportach gdyby coś poszło nie tak.

Podstawowy problem związany z tą funkcją to lista, z której korzysta Google Analytics  do zdefniniowania, czy mamy do czynienia z robotem sieciowym jest niezbyt dobrze przystosowana do naszego rynku. Może nie zawierać botów, które psują ruch akurat w naszym serwisie.

2) Możemy wykorzystać segmentację, aby znaleźć boty na naszej stronie

Jak zidentyfikować bota w raportach Google Analytics?

Bot to źródło ruchu, które:

  • ma współczynnik odrzuceń bliski 100%
  • średni czas trwania wizyty bliski 00:00:00
  • średnia liczba stron na wizytę bliska 1 lub 0

Dodatkowe kryteria:

  • przy włączonych danych o demografii i zainteresowaniach – nieznany wiek i płeć
  • najczęściej będzie to źródło o generujące znaczny odsetek nowych użytkowników

Ważne – aby stwierdzić, że dane źródło ruchu jest botem i nie należy go uwzględniać w analizach, należy sprawdzić czy są to pojedyncze wejścia, czy większy ruch. Skupiamy się na tych drugich. Najczęściej wystarczy przyjrzeć się źródłom, które wygenerowały przynajmniej 20 sesji w ostatnim miesiącu.

Zaczynamy poszukiwania.

Zaimportuj segment pomagający zdiagnozować źródła ruchu potencjalnie generujące spam w raportach. Do pobrania z galerii rozwiązań Google Analytics.

Michał Bryś – Google Analytics Solutions Gallery

Włączamy segment: Web spiders test

Segment - potencjalne roboty sieciowe

Segment – potencjalne roboty sieciowe.

Przechodzimy na zakładkę: Pozyskiwanie -> Ogółem -> Cały ruch -> Odesłania

Uwagę zwracają źródła ruchu, które nie są związane z naszym serwisem i spełaniają kryteria bycia robotem sieciowym (nazwa, współczynnik odrzuceń, strony / sesja / czas na stronie / współczynnik konwersji)

Potencjalne roboty sieciowe w raportach Google Analytics

Potencjalne roboty sieciowe w raportach Google Analytics

Sprawdźmy jak zachowywał się bot na całej stronie.

  • Jakie strony odwiedzał / landing page
  • Jakie urządzenia / przeglądarki / system
  • Czy konwertował?
  • Z jakiego miasta

Tworzymy przykładowy segment dla robota semalt:

Sement: Semalt w Google Analytics

Segment: Semalt w Google Analytics

Widać, że ruch był skierowany tylko na stronę główną:

Ruch bota Semalt

Ruch bota Semalt w raporcie Google Analytics

Możemy wykluczyć go z danych, tworząc filtr.

Ważne – zawsze zachowaj czysty widok bez filtrów. Skopiuj widok danych i dopiero twórz filtr wykluczający ruch botów.

Jak tworzyć filtr widoku danych? Instrukcja w Centrum Pomocy Google Analytics oraz we wpisie Macieja Lewińskiego na Google +

Kryterium filtrowania:

Utwórz filtr niestandardowy wykluczający ruch ze źródeł, które zostały zidentyfikowane jako roboty sieciowe.

Od teraz robot sieciowy przestanie psuć dane w raportach Google Analytics 🙂