Notifications
[notifications] [admin] [portal]
In-App-Benachrichtigungen für Kunden — Wartungshinweise, Ticket-Antworten, allgemeine Updates. Optional auch als Mail.
Für wen
- Admin erstellt + verwaltet Notifications
- Kunde sieht sie im Portal-Header (Glocke-Icon mit Counter)
Notification-Typen
- manual — Admin schreibt eine eigene Notification (Standardfall)
- maintenance — System-generiert wenn Wartungsmodus aktiviert (🔧 Icon)
- ticket_reply — auto-generiert wenn Admin auf Ticket antwortet (💬 Icon)
- package_change — wenn sich das Paket des Kunden ändert
- invoice — Stripe-bezogene Hinweise (Phase 2)
Schritt für Schritt — Admin
1. Notifications-Übersicht öffnen
Sidebar → Notifications.
2. Neue Notification erstellen
+ Neue Notification:
- Audience: Alle Kunden / Spezifische Pakete / Einzelne Kunden
- Titel + Nachricht
- Priorität: low / medium / high
- Gültigkeitszeitraum: starts_at + ends_at (optional, sonst ab sofort unbegrenzt)
- Auch per Mail senden: Checkbox
3. Veröffentlichen
Veröffentlichen klicken. Kunden sehen die Notification:
- Sofort im Portal (Glocke-Icon im Header zeigt Counter)
- Als Mail wenn der Send-Toggle aktiv war
4. Verwalten
- Archivieren — Notification ist nicht mehr aktiv (verschwindet aus Portal-Glocke), aber bleibt im Archiv
- Bearbeiten — vor Veröffentlichung anpassbar; danach nur noch limitiert (Konsistenz)
Was Kunden sehen
Portal-Header
Glocke-Icon mit Counter (= ungelesene Notifications). Klick öffnet Drawer mit Liste.
Notification-Item
- Icon (typabhängig: 💬 ticket_reply, 🔧 maintenance, ✅ package_change, 🔔 manual, 📄 invoice)
- Titel + Nachricht
- Zeitstempel
- Gelesen-Button (markiert als gelesen, Counter sinkt)
- Löschen-Button (✕) (persistent — pro Kunde "weggeklickt")
Pro-Kunde-Dismiss
Wenn ein Kunde eine Notification "wegklickt" (✕), wird die Notification-ID in seinem dismissed_notifications-Array gespeichert (Migration 048). Andere Kunden sehen sie weiterhin.
Häufige Fragen
Wie sieht eine Ticket-Antwort als Notification aus?
Synthetic-ID-Format: ticket_<ticket_id> (nicht <message_id>). Pro Ticket nur die NEUESTE Admin-Antwort als Notification — sonst würde jede Antwort eine neue Notification erzeugen. Wenn Kunde das Ticket öffnet, wird die Notification automatisch als gelesen markiert.
Kann ich Notifications nur an bestimmte Kunden senden? Ja — Audience-Filter erlaubt:
- Alle (Standard)
- Pro Paket (z.B. nur Pro-Kunden)
- Einzelne Kunden (Multi-Select)
Werden archivierte Notifications gelöscht?
Nein. is_archived=true blendet sie nur aus Portal-Glocke aus. Im Admin-Archiv weiterhin sichtbar.
Mail wird nicht versandt — was tun?
- Resend-Domain
licensio.iomuss im Resend-Dashboard verifiziert sein - ENV
RESEND_API_KEYmuss korrekt sein - Audience nicht leer (Kunden ohne aktive Mail kriegen nichts)
Ich sehe als Admin eine Notification "Neues Ticket" — wo kommt die her?
DSGVO-Trennung: Admin-Notifications haben audience='admin', sind nicht für Kunden sichtbar. Werden System-generiert für Tenant-Admins (z.B. neuer Ticket eingegangen).
Verwandt
- Tickets — wie Ticket-Antworten zu Notifications werden
- Einstellungen — Wartungsmodus → Maintenance-Notification