📧 Newsletter-System – Detail ToDo
1. Datenbank / Modelle (Prisma)
- [ ]
NewsletterSubscription(E-Mail, Status, Quelle, createdAt, unsubscribedAt) - [ ]
SubscriptionSource(z. B. Formular, Tattoo/Piercing-Form, Admin-Import, CSV-Upload) - [ ]
NewsletterCampaign(Name, Betreff, Inhalt, Status: Draft/Sent) - [ ]
NewsletterCampaignRecipient(Verknüpfung Kampagne ↔ Abonnent + Status: Sent/Opened/Bounced)
Enums:
SubscriptionStatus→ SUBSCRIBED, UNSUBSCRIBED, BOUNCEDSourceType→ FORM, ADMIN, IMPORTCampaignStatus→ DRAFT, SCHEDULED, SENTRecipientStatus→ PENDING, SENT, OPENED, BOUNCED
2. Backfill & Migration
- [ ] E-Mails mit
agreeNewsletter = trueaus Tattoo-/PiercingForm übernehmen - [ ] Standard-Quelle „Formulare“ setzen
3. Unsubscribe-Flow
- [ ] API-Route
POST /api/newsletter/unsubscribe→ validiert Token - [ ] Generierung von sicheren Tokens (Hash + Ablaufzeit)
- [ ] Seite
/newsletter/unsubscribe/[token]mit Bestätigung („Sie wurden abgemeldet“)
4. Admin-Interface
- [ ] Abonnenten-Liste mit Filter (aktiv, abgemeldet, gebounced)
- [ ] Quelle anzeigen (Formular, Admin, Import etc.)
- [ ] Kampagnen-Übersicht (Status, Statistiken: gesendet, geöffnet, gebounced)
- [ ] Neue Kampagne erstellen (Betreff, Inhalt, Zielgruppe, Zeitplan)
5. Versand
- [ ] Versand über SMTP oder Mail-API (z. B. SendGrid / Postmark optional)
- [ ] Tracking-Pixel für Öffnungsrate
- [ ] Bounce-Handling (Mail zurück → Status auf BOUNCED)
6. Extras / Nice-to-Have
- [ ] Segmentierung (nur Kunden mit Tattoo, Piercing etc.)
- [ ] Vorlagen-System (HTML + Platzhalter wie {{studioName}})
- [ ] Statistik-Dashboard (Open-Rate, Klicks, Abmeldungen)
