Wetter Tracking für alle!

„Hat das Wetter einen Einfluss auf das Verhalten meiner Kunden?“. Das ist eine Frage die mir in ganz vielen Situationen über den Weg läuft. Ein schönes Beispiel sind sommerliche Wochenenden. Immer wieder beobachte ich hier eine Auffälligkeit zwischen den Umsatzzahlen und dem Wetter. Doch wie lässt sich das beweisen? Ganz klar! Wir brauchen Daten! Doch hier treffen wir schon auf die erste Schwierigkeit: Das Wetter ist überall unterschiedlich! Während hier in Hamburg die Sonne scheint (sehr unwahrscheinliches Szenario ;D) kann in Bayern schweres Gewitter herrschen. Wir brauchen also die Wetterdaten vom exakten Standort des Nutzers. Da Google Analytics in der Gratis-Version diese Daten nicht zur Nutzung heraus gibt benötigen wir da etwas Unterstützung von einem Webservice namens GeoPlugin.

Geoplugin

Der Webservice GeoPlugin verrät euch anhand der IP-Adresse ganz easy woher der Nutzer stammt. Die IP-Adresse wird natürlich aus Datenschutzgründen nicht gespeichert. Ein Hinweis auf die Verwendung dieses Dienstes in der Datenschutzerklärung ist in meinem Augen trotzdem notwendig.

{
geoplugin_request: "XX.XXX.XXX.X",
geoplugin_status: 200,
geoplugin_delay: "1ms",
geoplugin_credit: "Some of the returned data includes GeoLite data created by MaxMind, available from <a href='http://www.maxmind.com'>http://www.maxmind.com</a>.",
geoplugin_city: "Hamburg",
geoplugin_region: "Hamburg",
geoplugin_regionCode: "HH",
geoplugin_regionName: "Hamburg",
geoplugin_areaCode: "",
geoplugin_dmaCode: "",
geoplugin_countryCode: "DE",
geoplugin_countryName: "Germany",
geoplugin_inEU: 1,
geoplugin_euVATrate: 19,
geoplugin_continentCode: "EU",
geoplugin_continentName: "Europe",
geoplugin_latitude: "53.XXXX",
geoplugin_longitude: "9.XXXX",
geoplugin_locationAccuracyRadius: "500",
geoplugin_timezone: "Europe/Berlin",
geoplugin_currencyCode: "EUR",
geoplugin_currencySymbol: "€",
geoplugin_currencySymbol_UTF8: "€",
geoplugin_currencyConverter: 0.9041
}

Was müssen wir also tun um den groben Standort des Nutzers ausfindig zu machen? Wir stellen eine Anfrage an GeoPlugin!
Unter der API-URL http://www.geoplugin.net/json.gp bekommen wir eine JSON-Ausgabe die uns genaue Informationen über die aufrufende IP-Adresse ausgibt. Wenn wir das ganze noch SSL-Verschlüsselt haben wollen, kostet das bei GeoPlugin 12 Euro im Jahr und ist unter der API-URL https://ssl.geoplugin.net/json.gp?k=KEY erreichbar.
Diese JSON Informationen können wir nun nutzen um den ermittelten Standort an eine Wetter-API weiterzugeben, welche uns dann sehr detaillierte Informationen zum Wetter an diesem Standort ausgibt.

Open Weather Map

Open Weather Map ist ein kostenloser Online Service, über den wir genaue Wetterinformationen über einen bestimmten Standort abrufen können. Im kostenlosen Paket sind 60 API-Calls pro Minute pro Nutzer möglich, was in den meisten Fällen vollkommen ausreichen sollte. Lediglich eine Registrierung auf der Website von Open Weather Map ist notwendig um den dazughörigen API-Key zu bekommen.

{
  coord: {
    lon: 10,
    lat: 53.55
},
 weather: [
  {
    id: 520,
    main: "Rain",
    description: "light intensity shower rain",
    icon: "09d"
  }
],
base: "stations",
main: {
temp: 277.63,
feels_like: 272.99,
temp_min: 277.04,
temp_max: 278.71,
pressure: 1006,
humidity: 93
},
visibility: 10000,
wind: {
speed: 4.6,
deg: 250
},
clouds: {
all: 75
},
dt: 1580811432,
sys: {
type: 1,
id: 1263,
country: "DE",
sunrise: 1580799684,
sunset: 1580832377
},
timezone: 3600,
id: 2911298,
name: "Hamburg",
cod: 200
}

Über die URL https://api.openweathermap.org/data/2.5/weather?q=Hamburg,DE&APPID=APIKEY ist es euch möglich Wetterdaten für den Standort den ihr mit einer Stadt und einem Ländercode an Open Weather Map übergeben habt, ebenfalls JSON Daten auszulesen. Hier bekommen wir zum Beispiel einheitliche Beschreibungen für das Wetter wie „Clouds“, „Clear“ oder „Rain“ aber auch die Temperatur in Grad Fahrenheit angegeben. Diese müssen wir, wenn wir Grad Celsius erfassen wollen noch etwas umrechnen (nämlich -273,15) und schon haben wir wunderbare Daten die wir über einen DataLayer an den Google Tag Manager übergeben können und in eine Benutzerdefinierte Dimension übergeben.
Der fertige Code sieht dann so aus und muss im Quellcode deiner Website eingefügt werden nach dem Google Tag Manager Script (denkt dran eure eigenen API-Keys einzusetzen ;D):

var getJSON = function(url, callback) {
  var xhr = new XMLHttpRequest();
  xhr.open("GET", url, true);
  xhr.responseType = "json";
  xhr.onload = function() {
    var status = xhr.status;
    if (status == 200) {
      callback(null, xhr.response);
    } else {
      callback(status);
    }
  };
  xhr.send();
};
getJSON("https://ssl.geoplugin.net/json.gp?k=APIKEY", function(
  err,
  data
) {
  if (err != null || `${data.geoplugin_status}` != "200") {
    console.error(err);
  } else {
    var weatherurl = `https://api.openweathermap.org/data/2.5/weather?q=${data.geoplugin_city},${data.geoplugin_countryCode}&APPID=APIKEY`;
    getJSON(weatherurl, function(err, wdata) {
      if (err != null) {
        console.error(err);
      } else {
        var celsius = `${wdata.main.temp}` - 273.15;
        var weather = `${wdata.weather[0].main}`;
        console.log(weather);
        console.log(celsius);
        dataLayer.push({
          weather: weather,
          temperatur: celsius,
          event: "getWeather"
        });
      }
    });
  }
});

Google Tag Manager

Wenn ihr das JavaScript so wie es oben Angegeben ist in eurem Website Quellcode nach dem Tag Manager eingebunden habt, bekommt ihr ein DataLayer Event gepusht welches direkt die Wetterdaten mit übergibt.

Für dieses Ereignis müsst ihr lediglich einen Trigger anlegen, der dann auslöst, wenn der DataLayer gepusht wird. Dazu benötigt ihr noch zwei Variablen, welche die Wetterdaten aus dem DataLayer ziehen.

Wenn ihr jetzt noch in Google Analytics zwei Benutzerdefinierte Dimensionen im Session Umfang erstellt habt sind alle Vorraussetzungen geschaffen um das Google Analytics Ereignis anzulegen mit dem ihr die Wetterdaten erfassen könnt.

Jetzt müsst ihr nur noch den Container veröffentlichen und dann ist euer Wetter Tracking für Google Analytics fertig gebaut! Nun könnt ihr ein Benutzerdefiniertes Reporting in Google Analytics anlegen, indem ihr eure Metriken mit der Dimension Wetter kombiniert. Voilà: Wetter-Tracking!

Jetzt haben wir die Daten! Und wie wir diese nun in RStudio auswerten, dass werde ich demnächst in einem weitern Blog Post erklären.

Kommentar verfassen