Chovají 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?
- Poznáte lépe své zákazníky.
- 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.
- 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?
- 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,)
- Mít na webu nastavené měření přes Google Analytics (Universal Analytics), pro staré verze kódu to nebude fungovat.
- 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
- Proměnné > Nová >
- Typ: Soubor cookie první strany
- Pojmenovat proměnou “Cookie-Session-weather”
- Název cookie “sessionweather”
- Uložit
Vytvoření proměnné datové vrstvy – DLV-Weather
- Proměnné > Nová >
- Typ: Proměnná datové vrstvy
- Pojmenovat proměnou “DLV-Weather”
- Název proměnné datové vrstvy “weather”
- Uložit
Vytvoření proměnné datové vrstvy – DLV-Temperature
- Proměnné > Nová >
- Typ:Proměnná datové vrstvy
- Pojmenovat proměnou “DLV-Temperature”
- Název proměnné datové vrstvy “temperature”
- Uložit
Vytvoření proměnné datové vrstvy – DLV-TemperatureValue
- Proměnné > Nová >
- Typ: Proměnná datové vrstvy
- Pojmenovat proměnou “DLV-TemperatureValue”
- Název proměnné datové vrstvy “temperaturevalue”
- Uložit
Výsledek bude vypadat následovně:
2. Vytvoření pravidla v GTM – Event – weatherDone
Kde?
Google tag manager > Pravidla> Nové
Vytvoření pravidla:
- Pojmenovat “Event – weatherDone”
- Vybrat: Vlastní událost
- Spustit při: Název události “weatherDone”
- Uložit
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 :
- Pojmenovat ji vlastní dimenzi “Počasí – Weather”
- Rozsah “návštěva”
- Aktivní – zaškrtnout
- Uložit
Proměnná č.2 :
- Pojmenovat ji vlastní dimenzi “Teplota – Temperature”
- Rozsah “návštěva”
- Aktivní – zaškrtnout
- 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.
4. Vytvoření značek v GTM
4.1 Značka nástroje počasí
Kde?
Google tag manager > Značky > Nová
- Pojmenovat značku “Utility-HTML-Weather”
- Typ značky: Vlastní HTML
- Vložit kód nástroje
- Spustit při: Všechny stránky
- 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.
<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í:
- Pojmenovat značku “GA-Event-Weather”
- Typ značky: Universal Analytics
- ID měření : Nastavit své vlastní
- Typ měření: Událost
- Kategorie: Weather
- Akce: {{DLV-Weather}}
- Štítek: {{DLV-Temperature}}
- Hodnota: {{DLV-TemperatureValue}}
- Další nastavení – Vlastní dimenze >
- Vyplnit index č. 1 vlastní dimenze : 1 (vaše poznačené číslo indexu při tvorbě dimenze v GA)
- Vyplnit hodnotu dimenze : {{DLV-Weather}}
- Vyplnit index č. 2 vlastní dimenze : 2 (vaše poznačené číslo indexu při tvorbě dimenze v GA)
- Vyplnit hodnotu dimenze : {{DLV-Temperature}}
- Spustit při: Event – weatherDone
- Uložit značku
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)
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í:
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://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, děkuji, funguje to skvěle! Jen jsem narazil na problém hned v prvním řádku kódu () Pokud máte jquery již definovánou výše ve webu, tak tenhle řádek doporučuji odstranit. Jinak se Vám něco podělá stejně jako mě 🙂 Ale jinak super, moc díky!
Díky za tip, osobně jsem s tím nikde problém neměl a to jsem to měl nasazeno na opravdu hodně webech v několika verzích, ale přidal jsem komentář, že to je možno zakomentovat. Díky za pochvalu. 😉
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.
Ahoj, děkuji za odpověď, již jsem zase o něco chytřejší. Děkuji mnohokrát!
Ahoj, díky za návod. Funguje to v praxi celkem dobře. Parser má ale trochu problém s mínusovými teplotami, viz. screen z prosince. Plusové hodnoty jedou dobře.
Opraveno, přiznávám se, že jsem v bláhovosti v létě zapomenul na problém s float vstupem a zápornými hodnotami.
Od poloviny ledna eviduji výpadek na všech webech, kde jsem to nasadil, má s tím taky někdo podobný problém? Z console jsem nic nevyčetl, prostě se nepošle event Event – weatherDone …