Rubriky
Blog o Internetovém marketingu Blog o webové analytice

Počasí v Google Analytics – pomocí Google Tag Manageru (HTTPS verze)

Top- Počasí v Google analytics přes GTM httpsChovají se lidi podle počasí?

Samozřejmě a docela výrazně, platí to prakticky pro všechny venkovní činnosti, pohostinství, turistiku, zahrádkářství, bazény atd.

Aktualizace
21.1.2016 Yahoo zrušil část API potřebnou pro funkci, pokud nemáte HTTPS můžete použít starou verzi od Simo Ahava, pokud máte HTTPS tak doporučuji stoupnout dané značky v GTM. V budoucnu bych to mohl zase přepsat až najdou nějaké další vhodné HTTPS API.

Aktualizace
Ošetření vstupu dat o teplotě proti problému s float a použití čárky , oprava řádků.
Nahraďte řádky 47-48 v anglické verzi a 234-235 v české verzi za:

temperaturevalue = parseFloat((dataweather['query']['results']['channel']['item']['condition']['temp']).replace(',','.'));
temperature = parseTemp(temperaturevalue);

A proč to už nemáte?

No zasekl jsem se na 3 kroku u Sima 🙂 atd . (Opravdu v tom nejste sami 🙂 ). Případně jsem nevěděl, že to jde.

Jak mi to dlouho bude trvat?

5-15min podle vaší šikovnosti.

K čemu mi to bude?

  1. Poznáte lépe své zákazníky.
  2. Můžete na to navázat reklamu. Poznat vzory chování dle počasí a podle nich měnit cenu reklamy, spouště ji a vypínat.
  3. Jste hračička a chcete si to prostě užít 🙂

Měření počasí v Google Analytics přes Google tag manager

V čem je toto měření  počasí odlišné?

Měření běží na HTTPS, takže ho můžete použít jak na klasickém HTTP webu. Ale i na HTTPS webu, kde by klasické měření počasí bylo blokováno, protože bylo přes nezabezpečený protokol a vznikal by mix content, který by prohlížeče blokovali.

Ve starším řešení od Sima mělo měření  mírně posunutý parser teploty o 2,5 °C, díky chybičce v zaokrouhlování.

Je přidána ještě přesné teplota jako hodnota eventu, kde je pak vidět i průměrná teplota v průměrné hodnotě události.

Tato verze dává výstup v angličtině a češtině , teplota je ve stupních Celsia.

0. Co potřebuji ještě než začnu?

  1. Mít na webu Google Tag manager a přístup do něj s právy (pokud nemáte práva publikovat, musíte si to pak nechat schválit vaším webmasterem,)
  2. Mít na webu nastavené měření přes Google Analytics (Universal Analytics), pro staré verze kódu to nebude fungovat.
  3. Mít práva v Google Analytics pro úpravu ve službě.

1. Vytvoření vlastních proměnných a cookies v GTM

Kde?

Google tag manager > Proměnné

Pro funkci je dobré mít zatržené na stránce Proměnné je nutné mít zatržené Nástroje – Event

Vytvoření proměnných:

V celkem bude potřeba celkem vytvořit 3x Proměnná datové vrstvy , 1x Cookie první strany, pro vytvoření stačí kliknout na červené tlačítko Nová.

Vytvoření cookie první strany – Cookie-Session-weather
  1. Proměnné > Nová >
  2. Typ: Soubor cookie první strany
  3. Pojmenovat proměnou „Cookie-Session-weather“
  4. Název cookie „sessionweather“
  5. Uložit
Vytvoření proměnné datové vrstvy – DLV-Weather
  1. Proměnné > Nová >
  2. Typ: Proměnná datové vrstvy
  3. Pojmenovat proměnou „DLV-Weather“
  4. Název proměnné datové vrstvy „weather“
  5. Uložit
Vytvoření proměnné datové vrstvy – DLV-Temperature
  1. Proměnné > Nová >
  2. Typ:Proměnná datové vrstvy
  3. Pojmenovat proměnou „DLV-Temperature“
  4. Název proměnné datové vrstvy „temperature“
  5. Uložit
Vytvoření proměnné datové vrstvy – DLV-TemperatureValue
  1. Proměnné > Nová >
  2. Typ: Proměnná datové vrstvy
  3. Pojmenovat proměnou „DLV-TemperatureValue“
  4. Název proměnné datové vrstvy „temperaturevalue“
  5. Uložit
Výsledek bude vypadat následovně:

Vytvoření vlastních proměných 3 - Počasí v Google analytics přes GTM https

 

2. Vytvoření pravidla v GTM – Event – weatherDone

Kde?

Google tag manager > Pravidla> Nové

Vytvoření pravidla:

  1. Pojmenovat „Event – weatherDone“
  2. Vybrat: Vlastní událost
  3. Spustit při: Název události „weatherDone“
  4. UložitWeatherDone- Počasí v Google analytics přes GTM https

 

3. Vytvoření vlastních dimenzí v Google Analytics

Kde?

Google Analytics > Správce > Služba > Vlastní definice > Vlastní dimenze > nová

Je potřeba vytvořit 2 vlastní dimenze:

Proměnná č.1 :

  1. Pojmenovat ji vlastní dimenzi „Počasí – Weather“
  2. Rozsah „návštěva“
  3. Aktivní – zaškrtnout
  4. Uložit

Proměnná č.2 :

  1. Pojmenovat ji vlastní dimenzi „Teplota – Temperature“
  2. Rozsah „návštěva“
  3. Aktivní – zaškrtnout
  4. Uložit

Po vytvoření je nutné si poznačit Index nově vytvořených vlastních dimenzí, protože je pak budeme používat v  GTM.

 

Google Analytics nastavení - Počasí v Google analytics přes GTM https

 

 

4. Vytvoření značek v GTM

4.1 Značka nástroje počasí

Kde?

Google tag manager > Značky > Nová

  1. Pojmenovat značku „Utility-HTML-Weather“
  2. Typ značky: Vlastní HTML
  3. Vložit kód nástroje
  4. Spustit při: Všechny stránky
  5. Uložit značku

Vylepšení:
Doporučuji vyloučit interní stránky webu, jakou jsou stránky košíku a nákupního procesu.

Utility-Html-Weather- Počasí v Google analytics přes GTM https

 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
// If you already have jquery loaded, you can comment out the previous line.
<script>
 (function() {
 if (typeof {{Cookie-Session-weather}} === 'undefined') {
 try {
 // HTTPS version of weather by Marek Lecián
 // For more info: https://mareklecian.cz/pocasi-v-google-analytics-pomoci-google-tag-manageru-https-verze/ 

 // Set up variables for the API call
 var endpointgeo = 'https://freegeoip.net/json/';  // Free HTTPS GeoIP API
 var latitude = 'Undefined';
 var longitude = 'Undefined';
 var weather = 'Undefined';
 var temperature = 'N/A';
 var temperaturevalue = 'N/A';
 
 // Build a better simple temperature parser
 var parseTemp = function(temp) { 
 if (temp < 0)
 {return (5*Math.round((temp+2.5)/5))+'°C - '+((5*Math.round((temp+2.5)/5))-5)+'°C';}
 else if (temp > 0)
 {return (5*Math.round((temp-2.5)/5))+'°C - '+((5*Math.round((temp-2.5)/5))+5)+'°C';}
 else if (temp === 0) {return '0°C';}
 return 'N/A';
 };
 
 // Get latitude and longitude of the visitor
 jQuery.ajax({
 type : 'POST',
 dataType : 'jsonp',
 url : endpointgeo + '?callback=?',
 async : true,
 success : function(datageo) {
 latitude = datageo['latitude'];
 longitude = datageo['longitude'];
 
 // Make the weather API call
 var endpoint = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.placefinder%20where%20text=%27"+latitude+"%20"+longitude+"%27%20and%20gflags=%27R%27%20)%20and%20u=%27c%27&format=json";
 jQuery.ajax({
 type : 'POST',
 dataType : 'jsonp',
 url : endpoint,
 async : true,
 success : function(dataweather) {
 weather = dataweather['query']['results']['channel']['item']['condition']['text'];
 temperaturevalue = parseFloat((dataweather['query']['results']['channel']['item']['condition']['temp']).replace(',','.'));
 temperature = parseTemp(temperaturevalue);
 },
 error : function(xhr, textStatus, errorThrown) 
 {console.log('Error while fetching weather data :: ' + errorThrown);},
 complete : function() {
 window.dataLayer.push({
 'event' : 'weatherDone',
 'weather' : weather, // event action
 'temperature' : temperature, // event label
 'temperaturevalue' : temperaturevalue // event value
 });
 }
 });
 },
 error : function(xhr, textStatus, errorThrown) {console.log('Error while fetching geo data :: ' + errorThrown);},
 complete : function() {;}
 });
 } catch(e) {
 window.dataLayer.push({
 'event' : 'APIError', 
 'APIErrorMSG' : e.message
 });
 }
 } 
 
 // Reset "session" cookie with a 30-minute expiration
 var d = new Date();
 d.setTime(d.getTime()+1800000);
 var expires = "expires="+d.toGMTString();
 document.cookie = "sessionweather=1; "+expires+"; path=/";
 })();
</script>

Verze s češtinou:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
// Pokud již máte načtenou svoji jquery, můžete předchozí řádek zakomentovat.
<script>
  (function() {
    if (typeof {{Cookie-Session-weather}} === 'undefined') {
      try {
		// HTTPS version of weather 
        // Set up variables for the API call		
        var endpointgeo = 'https://freegeoip.net/json/';
		var latitude = 'Undefined';
        var longitude = 'Undefined';
		var weather = 'Undefined';
        var temperature = 'N/A';
		var temperaturevalue = 'N/A';
		
		// Build a simple temperature parser - Repaired
        var parseTemp = function(temp) {            
 			if (temp < 0)
            	{return (5*Math.round((temp+2.5)/5))+'°C - '+((5*Math.round((temp+2.5)/5))-5)+'°C';}
			else if (temp > 0)
                {return (5*Math.round((temp-2.5)/5))+'°C - '+((5*Math.round((temp-2.5)/5))+5)+'°C';}
            else if (temp === 0) {return '0°C';}
            return 'N/A';
 			};
        
        // czech translate
               function preklad(stuff) {
             if( stuff ==="AM Clouds / PM Sun") {return "mraky slunce";}
        else if( stuff ==="AM Drizzle") {return "mrholení";}
        else if( stuff ==="AM Drizzle / Wind") {return "mrholení vítr";}
        else if( stuff ==="AM Fog / PM Clouds") {return "mlha mraky";}
        else if( stuff ==="AM Fog / PM Sun") {return "mlha slunce";}
        else if( stuff ==="AM Ice") {return "led";}
        else if( stuff ==="AM Light Rain") {return "slabý déšť";}
        else if( stuff ==="AM Light Rain / Wind") {return "slabý déšť vítr";}
        else if( stuff ==="AM Light Snow") {return "slabé sněžení";}
        else if( stuff ==="AM Rain") {return "déšť";}
        else if( stuff ==="AM Rain / Snow Showers") {return "déšť, sněhové přeháňky";}
        else if( stuff ==="AM Rain / Snow") {return "déšť sníh";}
        else if( stuff ==="AM Rain / Snow / Wind") {return "déšť sníh vítr";}
        else if( stuff ==="AM Rain / Wind") {return "déšť vítr";}
        else if( stuff ==="AM Showers") {return "přeháňky";}
        else if( stuff ==="AM Showers / Wind") {return "přeháňky vítr";}
        else if( stuff ==="AM Snow Showers") {return "sněhové přeháňky";}
        else if( stuff ==="AM Snow") {return "sníh";}
        else if( stuff ==="AM Thundershowers") {return "polojasno";}
        else if( stuff ==="Blowing Snow") {return "zvířený sníh";}
        else if( stuff ==="Clear") {return "jasno";}
        else if( stuff ==="Clear / Windy") {return "jasno větrno";}
        else if( stuff ==="Clouds Early / Clearing Late") {return "mraky";}
        else if( stuff ==="Cloudy") {return "zataženo";}
        else if( stuff ==="Cloudy / Wind") {return "oblačno vítr";}
        else if( stuff ==="Cloudy / Windy") {return "oblačno větrno";}
        else if( stuff ==="Drifting Snow") {return "zvířený sníh";}
        else if( stuff ==="Drifting Snow / Windy") {return "zvířený sníh větrno";}
        else if( stuff ==="Drizzle Early") {return "mrholení";}
        else if( stuff ==="Drizzle Late") {return "mrholení";}
        else if( stuff ==="Drizzle") {return "mrholení";}
        else if( stuff ==="Drizzle / Fog") {return "mrholení mlha";}
        else if( stuff ==="Drizzle / Wind") {return "mrholení vítr";}
        else if( stuff ==="Drizzle / Windy") {return "mrholení větrno";}
        else if( stuff ==="Fair") {return "jasno";}
        else if( stuff ==="Fair / Windy") {return "jasno větrno";}
        else if( stuff ==="Few Showers") {return "dešťové přeháňky";}
        else if( stuff ==="Few Showers / Wind") {return "dešťové přeháňky vítr";}
        else if( stuff ==="Few Snow Showers") {return "několik sněhové přeháňky";}
        else if( stuff ==="Fog Early / Clouds Late") {return "slabý vítr mraky";}
        else if( stuff ==="Fog Late") {return "mlha";}
        else if( stuff ==="Fog") {return "mlha";}
        else if( stuff ==="Fog / Windy") {return "mlha větrno";}
        else if( stuff ==="Foggy") {return "mlhavo";}
        else if( stuff ==="Freezing Drizzle") {return "mrznoucí mrholení";}
        else if( stuff ==="Freezing Drizzle / Windy") {return "mrznoucí mrholení větrno";}
        else if( stuff ==="Freezing Rain") {return "mrznoucí déšť";}
        else if( stuff ==="Haze") {return "opar";}
        else if( stuff ==="Heavy Drizzle") {return "těžký mrholení";}
        else if( stuff ==="Heavy Rain Shower") {return "silný déšť přeháňky";}
        else if( stuff ==="Heavy Rain") {return "hustý déšť";}
        else if( stuff ==="Heavy Rain / Wind") {return "silný déšť vítr";}
        else if( stuff ==="Heavy Rain / Windy") {return "silný déšť větrno";}
        else if( stuff ==="Heavy Snow Shower") {return "těžký sníh přeháňky";}
        else if( stuff ==="Heavy Snow") {return "silné sněžení";}
        else if( stuff ==="Heavy Snow / Wind") {return "těžký sníh vítr";}
        else if( stuff ==="Heavy Thunderstorm") {return "těžkých bouřka";}
        else if( stuff ==="Heavy Thunderstorm / Windy") {return "těžkých bouřka větrno";}
        else if( stuff ==="Ice Crystals") {return "ledové krystaly";}
        else if( stuff ==="Ice Late") {return "led";}
        else if( stuff ==="Isolated T-storms") {return "izolované deště";}
        else if( stuff ==="Isolated Thunderstorms") {return "izolované bouřky";}
        else if( stuff ==="Light Drizzle") {return "slabé mrholení";}
        else if( stuff ==="Light Freezing Drizzle") {return "mrznoucí mrholení";}
        else if( stuff ==="Light Freezing Rain") {return "mrznoucí déšť";}
        else if( stuff ==="Light Freezing Rain / Fog") {return "mrznoucí déšť mlha";}
        else if( stuff ==="Light Rain Early") {return "slabý déšť";}
        else if( stuff ==="Light Rain") {return "slabý déšť";}
        else if( stuff ==="Light Rain Late") {return "slabý déšť";}
        else if( stuff ==="Light Rain Shower") {return "slabý déšť přeháňky";}
        else if( stuff ==="Light Rain Shower / Fog") {return "slabý déšť přeháňky mlha";}
        else if( stuff ==="Light Rain Shower / Windy") {return "slabý déšť přeháňky větrno";}
        else if( stuff ==="Light Rain with Thunder") {return "slabý déšť se hromu";}
        else if( stuff ==="Light Rain / Fog") {return "slabý déšť mlha";}
        else if( stuff ==="Light Rain / Freezing Rain") {return "slabý déšť mrznoucí déšť";}
        else if( stuff ==="Light Rain / Wind Early") {return "slabý déšť vítr";}
        else if( stuff ==="Light Rain / Wind Late") {return "slabý déšť vítr";}
        else if( stuff ==="Light Rain / Wind") {return "slabý déšť vítr";}
        else if( stuff ==="Light Rain / Windy") {return "slabý déšť větrno";}
        else if( stuff ==="Light Sleet") {return "light plískanice";}
        else if( stuff ==="Light Snow Early") {return "slabé sněžení";}
        else if( stuff ==="Light Snow Grains") {return "slabé sněžení";}
        else if( stuff ==="Light Snow Late") {return "slabé sněžení";}
        else if( stuff ==="Light Snow Shower") {return "slabé sněžení přeháňky";}
        else if( stuff ==="Light Snow Shower / Fog") {return "slabé sněžení přeháňky mlha";}
        else if( stuff ==="Light Snow with Thunder") {return "lehký sníh s hromem";}
        else if( stuff ==="Light Snow") {return "slabé sněžení";}
        else if( stuff ==="Light Snow / Fog") {return "slabý déšť mlha";}
        else if( stuff ==="Light Snow / Freezing Rain") {return "slabý déšť mrznoucí déšť";}
        else if( stuff ==="Light Snow / Wind") {return "sněhové přeháňky vítr";}
        else if( stuff ==="Light Snow / Windy") {return "sněhové přeháňky větrno";}
        else if( stuff ==="Light Snow / Windy / Fog") {return "sněhové přeháňky větrno mlha";}
        else if( stuff ==="Mist") {return "mlha";}
        else if( stuff ==="Mostly Clear") {return "většinou jasný";}
        else if( stuff ==="Mostly Cloudy") {return "převážně zataženo";}
        else if( stuff ==="Mostly Cloudy / Wind") {return "jasno vítr";}
        else if( stuff ==="Mostly sunny") {return "polojasno";}
        else if( stuff ==="Partial Fog") {return "částečná mlha";}
        else if( stuff ==="Partly Cloudy") {return "polojasno";}
        else if( stuff ==="Partly Cloudy / Wind") {return "částečně oblačno vítr";}
        else if( stuff ==="Patches of Fog") {return "chuchvalce mlhy";}
        else if( stuff ==="Patches of Fog / Windy") {return "chuchvalce mlhy větrno";}
        else if( stuff ==="PM Drizzle") {return "mrholení";}
        else if( stuff ==="PM Fog") {return "mlha";}
        else if( stuff ==="PM Light Snow") {return "slabé sněžení";}
        else if( stuff ==="PM Light Rain") {return "slabý déšť";}
        else if( stuff ==="PM Light Rain / Wind") {return "slabý déšť vítr";}
        else if( stuff ==="PM Light Snow / Wind") {return "sněhové přeháňky vítr";}
        else if( stuff ==="PM Rain") {return "déšť";}
        else if( stuff ==="PM Rain / Snow Showers") {return "déšť, sněhové přeháňky";}
        else if( stuff ==="PM Rain / Snow") {return "déšť sníh";}
        else if( stuff ==="PM Rain / Wind") {return "déšť vítr";}
        else if( stuff ==="PM Showers") {return "přeháňky";}
        else if( stuff ==="PM Showers / Wind") {return "přeháňky vítr";}
        else if( stuff ==="PM Snow Showers") {return "sněhové přeháňky";}
        else if( stuff ==="PM Snow Showers / Wind") {return "sněhové přeháňky vítr";}
        else if( stuff ==="PM Snow") {return "sníh";}
        else if( stuff ==="PM T-storms") {return "deště";}
        else if( stuff ==="PM Thundershowers") {return "polojasno";}
        else if( stuff ==="PM Thunderstorms") {return "bouřka";}
        else if( stuff ==="Rain and Snow") {return "déšť a sníh";}
        else if( stuff ==="Rain and Snow / Windy") {return "déšť a sníh větrno";}
        else if( stuff ==="Rain / Snow Showers / Wind") {return "déšť, sněhové přeháňky vítr";}
        else if( stuff ==="Rain Early") {return "déšť";}
        else if( stuff ==="Rain Late") {return "déšť";}
        else if( stuff ==="Rain Shower") {return "sprchový déšť";}
        else if( stuff ==="Rain Shower / Windy") {return "sprchový déšť větrno";}
        else if( stuff ==="Rain to Snow") {return "déšť se sněhem";}
        else if( stuff ==="Rain") {return "déšť";}
        else if( stuff ==="Rain / Snow Early") {return "déšť sníh";}
        else if( stuff ==="Rain / Snow Late") {return "déšť sníh";}
        else if( stuff ==="Rain / Snow Showers Early") {return "déšť se sněhem";}
        else if( stuff ==="Rain / Snow Showers Late") {return "déšť, sněhové přeháňky";}
        else if( stuff ==="Rain / Snow Showers") {return "déšť, sněhové přeháňky";}
        else if( stuff ==="Rain / Snow") {return "déšť sníh";}
        else if( stuff ==="Rain / Snow / Wind") {return "déšť sníh vítr";}
        else if( stuff ==="Rain / Thunder") {return "déšť hrom";}
        else if( stuff ==="Rain / Wind Early") {return "déšť vítr";}
        else if( stuff ==="Rain / Wind Late") {return "déšť vítr";}
        else if( stuff ==="Rain / Wind") {return "déšť vítr";}
        else if( stuff ==="Rain / Windy") {return "déšť větrno";}
        else if( stuff ==="Scattered Showers") {return "polojasno";}
        else if( stuff ==="Scattered Showers / Wind") {return "polojasno vítr";}
        else if( stuff ==="Scattered Snow Showers") {return "rozptýlené sněhové přeháňky";}
        else if( stuff ==="Scattered Snow Showers / Wind") {return "rozptýlené sněhové přeháňky vítr";}
        else if( stuff ==="Scattered T-storms") {return "rozptýlené deště";}
        else if( stuff ==="Scattered Thunderstorms") {return "bouřka";}
        else if( stuff ==="Shallow Fog") {return "mělká mlha";}
        else if( stuff ==="Showers") {return "přeháňky";}
        else if( stuff ==="Showers Early") {return "přeháňky";}
        else if( stuff ==="Showers Late") {return "přeháňky";}
        else if( stuff ==="Showers in the Vicinity") {return "přeháňky";}
        else if( stuff ==="Showers / Wind") {return "přeháňky vítr";}
        else if( stuff ==="Sleet and Freezing Rain") {return "plískanice a mrznoucí déšť";}
        else if( stuff ==="Sleet / Windy") {return "plískanice větrno";}
        else if( stuff ==="Snow Grains") {return "sníh zrna";}
        else if( stuff ==="Snow Late") {return "sníh";}
        else if( stuff ==="Snow Shower") {return "sníh přeháňky";}
        else if( stuff ==="Snow Showers Early") {return "sněhová přeháňky";}
        else if( stuff ==="Snow Showers Late") {return "sněhové přeháňky";}
        else if( stuff ==="Snow Showers") {return "sněhové přeháňky";}
        else if( stuff ==="Snow Showers / Wind") {return "sněhové přeháňky vítr";}
        else if( stuff ==="Snow to ;") {return "sníh";}
        else if( stuff ==="Snow") {return "sníh";}
        else if( stuff ==="Snow / Wind") {return "snow vítr";}
        else if( stuff ==="Snow / Windy") {return "sníh větrno";}
        else if( stuff ==="Squalls") {return "bouří";}
        else if( stuff ==="Sunny") {return "slunečno";}
        else if( stuff ==="Sunny / Wind") {return "slunečno vítr";}
        else if( stuff ==="Sunny / Windy") {return "slunečno větrno";}
        else if( stuff ==="T-showers") {return "přeháňky";}
        else if( stuff ==="Thunder in the Vicinity") {return "hrom";}
        else if( stuff ==="Thunder") {return "hrom";}
        else if( stuff ==="Thundershowers Early") {return "polojasno";}
        else if( stuff ==="Thundershowers") {return "polojasno";}
        else if( stuff ==="Thunderstorm") {return "bouřka";}
        else if( stuff ==="Thunderstorm / Windy") {return "bouřka větrno";}
        else if( stuff ==="Thunderstorms Early") {return "bouřka";}
        else if( stuff ==="Thunderstorms Late") {return "bouřka";}
        else if( stuff ==="Thunderstorms") {return "bouřka";}
        else if( stuff ==="Unknown Precipitation") {return "neznámo";}
        else if( stuff ==="Unknown") {return "neznámo";}
        else if( stuff ==="Wintry Mix") {return "zimní mix";}
        else {return stuff;}
        }
		  
        // Get latitude and longitude of the visitor
        jQuery.ajax({
          type : 'POST',
          dataType : 'jsonp',
          url : endpointgeo + '?callback=?',
          async : true,
          success : function(datageo) {
            latitude = datageo['latitude'];
            longitude = datageo['longitude'];
			
				// Make the weather API call
				var endpoint = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.placefinder%20where%20text=%27"+latitude+"%20"+longitude+"%27%20and%20gflags=%27R%27%20)%20and%20u=%27c%27&format=json";
				jQuery.ajax({
				  type : 'POST',
				  dataType : 'jsonp',
				  url : endpoint,
				  async : true,
				  success : function(dataweather) {
					weather = dataweather['query']['results']['channel']['item']['condition']['text'];
                    weather = preklad(weather);
                    temperaturevalue = parseFloat((dataweather['query']['results']['channel']['item']['condition']['temp']).replace(',','.'));
                    temperature = parseTemp(temperaturevalue);
				  },
				  error : function(xhr, textStatus, errorThrown) 
					{console.log('Error while fetching weather data :: ' + errorThrown);},
				  complete : function() {
					window.dataLayer.push({
					  'event' : 'weatherDone',
					  'weather' : weather,                  // event tag
					  'temperature' : temperature,          // event label
					  'temperaturevalue' : temperaturevalue // event value
					});
				  }
				});
          },
          error : function(xhr, textStatus, errorThrown) {console.log('Error while fetching geo data :: ' + errorThrown);},
          complete : function() {;}
        });
      } catch(e) {
        window.dataLayer.push({
          'event' : 'APIError', 
          'APIErrorMSG' : e.message
        });
      }
    }    
     
    // Reset "session" cookie with a 30-minute expiration
    var d = new Date();
    d.setTime(d.getTime()+1800000);
    var expires = "expires="+d.toGMTString();
    document.cookie = "sessionweather=1; "+expires+"; path=/";
  })();
</script>

 

4.2 Značka události počasí

Kde?

Google tag manager > Značky > Nová

Vytvoření:
  1. Pojmenovat značku „GA-Event-Weather“
  2. Typ značky: Universal Analytics
  3. ID měření : Nastavit své vlastní
  4. Typ měření: Událost
  5. Kategorie: Weather
  6. Akce: {{DLV-Weather}}
  7. Štítek: {{DLV-Temperature}}
  8. Hodnota: {{DLV-TemperatureValue}}
  9. Další nastavení – Vlastní dimenze >
  10. Vyplnit index č. 1 vlastní dimenze : 1  (vaše poznačené číslo indexu při tvorbě dimenze v GA)
  11. Vyplnit hodnotu dimenze : {{DLV-Weather}}
  12. Vyplnit index č. 2 vlastní dimenze : 2  (vaše poznačené číslo indexu při tvorbě dimenze v GA)
  13. Vyplnit hodnotu dimenze : {{DLV-Temperature}}
  14. Spustit při: Event – weatherDone
  15. Uložit značku

GA-event-Weather- Počasí v Google analytics přes GTM https

5. Publikovat kontejner

Přes ladění v GTM si to můžete zkontrolovat jestli se vše správně přepsalo.

Další místo kde si můžete zjisti funkčnost je Google Analytics > V reálné čase > Události, kde bude event s počasí.

Chcete to zkusit znova? Smažte cookie „sessionweather“ nebo použijte nové anonymní okno.

6. Jak to vypadá?

Google Analytics > Chování > Události > Kategorie Weather > Akce události

Na obrázku je vidět počasí, průměrná hodnota určuje průměrnou teplotu. To zajímavější je samozřejmě v  záložce Elektronický obchod, kde můžete vidět zajímavé rozdíly v konverzním poměru. Speciálně třeba u zahrádkářů, víkend když prší, je konverzní poměr 2-3x větší.

(data jsem trochu očistil, ale přesné hodnoty)

Události - Počasí v Google analytics přes GTM https

Další možnost je asi nejlepší a to je si udělat vlastní přehled v Přizpůsobení, pak to již není vázáno na event, ale na návštěvu. (Ano bylo by to super tento přehled sdílet, ale díky tomu že obsahuje dimenze tak to nejde.)

Ukázka nastavení:Přizpůsobení - Počasí v Google analytics přes GTM https

Pak už získáte krásný graf.

7. Jak to funguje?

(Další text můžete přeskočit pokud nejste vývojář hračička. )

Nástroj dá dotaz na GeoIP API (freegeoip.net) a  tím zjistí zeměpisnou šířku a délku. Tohle API je zdarma a běží na HTTPS vrací JSON.

Ukázka co vrací toto API: https://freegeoip.net/json/

{
ip: "194.228.13.xxx",
country_code: "CZ",
country_name: "Czech Republic",
region_code: "PR",
region_name: "Hlavni mesto Praha",
city: "Prague",
zip_code: "130 00",
time_zone: "Europe/Prague",
latitude: 50.083,
longitude: 14.467,
metro_code: 0
}

Když se mu to povede zavolá Yahoo API  YQL a dá na něj dotaz na počasí. Toto API je také zdarma, běží také na  HTTPS  a vrací JSON a má omezení 2000 hitů / den / IP uživatele, a proto je prakticky nemožné ho vyplýtvat. Tohle je asi nejpřesnější počasí API co znám, využívá ho třeba i Apple. Obecně s YQL jde dělat spoustu triků 🙂 .

Ukázka co vrací toho API (je toho opravdu hodně):

https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.placefinder%20where%20text=%2750.083%2014.467%27%20and%20gflags=%27R%27%20)%20and%20u=%27c%27&format=json

// https://developer.yahoo.com/weather/
// more data
select * from weather.forecast where woeid in (select woeid from geo.placefinder where text='50.083 14.467' and gflags='R' ) and u='c'

// only condition
select item.condition from weather.forecast where woeid in (select woeid from geo.placefinder where text='50.083 14.467' and gflags='R' ) and u='c'
{
query: {
count: 1,
created: "2015-10-07T09:39:09Z",
lang: "cs",
results: {
channel: {
title: "Yahoo! Weather - Prague 3, CZ",
link: "http://us.rd.yahoo.com/dailynews/rss/weather/Prague_3__CZ/*http://weather.yahoo.com/forecast/EZXX0012_c.html",
description: "Yahoo! Weather for Prague 3, CZ",
language: "en-us",
lastBuildDate: "Wed, 07 Oct 2015 9:58 am CEST",
ttl: "60",
location: {
city: "Prague 3",
country: "Czech Republic",
region: ""
},
units: {
distance: "km",
pressure: "mb",
speed: "km/h",
temperature: "C"
},
wind: {
chill: "15",
direction: "110",
speed: "8.05"
},
atmosphere: {
humidity: "94",
pressure: "982.05",
rising: "0",
visibility: "2.99"
},
astronomy: {
sunrise: "7:09 am",
sunset: "6:28 pm"
},
image: {
title: "Yahoo! Weather",
width: "142",
height: "18",
link: "http://weather.yahoo.com",
url: "http://l.yimg.com/a/i/brand/purplelogo//uh/us/news-wea.gif"
},
item: {
title: "Conditions for Prague 3, CZ at 9:58 am CEST",
lat: "50.09",
long: "14.47",
link: "http://us.rd.yahoo.com/dailynews/rss/weather/Prague_3__CZ/*http://weather.yahoo.com/forecast/EZXX0012_c.html",
pubDate: "Wed, 07 Oct 2015 9:58 am CEST",
condition: {
code: "11",
date: "Wed, 07 Oct 2015 9:58 am CEST",
temp: "15",
text: "Light Rain"
},
description: " <img src="http://l.yimg.com/a/i/us/we/52/11.gif"/><br /> <b>Current Conditions:</b><br /> Light Rain, 15 C<BR /> <BR /><b>Forecast:</b><BR /> Wed - Rain. High: 15 Low: 12<br /> Thu - Light Rain. High: 14 Low: 9<br /> Fri - Cloudy. High: 13 Low: 7<br /> Sat - Mostly Sunny. High: 12 Low: 2<br /> Sun - Partly Cloudy. High: 10 Low: 1<br /> <br /> <a href="http://us.rd.yahoo.com/dailynews/rss/weather/Prague_3__CZ/*http://weather.yahoo.com/forecast/EZXX0012_c.html">Full Forecast at Yahoo! Weather</a><BR/><BR/> (provided by <a href="http://www.weather.com" >The Weather Channel</a>)<br/> ",
forecast: [
{
code: "12",
date: "7 Oct 2015",
day: "Wed",
high: "15",
low: "12",
text: "Rain"
},
{
code: "11",
date: "8 Oct 2015",
day: "Thu",
high: "14",
low: "9",
text: "Light Rain"
},
{
code: "26",
date: "9 Oct 2015",
day: "Fri",
high: "13",
low: "7",
text: "Cloudy"
},
{
code: "34",
date: "10 Oct 2015",
day: "Sat",
high: "12",
low: "2",
text: "Mostly Sunny"
},
{
code: "30",
date: "11 Oct 2015",
day: "Sun",
high: "10",
low: "1",
text: "Partly Cloudy"
}
],
guid: {
isPermaLink: "false",
content: "EZXX0012_2015_10_11_7_00_CEST"
}
}
}
}
}
}

 

Z toto zavolání vytáhnu finální data a pošlu je přes event do dataLayer .

Pak nastavím cookie na 30min, abych nevolal tyto api při každém načtení stránky.

V GTM data zachytím přes event a pošlu si je přes event do Google Analytics.

V případě problému pošle event se správou co bylo špatně.

8. Měřte, vyhodnocujte, upravujte a užívejte si dat.

Zjistili jste, že vaše podnikání je hodně závislé od počasí?
Tak toho využijte a tyto závislosti pomocí Google Adwords skriptů aplikujte do své reklamy.
Návod č.1 PPC hero Počasí
Návod č.2 Google Adwords skript

9. Modifikace

Kdo nemá volné dimenze v Google Analytics může přeskočit celý bod č.3  a u kroku 4.2 přeskočit body 9-13. Data bude mít jen v událostech, což některým lidem může stačit.

 

.

8 reakcí na „Počasí v Google Analytics – pomocí Google Tag Manageru (HTTPS verze)“

Ahoj, taktéž děkuji za návod, mám jen jeden drobný problém – nasazoval jsem to na 2 webech, všude bez zjevného problému. V obou případech mi to již načítá data, jen je teda v obou případech poloviční počet návštěv, oproti klasickým Přehledům. Nenapadá tě, na co jsem pozapomněl? Na screenu lze i vidět „Podíl z celku v %: 46,55 %“, jen si nejsem jist, co jsem nezapnul.

Děkuji za odpověď.

Ahoj
z principu toho že celý script je asynchronní a pracuje s externími daty z GEO lokace a Yahoo a zabere jeho provedení na pozadí nějaký čas. Reálné změření počasí muže trvat 1-6sec podle rychlosti odpovědí serveru. Max je 10sec pak pošle automaticky event error, který si můžete zachytit. Tak většinu toho co jsou „nezměření“ lidé by mělo korelovat s obrácenou hodnotou míry okamžitého opuštění (přesněji 100%-BounceRate%), tedy lidí co byli na stránce méně než pár sekund, aby šel provést celý skript.U mě to je cca 29%, takže změřím 66% návštěvníků (zbylých 5% jsou neveřejné URL, kde mám zakázáno skript spouštět). Pak k tomu musíme připočíst mladé studenty s ghostery a dalšími pluginu co blokují geo lokaci atd.. Ve výsledku samotné měření počasí jako celé Google Analytics není přesný měřící nástroj, ale ukazatel trendu.

Napsat komentář