Geschrieben von

Google Analytics 4: PII aus URL entfernen

Webtracking

Was mit Universal Analytics mit einem customTask ging (PII aus Feldern entfernen), ist mit der selben Vorgehensweise in Google Analytics 4 (noch) nicht möglich. GA4 unterstützt aktuell leider noch keine customTasks. Damit der Einsatz von GA4 auch im Produktiv-Betrieb stattfinden kann, gibt es mehrere Möglichkeiten zu verhindern, dass PII-Daten an Google Analytics geschickt werden. Hits könnten zunächst an einen eigenen Server-Endpunkt geschickt werden (z.B. Google Tag Manager Server Container), um dort die Daten zu bereinigen, bevor sie an GA geschickt werden. Eine clientseitige Möglichkeit ist der Einsatz von JavaScript-Variablen im Google Tag Manager, die nach bestimmten Mustern für spezielle Felder – wie die URL – suchen und die Werte ersetzen, damit es zu keinen PII in Google Analytics kommt. Die Daten werden also vor dem Hit noch bereinigt. Wie das für die URL funktioniert, zeige ich nachfolgend.

Variable erstellen

Im Google Tag Manager erstellen wir zunächst eine Variable vom Typ “Benutzerdefiniertes JavaScript”:

Dort kommt nun die JavaScript-Logik rein:

  • Die aktuelle URL speichern wir zunächst in einer Variable
  • Dann folgt ein Array mit verschiedenen regulären Ausdrücken, die nach bestimmten Mustern in der URL suchen, die auf PII hindeuten können.
  • Auch ist im Array für jeden regulären Ausdruck definiert, mit welchem Wert das Feld mit PII überschrieben werden soll.
  • Zum Schluss wird dann einfach die URL-Variable mit dem Array abgeglichen und mit dem neuen Wert ersetzt.

Das Array kann natürlich auch erweitert und mit eigenen Mustern definiert werden. Der nachfolgende Code soll daher als Basis dienen (z.B. macht es Sinn “email-removed” einfach nur mit “removed” zu ersetzen, damit “email” komplett aus dem Feld verschwindet und es zu keinen falschen Alarm im GA-System kommt):

function() {
  var url = window.location.toString();
  var replacePII = [
    {
      rgx: /((tel=)|(telephone=)|(phone=))[\d\+\s][^&\/\?]+/gi,
      repl: 'tel-removed'
    },
    {
    rgx: /((firstname=)|(lastname=)|(surname=)|(name=))[^&\/\?]+/gi,
    repl: 'name-removed'
    },
    {
    rgx: /((username=)|(user=)|(userId=))[^&\/\?]+/gi,
    repl: 'username-removed'
    },
    {
    rgx: /((password=)|(passwd=)|(pass=))[^&\/\?]+/gi,
    repl: 'password-removed'
    },
  ];
 
  replacePII.forEach(function(regArr) {
    url = url.replace(regArr.rgx, regArr.repl);
  });
  return url;
}

Den Code findest du auch in meinen GitHub-Repo. Ist der Code in der GTM-Variable integriert, kannst du speichern:

GA4-Tag anpassen

Anschließend gehst du unter “Tags” zu deinem GA4-Tag und weist die Variable dem Feld “page_location” unter “Festzulegende Felder” zu:

Testen und veröffentlichen

Zum Schluss muss das Ganze natürlich noch getestet werden. Aktiviere den Vorschaumodus, gebe eine URL deiner Website an und füge gleichzeitig die entsprechenden Parameter hinzu. Beispiel:

?tel=123456&firstname=demir&lastname=jasarevic&user=abc&password=123456789

In den Tag-Details im Vorschaumodus siehst du dann die überschriebenen Werte (auch wenn es GTM hier unschön mit Zeilenumbrüchen darstellt):

Auch im ausgehenden Hit ist zu sehen, dass die PII-Daten entfernt wurden: