# Analytics & Event Tracking Mana verwendet Umami für Web Analytics. Alle Events werden zu `stats.mana.how` gesendet. ## Umami Dashboard - **URL**: https://stats.mana.how - **Public Stats**: Alle Websites haben Public Sharing aktiviert ## Architektur Web-App Analytics werden über `hooks.server.ts` injiziert (nicht mehr hardcoded in `app.html`). ``` .env.development → UMAMI_WEBSITE_ID_CHAT=xxx ↓ (scripts/generate-env.mjs) apps/chat/apps/web/.env → PUBLIC_UMAMI_WEBSITE_ID=xxx ↓ (process.env in hooks.server.ts) injectUmamiAnalytics(html) → ``` ### Astro Landing Pages ```astro --- // Layout.astro - Script tag is already in
--- ``` ### Development Mode Im Development-Modus ist Umami normalerweise nicht geladen (kein Script-Tag), daher werden Events stillschweigend ignoriert (`isUmamiAvailable()` gibt `false` zurück). Fehler beim Tracking werden als `console.warn` ausgegeben. --- ## Event Naming Conventions 1. **snake_case** für Event-Namen: `task_created`, nicht `taskCreated` 2. **Kurze, beschreibende Namen**: `signup_completed`, nicht `user_has_completed_signup_process` 3. **Konsistente Suffixe**: - `_created`, `_updated`, `_deleted` für CRUD - `_started`, `_completed`, `_canceled` für Prozesse - `_clicked`, `_viewed` für UI-Interaktionen ## Privacy - Keine persönlichen Daten in Events (keine E-Mails, Namen, etc.) - Suchanfragen: Nur Länge wird getracked, nicht der Inhalt - Error Messages: Auf 100 Zeichen gekürzt - GDPR-konform: Umami ist privacy-focused und setzt keine Cookies ## Umami Server - **Host**: Mac Mini (mana-server) - **Container**: `mana-mon-umami` - **Image**: `ghcr.io/umami-software/umami:postgresql-latest` - **Datenbank**: PostgreSQL (`umami` DB, shared Postgres-Instanz) - **Port**: 3000 (intern) → 8010 (extern), via Cloudflare Tunnel erreichbar unter stats.mana.how