Kampagnen
Base path: /api/campaigns
GET /campaigns
Alle Kampagnen abrufen.
Auth: Admin
Query parameters: page, limit
POST /campaigns
Neue Kampagne erstellen.
Auth: Admin
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
name | string | Ja | Interner Kampagnenname |
subject | string | Ja | E-Mail-Betreff |
blocks | array | Ja | E-Mail-Bausteine |
segment_filters | object | Nein | Zielgruppenfilterkriterien |
GET /campaigns/:id
Einzelne Kampagne abrufen.
PUT /campaigns/:id
Kampagne aktualisieren.
DELETE /campaigns/:id
Kampagne löschen.
POST /campaigns/:id/send
Kampagne an alle passenden Empfänger senden.
Auth: Admin
Erstellt pro Empfänger einen E-Mail-Job in der job_queue. Der Worker rendert die blocks via MJML vor dem Versand.
Segmente
GET /campaigns/segments
Gespeicherte Zielgruppensegmente abrufen.
POST /campaigns/segments
Zielgruppensegment speichern.
| Feld | Typ | Pflicht |
|---|---|---|
name | string | Ja |
filters | object | Ja |
DELETE /campaigns/segments/:id
Segment löschen.
Vorlagen
GET /campaigns/templates
Gespeicherte E-Mail-Vorlagen abrufen.
POST /campaigns/templates
E-Mail-Vorlage speichern.
| Feld | Typ | Pflicht |
|---|---|---|
name | string | Ja |
blocks | array | Ja |
DELETE /campaigns/templates/:id
Vorlage löschen.
POST /campaigns/render-mjml
MJML-E-Mail zu HTML für die Vorschau rendern.
Auth: Admin
Request body: { "mjml": "<mjml>...</mjml>" }
Response: { "html": "<html>...</html>" }
Segmentfilter-Felder
| Feld | Typ | Beschreibung |
|---|---|---|
has_email | boolean | Nur Kunden mit E-Mail-Adresse |
has_phone | boolean | Nur Kunden mit Telefonnummer |
labels | string-Array | Kunden mit einem der angegebenen Labels |
last_visit_days_ago | integer | Kunden, die seit mehr als N Tagen nicht da waren |
min_total_spent | number | Mindestausgaben über POS |
max_total_spent | number | Höchstausgaben über POS |
birthday_months | integer-Array | Kunden mit Geburtstag in angegebenen Monaten (1=Jan, 12=Dez) |
service_category_id | integer | Kunden, die Dienstleistungen dieser Kategorie gebucht haben |
min_visits | integer | Mindestanzahl abgeschlossener Buchungen |
max_visits | integer | Höchstanzahl abgeschlossener Buchungen |
gender | string | Filtern nach Geschlecht des Kunden (z.B. male, female) |