# ANALYTICS IMPLEMENTATION - KOMPLETT-GUIDE
**AegisSight UG**
**Datum:** 2026-03-20
**Version:** 2.0
**Status:** Implementation Complete
---
# PHASE 1: BESTANDSAUFNAHME
## Dienste & Tracking Katalog
### **Dienste im Einsatz:**
- **AegisSight Analytics (Umami v3.0.3)** - Self-Hosted, Deutschland
- Keine Google Analytics
- Keine Facebook Pixel
- Keine Third-Party CDNs
- Keine Social Media Widgets
### **Cookies:**
**Keine.** Umami arbeitet vollständig cookieless. Es werden weder Session-Cookies noch Tracking-Cookies gesetzt. Die Identifikation erfolgt ohne Cookies und ohne Fingerprinting.
| Eintrag | Zweck | Typ | Opt-In? |
|---------|-------|-----|---------|
| `analytics-consent` (LocalStorage) | Consent-Status | LocalStorage | Nein (technisch) |
### **Tracking-Daten (anonymisiert):**
- Browser, OS, Device, Screen Resolution
- Land, Region (kein Stadtlevel, kein GeoIP-Lookup)
- Seiten, Referrer, Session-Dauer
- Traffic Source, UTM-Parameter
### **Personenbezug:** Nein
Umami speichert keine IP-Adressen und verwendet kein Fingerprinting. Alle Daten sind aggregiert und nicht auf einzelne Nutzer rückführbar.
**Rechtsgrundlage:** Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse) - da cookieless und ohne Personenbezug ist kein Opt-In zwingend erforderlich. Der Consent-Banner wird dennoch aus Transparenzgründen eingesetzt.
---
# PHASE 2: ENTSCHEIDUNG & DESIGN
## **Entscheidung: CUSTOM BANNER**
**Gründe:**
- Nur 1 Dienst - CMP wäre Overkill
- Volle Kontrolle, keine Abhängigkeiten
- Schneller (<5KB vs. 50-100KB für CMP)
- Kostenlos
---
## **UI-Design: Slim Layer**
### Banner (Primary):
```
┌─────────────────────────────────────────┐
│ Website-Analyse │
│ │
│ Text: Cookieless Analytics, Self- │
│ Hosted in Deutschland, keine │
│ Weitergabe an Dritte... │
│ │
│ [Details & Einstellungen] │
│ [Alles akzeptieren] [Nur notwendige] │
└─────────────────────────────────────────┘
```
### Settings Modal:
```
┌─────────────────────────────────────┐
│ Analyse-Einstellungen [×] │
├─────────────────────────────────────┤
│ ☑ Notwendig (immer aktiv) │
│ ☐ Statistik & Analyse │
│ └─ AegisSight Analytics (Umami) │
│ • Keine Cookies │
│ • Keine IP-Speicherung │
│ • Self-Hosted, Deutschland │
│ │
│ [Auswahl speichern] [Alle akz.] │
└─────────────────────────────────────┘
```
---
## **Texte (DE/EN)**
**Deutsch:**
- Titel: "Website-Analyse"
- Text: "Wir nutzen cookielose Analyse-Software auf unserem eigenen Server in Deutschland. Es werden keine persönlichen Daten gespeichert und nichts an Dritte weitergegeben."
- Buttons: "Alles akzeptieren" / "Nur notwendige"
**Englisch:**
- Title: "Website Analytics"
- Text: "We use cookieless analytics software on our own server in Germany. No personal data is stored and nothing is shared with third parties."
- Buttons: "Accept all" / "Only necessary"
---
# PHASE 3: IMPLEMENTATIONSPLAN
## **3.1 Gating-Pattern**
```
Page Load
↓
Check LocalStorage['analytics-consent']
↓
├─→ null → Show Banner + Block Tracking
├─→ 'accepted' → Load Umami Script
└─→ 'rejected' → Block Tracking
```
**Ablauf:** Das Umami-Script `/analytics-und-so/datenblick.js` wird erst nach Zustimmung geladen.
---
## **3.2 Script-Einbindung**
### Umami Tracking-Script (wird dynamisch geladen bei Consent):
```html
```
### API-Endpoint:
```
POST /analytics-und-so/api/erfassen
```
---
## **3.3 Storage-Schema**
### LocalStorage Keys:
```javascript
// Consent Status
"analytics-consent": {
value: "accepted" | "rejected",
expires: 1774051200000 // Timestamp (12 Monate)
}
// Consent Details (Audit-Trail)
"analytics-consent-details": {
timestamp: "2026-03-20T12:00:00Z",
version: "2.0",
categories: { necessary: true, analytics: true },
language: "de",
gpcSignal: false
}
```
---
## **3.4 Footer-Link (Persistent)**
```html
```
**Funktion:** Öffnet Banner erneut, ermöglicht Widerruf
---
## **3.5 Re-Prompt Regeln**
**Banner erneut zeigen bei:**
1. Consent abgelaufen (nach 12 Monaten)
2. Version-Change (z.B. 2.0 → 2.1)
3. User löscht LocalStorage
4. Klick auf "Analyse-Einstellungen"
---
## **3.6 Global Privacy Control (GPC)**
```javascript
if (navigator.globalPrivacyControl === true) {
// Auto-reject analytics
localStorage.setItem('analytics-consent', JSON.stringify({
value: 'rejected',
expires: Date.now() + 365 * 24 * 60 * 60 * 1000
}));
}
```
---
# PHASE 4: UMSETZUNG + TESTS
## **4.1 Dateien**
### **1. cookie-consent.css**
- Responsive Design (Mobile-First)
- Accessibility (Focus-Trap, ARIA, Keyboard)
- Animations (Fade-In, Slide-Up)
- Dark Mode kompatibel
### **2. cookie-consent.js**
- Consent Management Logic
- GPC Detection
- LocalStorage mit Expiry
- Multilingual (DE/EN)
- Public API
- Version Control
- Dynamisches Laden von `/analytics-und-so/datenblick.js`
### **3. DATENSCHUTZ_ANALYTICS.md**
- Fertige Datenschutzerklärung
- DSGVO-konforme Texte
---
## **4.2 Features implementiert**
- **Opt-In vor Tracking** (Gating)
- **Backdrop-Overlay** (verhindert Interaktion)
- **Two-Step Design** (Banner → Settings)
- **Consent-Versionierung** (Re-Prompt bei Updates)
- **GPC/DNT Support** (Auto-Reject)
- **LocalStorage mit Expiry** (12 Monate)
- **Audit-Trail** (Consent-Details)
- **Multilingual** (DE/EN)
- **Accessibility** (ARIA, Focus-Trap, Keyboard)
- **Responsive** (Mobile-optimiert)
- **Public API** (programmatischer Zugriff)
- **Cookieless Tracking** (keine Cookies nötig)
---
## **4.3 Test-Checkliste**
### **Funktional:**
- [ ] Banner erscheint beim ersten Besuch
- [ ] "Alles akzeptieren" lädt `/analytics-und-so/datenblick.js`
- [ ] "Nur notwendige" blockiert Script-Laden
- [ ] Re-Visit: Kein Banner (Consent gespeichert)
- [ ] Footer-Link öffnet Banner erneut
- [ ] Widerruf funktioniert (Accept → Reject)
- [ ] GPC-Signal wird erkannt und respektiert
- [ ] Version-Change löst Re-Prompt aus
### **Script-Integration:**
- [ ] Script hat korrektes `data-website-id="598ef5fd-d2dc-4540-9e65-602889981dac"`
- [ ] Pageview wird an `/analytics-und-so/api/erfassen` gesendet
- [ ] Keine Cookies im Browser nach Tracking
### **Accessibility & Responsive:**
- [ ] Keyboard-Navigation funktioniert (Tab, Enter, Esc)
- [ ] Screen Reader liest Banner korrekt vor
- [ ] Mobile: Buttons sind touchbar, kein horizontaler Scroll
---
## **4.4 Browser-Kompatibilität**
| Browser | Version | Status |
|---------|---------|--------|
| Chrome | 120+ | - |
| Firefox | 121+ | - |
| Safari | 17+ | - |
| Edge | 120+ | - |
| Chrome Mobile | 120+ | - |
| Safari iOS | 17+ | - |
**Minimum Support:** ES6 (2015+), LocalStorage, Fetch API
---
# PHASE 5: DATENSCHUTZERKLÄRUNG
## **5.1 Textbausteine**
**Datei:** `DATENSCHUTZ_ANALYTICS.md`
**Enthält:**
- Art und Umfang der Datenverarbeitung
- Rechtsgrundlage (Art. 6 Abs. 1 lit. f DSGVO - berechtigtes Interesse)
- Hinweis auf cookieloses Tracking
- Keine IP-Speicherung, kein Fingerprinting
- Self-Hosted auf eigenem Server (Deutschland)
- Keine Datenübermittlung an Dritte
- Widerruf der Einwilligung
- GPC-Unterstützung
- Betroffenenrechte (Art. 15-21 DSGVO)
---
## **5.2 Integration in Website**
```html
Wir nutzen AegisSight Analytics (Umami), eine cookielose, datenschutzfreundliche
Analyse-Software. Diese wird auf unserem eigenen Server in Deutschland betrieben.
Es werden keine Cookies gesetzt, keine IP-Adressen gespeichert und kein
Fingerprinting eingesetzt. Die erhobenen Daten sind nicht auf einzelne Personen
rückführbar.4. Website-Analyse