70 — Notification-System
Aktualisiert am 1. Juni 2026
70 — Notification-System
PartnerDesk hat ein eigenes Notification-System für Multi-Channel-Benachrichtigungen an Partner (und teilweise Tenant-Admins). Notifications können automatisch durch System-Events ausgelöst oder manuell vom Admin verschickt werden.
Was kann das System?
- In-App-Notifications (Bell-Icon im Partner-Portal mit Badge + Detail-Modal).
- Email-Benachrichtigungen (mit Tenant-Whitelabel-From-Adresse).
- Trigger durch System-Events (TX approved, Payout fertig, Partner aktiviert).
- Manuelle Massen-Notifications (Tenant-Admin schickt eine Ankündigung an alle aktiven Partner).
- Geplante Notifications (Sendezeitpunkt in der Zukunft).
- Templates mit Platzhaltern (
{partner.firstName},{payout.amount}). - Live-Preview im Template-Editor.
- Block-Editor für reiche Inhalte (Heading, Text, Bild, Button).
Auslöser-Events (automatisch)
Das System hört auf vier Domain-Events und triggert die entsprechende Notification, falls ein aktives Template dafür existiert:
| Event | Default-Template | Empfänger |
|---|---|---|
transaction.approved |
„Neue Provision freigegeben" | Partner |
payout.approved |
„Gutschrift erstellt" | Partner |
commission.earned |
„Provision verdient" | Partner |
partner.activated |
„Willkommen!" | Partner (selbst), zusätzlich Sponsor |
Plus Lifecycle-Events für Tenant-Owner (siehe 73 — Lifecycle-Mails).
Manuelle Notifications anlegen
Admin → „Benachrichtigungen" → „Neue Notification".
Editor-Aufbau
| Bereich | Funktion |
|---|---|
| Titel | Erscheint im Bell-Panel des Partners |
| Block-Editor | Strukturierter Inhalt mit Heading/Text/Bild/Button-Blöcken |
| Sendezeitpunkt | Sofort, geplant für später, oder als Entwurf |
| Zielgruppe | Alle aktiven Partner / nach Status / nach CommissionGroup |
| Kanäle | In-App, Email — pro Partner gemäß seinen Präferenzen |
| Live-Preview | Rechts neben dem Editor zeigt die Mail- und In-App-Vorschau |
Send-Modi
- Sofort senden — Verarbeitung startet im Hintergrund (Messenger-Queue, Chunks von 50/Batch).
- Geplant — Symfony-Scheduler triggert den Versand zum gewünschten Zeitpunkt.
- Entwurf — speichern, später anpassen, später senden.
Templates
Sie können wiederverwendbare Vorlagen anlegen:
Admin → „Benachrichtigungen" → „Templates".
Platzhalter
In Texten verwendbar (werden vor Versand ersetzt):
| Platzhalter | Inhalt |
|---|---|
{partner.firstName} |
Vorname |
{partner.lastName} |
Nachname |
{partner.email} |
|
{tenant.name} |
Tenant-Name |
{tenant.companyName} |
Firmenname aus Legal-Settings |
{transaction.commissionAmount} |
(bei TX-Event) Provisionsbetrag |
{transaction.productName} |
Produkt |
{payout.payoutNumber} |
Gutschriftnummer |
{payout.grossAmount} |
Brutto-Auszahlung |
{payout.period} |
Zeitraum |
Bei Event-Triggern werden die Platzhalter automatisch aus den Event-Daten gefüllt.
Live-Preview im Editor
Das Editor-Modal lädt einen /preview-Endpoint mit Sample-Entities:
- Bei
transaction.approved→ Fake-Partner + Fake-TX mit Beispielwerten. - Bei
payout.approved→ Fake-Payout (z. B.PA-2026-0042, 250 €). - Etc.
Der Preview rendert in Echtzeit (debounced 350 ms nach letzter Eingabe).
Test-Send
Vor dem Massen-Versand können Sie eine Test-Notification an eine Wunschadresse schicken — verifiziert Look & Feel ohne echte Empfänger zu spammen.
Webhook-Notifications
Externe Systeme können Notifications via HMAC-signiertem Webhook senden:
POST /api/webhooks/{slug}/notification
Sinnvoll für: CRM-Trigger („Lead-Status hat sich geändert"), externe Marketing-Tools.
Empfänger-Filter
Beim Erstellen einer Notification können Sie filtern:
- Alle Partner des Tenants.
- Nur aktive Partner.
- Nach Status (
pendingfür Aktivierungs-Erinnerungen,suspendedfür Reaktivierungs-Angebote). - Nach CommissionGroup (z. B. nur Premium-Partner).
- Nach Sprache (
language-Feld am Partner).
In-App-UX
Partner sieht:
- Bell-Icon in der Top-Bar mit Unread-Badge (
99+bei mehr als 99). - Slide-In-Panel beim Klick mit Liste der letzten Notifications.
- Detail-Modal beim Klick auf eine Notification — markiert als gelesen.
- Tabs: „Aktiv", „Archiviert", „Geplant" (für Partner mit Self-Schedule-Rechten, derzeit nicht aktiv).
Asynchrone Verarbeitung
Notifications werden über die Symfony-Messenger-Queue verarbeitet (notifications-Transport):
- Massen-Versendungen werden in Batches von 50 zerlegt.
- Bei Fehlschlag pro Empfänger: andere Empfänger sind nicht betroffen.
- Gescheiterte Messages landen im Failed-Transport (Superadmin kann retry’en — siehe 113).
Notification-Statistiken
Im Detail einer versendeten Notification sehen Sie:
- Empfänger-Anzahl.
- Wie viele wurden zugestellt.
- Wie viele gelesen (für In-App-Channel).
- Click-Rate (wenn CTA-Buttons enthalten).
Verwandte Kapitel
- 71 — Email-Whitelabel — From-Adresse anpassen
- 72 — Email-Templates — Welche Mails es gibt
- 73 — Lifecycle-Mails — Automatische Mails zu Tenant-Status
Technische Tiefen-Doku: ../007-partner-notifications.md, ../033-admin-dashboard-chart-preview.md (Live-Preview)