Weerdata en temperatuur als secundaire dimensie

GA & GTM: Weerdata en temperatuur als secundaire dimensie

1 + 1 = 3. Universal Analytics en Google Tag Manager zijn opzichzelfstaand behoorlijk handige tools, maar combineer ze, en je kunt alles doormeten wat er op je website gebeurt. In dit blog beschrijf ik hoe je, met behulp van Google Tag Manager, weerdata kunt doorschieten naar Google Analytics, om te kijken hoe het weer en de temperatuur van invloed zijn op het bezoekersgedrag op je website. We zullen via GTM 2 aangepaste dimensies naar GA schieten, namelijk het weer (regenachtig, bewolkt, helder) en de temperatuur. Het is dus wel vereist om GTM en GA geïmplementeerd te hebben.

1.       Maak een nieuwe tag aan in GTM

–          Geef deze tag de naam “Weather API”

–          Kies vervolgens “Custom HTML-tag”

–          Voer vervolgens onderstaande code in het HTML veld in.

–          Zet de firing rule op alle pagina’s

<script src=”//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js”></script>
<script src=”http://www.geoplugin.net/javascript.gp”></script>
<script>
checkSession();

function checkSession(){
try{
var lat = geoplugin_latitude();     //geoplugin
var lon = geoplugin_longitude();    //geoplugin
var weather = “”;
var weatherAPI = “http://api.openweathermap.org/data/2.5/weather?lat=”+lat+”&lon=”+lon;

$.ajax({
type : “POST”,
dataType : “jsonp”,
url : weatherAPI+”&units=metric&callback=?”,
async : true,
success : function(data) {
weather = data.weather[0].main;
temperature = data.main.temp;
dataLayer.push({“event”: “weatherDone”, “weather”: weather, “temperature”: temperature.toFixed(0)+” °C”});

},
error : function(errorData) {
console.log(“Error while getting weather data :: “+errorData.status);
},
complete : function() {}
});
var d = new Date();
var time = d.getTime();
time += 3600 * 1000;
var expires = “expires=” + d.setTime(time);
document.cookie = “weather=1; expires= “+expires+ “;domain={{domain_weather}}; path=/”
} catch (e) {
dataLayer.push({“event”: “Weather Error”, “eventAction”: “The request for weather results failed”, “eventLabel”: e.message});
}
}
</script>

Het eerste script: <script src=”//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js”></script> is om jQuery in te laden, de AJAX call die in de code wordt gedaan werkt namelijk alleen in jQuery.

Het tweede script: <script src=”http://www.geoplugin.net/javascript.gp”></script> is een plugin waar per IP-adres wordt bekeken wat de breedte- en lengtegraad zijn, om zo het weer per IP-adres te kunnen bepalen.

Hierna volgt het daadwerkelijke script. Hier wordt de API van OpenWeatherMap gebruikt om voor de lengte- en breedtegraad de bijbehorende weerdata te verkrijgen.

Deze data wordt vervolgens doorgeschoten in de DataLayer, als de call succesvol is, anders wordt er een error doorgeschoten.

Vervolgens wordt er, of de API call succesvol is of niet, een event genaamd “weatherDone” doorgeschoten in de DataLayer. Dit event wordt gebruikt om er zeker van te zijn dat de API call wordt uitgevoerd voordat de Universal Analytics tag wordt afgevuurd.

Het laatste stuk van het script geeft de bezoeker een cookie mee wanneer de weer API is afgevuurd, vervolgens wordt er gecheckt of de bezoeker al een cookie heeft, zo ja, dan wordt de weer API niet opnieuw afgevuurd. Dit is om te voorkomen dat er bij elke paginaweergave opnieuw een call wordt gemaakt, en er éénmalig per sessie weerdata wordt doorgeschoten.

2.       Maak twee nieuwe aangepaste dimensies aan in Google Analytics

Onder “Property” en dan “Aangepaste definities” zie je “Aangepast dimensies” staan (zie onderstaand screenshot).

Weerdata en temperatuur als secundaire dimensie

–          Maak hier 2 nieuwe dimensies, 1 met de naam “Weer” en 1 met de naam “Temperatuur”.

–          Zet het bereik van beide dimensies op “Sessie”.

–          Zet beide dimensies op “Actief”.

–          Druk vervolgens voor beide dimensies op “Opslaan”.

–          Noteer de cijfers onder Index voor beide variabelen

3.       Maak 3 nieuwe variabelen/macros’s aan in GTM

Maak eerst een variabele aan met de naam “weather cookie”Weerdata en temperatuur als secundaire dimensie

–          Geef deze variabele het type: 1-st party cookie

–          Geef deze variabele de naam weather

Als tweede een nieuwe variabele met de naam: “js_weather_cookie”.

– Selecteer het type: Aangepaste JavaScript-macro
– Voeg de volgende code toe aan deze variabele:

function (){
if (typeof({{weather cookie}}) == “undefined”) {
return ‘true’; //If cookie is not set. This will launch the API request
}else{
return ‘false’; //If API request is already performed ones
}
}

Deze variabele checkt of de eerste variabele “weather cookie” al gezet is. Als deze gezet is wordt de Weer API niet opnieuw aangeroepen.

Tot slot hebben we nog twee Data Layer variabelen nodig.
– Kies het type “Data Layer Variabele”
– Geef één variabele de naam “dlvWeather”
– Geef de tweede variabele de naam “dlvTemperature”

4.       Maak voor de eerder aangemaakte tag “Weer API” een nieuwe blokkeringsregel

Bij de “Weer API” tag die we eerder hebben aangemaakt willen we nu een blokkeringsregel toevoegen die de API dus blokkeert als de Weer Cookie gezet is. Geef deze regel de naam “BlocKWhenCookieIsSet” en geef als filter mee: js_weather_cookie is gelijk aan false.

5.       Maak een nieuwe tag aan in GTMWeerdata en temperatuur als secundaire dimensie

–          Geef deze tag de naam: cd_weather_measurement

–          Kies als product: Google Analytics

–          Kies als type: Universal Analytics

–          Geef bij tracking-ID de UA-code van je GA account aan.

–          Zet het type op: Event

–          Geef de Categorie van het Event de waarde: Custom Dimension

–          Geef als Actie: Set Weather stats

–          Geef tot slot onder het kopje Aangepaste Dimensies de indexnummers op van de custom dimensies die je aan hebt gemaakt in GA. En geef bij het nummer voor de Temperatuur de waarde {{dlvTemperature}} mee, en voor het Weer de waarde {{dlvWeather}}, deze beide variabelen/macro’s heb je net aangemaakt.

–          Geef deze tag als activeringsregel: event equals weatherDone

Deze tag schiet de waarden uit de Data Layer door naar GA, deze waardes worden gevuld door de eerdere tag die je hebt aangemaakt.

6.       De nieuwe aangepaste dimensies zijn nu toe te voegen in je Google Analytics rapporten

Maak bijvoorbeeld een aangepast rapport aan waar je als dimensie “Weather” neemt, en als metrics Sessies, Paginaweergaven en Pagina’s p. Sessie. Je krijgt dan onderstaand screenshot te zien.

Weerdata en temperatuur als secundaire dimensie

We zien hier dat de meeste sessies plaatsvonden tijdens bewolkte dagen, alleen zegt dit natuurlijk nog niet zoveel aangezien waarschijnlijk de meeste dagen bewolkte dagen waren. Wat we hier wel zien is dat de meeste pagina’s per sessie worden bekeken als het regenachtig is (6,44). Mensen bekijken op regenachtige dagen dus gemiddeld meer pagina’s op deze website.

Als we vervolgens de temperatuur als secundaire dimensie toevoegen zien we dat vooral veel pagina’s per sessie worden bekeken op hele warme of hele koude dagen momenten.

Weerdata en temperatuur als secundaire dimensie

Reacties (26)

    • Good job on the monitoring Simo.

      I did some research on the collegue who did the first implementation. It seems he did get the inspiration from your blog and Stackoverflow. The solution has evolved a bit since then as you can see and there are more blogs about it now. Nevertheless, great stuff and some credit needs to be passed on here. Keep up the works.

    • Hi ‘Simo’,

      Laten we overgaan in het Nederlands. Jasper heeft contact gehad met Simo en Simo heeft hier niet gereageerd. Interessant gegeven, dus gelijk even naar je gegevens in GA gekeken en inderdaad, deze Simo komt uit Nederland, zit bij Ziggo Zakelijk en zat ingelogd bij Bencom BV. Mocht je de volgende keer weer willen reageren dan graag onder je eigen naam. Mocht je dit nu nog willen rechtzetten, dan kan dat natuurlijk ook.

      Groet,
      Reinout

      • @reinout ik zie Simo Ahava vanaf morgen in Tallinn, Estland, waar we samen spreken op Digital Elite Camp – ik zal het eens vragen 🙂

      • Simo gesproken hier in Estland. Hij was het niet, zou ook nooit zo reageren, vindt bronvermelding altijd fijn, maar hoeft niet. Hij was vooral vereerd dat hij nu zo bekend is dat mensen doen alsof ze hem zijn. Simo gaf ook aan dat dit artikel nieuwe informatie was en hij blij is dat er meer mensen kennis delen over GTM!

  1. Leuk! Wel lijkt mij een temperatuur range (per 5 graden ofzo) wat handiger? Lijkt me wel heel sterk als 1 graad uitmaakt in je data en dan krijg je denk ik een wat beter overzicht. Maar goed dat kun je altijd nog doen na export in spreadsheets natuurlijk…

  2. Leuke en goede handleiding om het zien of het weer je conversies beïnvloedt. Ik zal inderdaad zelf ook beginnen met een 5 graden range zodat je dit later altijd nog kan verkleinen als je grote verschillen ziet. Bedankt Jasper.

  3. Ik denk dat de fake-Simo probeert duidelijk te maken dat als je scripts/ideeën kopieert zet op z’n minst een verwijzing naar de originele post. Dat was wel netjes geweest in dit geval zeker als je de scripts 1-op-1 plaatst… en nee ik was het niet ik zit niet bij Bencom BV. Maar goed, het is opgelost. Fijne avond en bowl ze 🙂

    • Hi Matthew, het punt was duidelijk en ook terecht, daar zijn we ‘t allemaal over eens 😀 dat maakt ‘t des te vreemder dat iemand dat niet onder zijn eigen naar ‘durft’ te plaatsen.

  4. Hoi!

    Waarschijnlijk lack of experience in GTM maar bij stap 4 loop ik vast. Kan iemand mij helpen waar deze uitzonderings- blokeringsregel te maken?

    Bedankt!

  5. Is het mogelijk dit ook te koppelen aan transacties? Wil kijken of ik op deze op basis van het weer een voorspelling kan gaan doen op het aantal transacties in de webshop.

    gr.

    Ernst

    • Goede blog!! Erg tof dat dit mogelijk is 😉

      @Ernst: Dat moet zeker mogelijk zijn! Aangezien je aan het begin van de sessie de weerstatistieken verkrijgt, worden eventuele conversies (lees: transacties e.g.) tijdens die ene sessie aan de betreffende (verkregen) weertype gekoppeld. Uiteindelijk zal je binnen Google Analytics kunnen zien onder welke weersomstandigheden de conversieratio dus hoger bleek te zijn.

  6. Dank voor je kennisdeling Jasper. Wat zijn jouw ervaringen tot nog toe met deze meting? Heb je deze meting geïntegreerd binnen campagne attributie?

  7. Ha Gerard. We hebben in een aantal gevallen significant gekregen dat warm (meer dan 20 graden) en zonnig (clear) weer een negatief effect heeft op bezoekersaantallen, maar ook op kwaliteitsmetrics als conversieratio en time on site.

    We hebben nog geen onderzoek gedaan op weer icm attributie. Maar wel een toffe vraag. Ben het meteen even nagegaan. Probleem blijkt de sessies waarbij geen weerdata opgehaald kan worden (indien dit niet lukt geeft GTM geen weertype af voor de sessie). Deze vallen automatisch in de kanaalgroep (other), die onmogelijk te negeren is dmv een aangepast attributiemodel of een conversie segment. Zodoende kun je weinig met de resultaten uit attributie tenzij je de weertypes bij elke sessie hebt.

  8. We willen wel het script proberen maar volgens mij gaat het fout zodra je site geheel onder https draait. Of vergis ik mij hierin? Bedankt voor het delen. Op GAUC kwam dit ook aanbod.

  9. Ik heb het script inmiddels doorgevoerd en loop bij publicatie tegen 1 foutmelding aan in de tag Weather API:

    Er is een onbekende variabele ‘domain_weather’ gevonden in een tag. Bewerk de tag en verwijder de verwijzing naar de onbekende variabele.

    Iemand een idee?

    • @Yorick: Deze verwijst deze naar het domein waar het script (oftewel de weercookie) wordt geplaatst. Je kunt binnen GTM onder “variabeles” een nieuwe variabele aanmaken van het type “URL” & componenttype “Hostname”.

  10. Hoi Nico,

    Dank voor je snelle bericht. Ik heb die variabele nu aangemaakt, maar de foutmelding blijft. Is het de bedoeling dat ik in de tag iets aanpas op de locatie waar nu ‘domain_weather’ staat?

    document.cookie = “weather=1; expires= “+expires+ “;domain={{domain_weather}}; path=/”
    }

    Thanks alvast!

    Groet,
    Yorick

    • @Yorick: Klopt ja. Wat je namelijk met deze variabele aangeeft, is dat hij de weathercookie op het huidige domein (waar jij op dat moment als gebruiker bevindt) moet plaatsen. Bijvoorbeeld: “www.webanalisten.nl” of (indien je de “strip www.” hebt aangevinkt) op “webanalisten.nl”.

  11. Interessant artikel. Ik krijg het helaas niet voor elkaar, hij blijft in real time dashboard van GA undefined aangeven. Iemand enig idee voor de oplossing?

  12. Bedankt voor deze nuttige informatie. Wij werken met een aantal klanten waar veel aannames worden gedaan over seizoen- en weer trends dus zeer bruikbaar!

    Ik heb alle stappen gevolgd maar krijg bij het publiceren de volgende foutmeldingen:

    Fout met JavaScript-compiler – js_weather_cookie
    Fout op regel 3, teken 35: Parse error. Character ‘“’ (U+201C) is not a valid identifier start char

    Fout met JavaScript-compiler – Weather API
    Fout op regel 9, teken 15: Parse error. Character ‘“’ (U+201C) is not a valid identifier start char

    Iemand enig idee hoe ik dit kan oplossen?
    Alvast bedankt!

    Groetjes,
    Mascha

  13. Leuke toevoeging! Is het hiermee mogelijk om terug te kijken? Omdat de weerdata beschikbaar is / blijft en de datum + plaats per sessie al opgeslagen is in Analytics zou het mogelijk moeten zijn.

  14. Leuke toevoeging. Ik krijg echter ook een eerder genoemd probleem namelijk;
    Fout op regel 3, teken 35: Parse error. Character ‘“’ (U+201C) is not a valid identifier start char en Fout op regel 9, teken 15: Parse error. Character ‘“’ (U+201C) is not a valid identifier start char. Vanuit de js_weather_cookie en Weather API.
    Is het mogelijk om uitleg te geven waar dit fout gaat, ik lijk er niet uit te komen.

Reacties zijn gesloten.