Analytics Tracking: Datenschutzorientierte Ereigniserfassung

Dieser Artikel erklärt, wie wir das Nutzerverhalten tracken, während wir die Privatsphäre respektieren und Bot-Traffic vermeiden.

Das Problem: Nutzerverhalten verstehen

Wir müssen wissen:

  • Welche Seiten Nutzer besuchen

  • Welche Produkte sie sich ansehen

  • Woher der Traffic kommt (Google Ads, organisch, Social Media)

  • Welche Kampagnen Conversions antreiben

Aber wir müssen vermeiden:

  • Bots und Crawler zu tracken

  • Personenbezogene Daten (PII) zu speichern

  • Datenschutzbestimmungen zu verletzen

Die Lösung: Client-Seitiges + Server-Seitiges Tracking

Client-Seitig: JavaScript-Tracking

Besucher-ID: Zufällige ID, gespeichert in einem Cookie (365 Tage)

Sitzungs-ID: Zufällige ID, gespeichert im sessionStorage (bis zum Schließen des Browsers)

Kampagnen-Parameter: Aus der URL extrahiert und im sessionStorage gespeichert

Getrackte Parameter:

  • gclid - Google Click ID (Suchanzeigen)

  • gbraid - Google Ads Click ID (Shopping-Anzeigen)

  • wbraid - Google Ads Click ID (iOS)

  • fbclid - Facebook Click ID

  • srsltid - Google organische Suchergebnis-ID

  • utm_source, utm_medium, utm_campaign, utm_term, utm_content

Speicherung: Parameter werden in Cookies gespeichert (30 Minuten) für WhatsApp/Telefon-Klick-Attribution

Server-Seitig: Anreicherung

Der Server reichert Ereignisse an mit:

GeoIP-Daten: Land, Region, Stadt von der IP-Adresse

User-Agent-Parsing: Browser, Betriebssystem, Gerätetyp

Zeitstempel: Serverzeit (UTC)

Bot-Erkennung: Filtert bekannte Bot-User-Agents

Ereignistypen

Seitenaufruf: Nutzer besucht eine Seite

Produktansicht: Nutzer sieht Produktseite

Zum Warenkorb hinzufügen: Nutzer fügt Produkt zum Warenkorb hinzu

Zur Kasse: Nutzer startet den Kaufvorgang

Kauf: Nutzer schließt Kauf ab

WhatsApp-Klick: Nutzer klickt auf WhatsApp-Button

Telefon-Klick: Nutzer klickt auf Telefonnummer

Datenfluss

sequenceDiagram
    participant User
    participant JS as JavaScript
    participant API as /api/analytics
    participant Firehose as Kinesis Firehose
    participant S3
    
    User->>JS: Besucht Seite
    JS->>JS: Extrahiert URL-Parameter
(gclid, utm_*, etc.) JS->>JS: Speichert im sessionStorage JS->>API: POST Ereignis + Parameter API->>API: Reichert mit GeoIP an API->>API: Parst User-Agent API->>API: Filtert Bots API->>Firehose: Sendet angereichertes Ereignis Firehose->>S3: Speichert im Analytics-Bucket

Bot-Erkennung

Wir filtern Bot-Traffic anhand mehrerer Signale:

User-Agent-Muster: Bekannte Bot-Strings (Googlebot, Bingbot, etc.)

Verhaltensmuster: Zu schnell, zu viele Anfragen

Fehlendes JavaScript: Bots führen oft kein JS aus

Ausschluss-Cookie: tv_exclude=true stoppt jegliches Tracking

Datenschutz

Keine PII: Wir speichern niemals Namen, E-Mails, Telefonnummern

Anonymisierte IPs: Letztes Oktett wird vor der Speicherung entfernt

Kein Cross-Site-Tracking: Cookies sind nur First-Party

Opt-out: Nutzer können Ausschluss-Cookie setzen

Datenaufbewahrung: Ereignisse werden nach 90 Tagen gelöscht

Bedingtes Pixel-Laden

Wir laden Tracking-Pixel nur, wenn relevant:

Google Ads Pixel: Nur wenn gclid, gbraid oder wbraid vorhanden

LinkedIn Pixel: Nur wenn msclkid vorhanden

Facebook Pixel: Nur wenn fbclid vorhanden

Vorteil: Schnellere Seitenladezeiten, weniger Tracking-Overhead

Traffic-Quellen-Erkennung

Wir erkennen die Traffic-Quelle anhand von URL-Parametern:

Google Ads: gclid, gbraid, wbraidutm_source=google_ads

Google Organic: srsltidutm_source=google_search

Facebook: fbclidutm_source=facebook

LinkedIn: msclkidutm_source=linkedin

Direkt: Keine Parameter → utm_source=direct

Conversion-Tracking

Wir tracken Conversions durch den Funnel:

ProduktansichtZum Warenkorb hinzufügenZur KasseKauf

Jeder Schritt enthält:

  • Besucher-ID (für Attribution)

  • Sitzungs-ID (für Sitzungsanalyse)

  • Kampagnen-Parameter (für ROI-Berechnung)

  • Produkt-SKU (für Produktanalyse)

Lead-Touch-Tracking

Wenn Nutzer uns kontaktieren (WhatsApp, Telefon, E-Mail), erfassen wir:

Kontaktmethode: WhatsApp, Telefon, E-Mail

Kampagnen-Parameter: Aus Cookies (30-Minuten-Fenster)

Produktkontext: Auf welcher Produktseite sie waren

Vorteil: Offline-Conversions Online-Kampagnen zuordnen

Rate Limiting

Der Analytics-Endpoint ist rate-limited:

Limit: 100 Anfragen pro 10 Minuten pro IP

Vorteil: Verhindert Missbrauch und Bot-Fluten

Speicherung

Ereignisse werden über Kinesis Firehose in S3 gespeichert:

Format: JSON Lines (ein Ereignis pro Zeile)

Partitionierung: Nach Datum (Jahr/Monat/Tag/Stunde)

Kompression: Gzip

Aufbewahrung: 90 Tage

Abfragen

Ereignisse werden über AWS Athena abgefragt:

Schema: Definiert im Glue Data Catalog

Abfragen: SQL auf S3-Daten

Anwendungsfälle: Kampagnen-ROI, Produktpopularität, Traffic-Quellen

Referenzen

Technische Konzepte

AWS-Dienste

Verwandte Artikel

Zusammenfassung

Unser Analytics-System trackt Nutzerverhalten, während es die Privatsphäre respektiert:

Client-seitig:

  • ✅ Extrahiert Kampagnen-Parameter aus der URL

  • ✅ Speichert im sessionStorage (sitzungsgebunden)

  • ✅ Speichert in Cookies (30 Min. für Attribution)

  • ✅ Sendet Ereignisse an die API

Server-seitig:

  • ✅ Reichert mit GeoIP und User-Agent an

  • ✅ Filtert Bot-Traffic

  • ✅ Sendet an Kinesis Firehose

  • ✅ Speichert in S3 (nach Datum partitioniert)

Datenschutz:

  • ✅ Keine PII gespeichert

  • ✅ Anonymisierte IPs

  • ✅ Nur First-Party-Cookies

  • ✅ Opt-out verfügbar

  • ✅ 90-tägige Aufbewahrung

Bedingtes Laden:

  • ✅ Google Ads Pixel nur wenn gclid vorhanden

  • ✅ LinkedIn Pixel nur wenn msclkid vorhanden

  • ✅ Facebook Pixel nur wenn fbclid vorhanden

Dieser Ansatz vereint Erkenntnisgewinn mit Datenschutz und Performance.


← Zurück zum Dokumentations-Index