Das Marketing-Modul deckt klassisches Outbound-Marketing ab: E-Mail-Kampagnen, Coupons, Tracking. Routing: marketing-api.ayoune.app (separates mail-tracking-api.ayoune.app für Open/Click-Pixel).
Hauptentitäten
Coupons
Rabatt-Codes mit Lifecycle und Limits.
| Feld | Hinweis |
|---|---|
code |
unique pro Customer |
value |
Zahl |
type |
percent / fixed / freeshipping |
validFrom / validUntil |
Date-Range |
usageLimit |
global Max-Einlösungen |
perUserLimit |
Max-Einlösungen pro User |
applicableProducts |
ProductId-Array (leer = alle) |
_status |
active / paused / expired |
Rights: marketing.coupons.{view|create|edit|delete|export}.
Beispiel:
ay create coupons "SUMMER25" \
--set type=percent --set value=25 \
--set validUntil=2026-09-30
Newsletters
Mail-Templates + Versand-Trigger.
| Feld | Hinweis |
|---|---|
subject |
Pflicht |
body |
Handlebars-Template |
recipientFilter |
Mongo-Query auf Consumers |
scheduleAt |
Versand-Zeitpunkt |
tracking |
bool — Open/Click-Pixel? |
ay create newsletters "Summer-Sale 2026" \
--set subject="25% auf Outdoor" \
--set recipientFilter='{"tags":"outdoor","_status":"active"}' \
--set scheduleAt=2026-06-01T08:00:00Z
Custom-Actions:
POST /newsletters/:id/actions/send-test --body '{"to":"qa@firma.tld"}'
POST /newsletters/:id/actions/cancel
POST /newsletters/:id/actions/duplicate
MailLogs
Read-Only-Audit aller versendeten Mails — entsteht automatisch beim Versand.
| Feld | Hinweis |
|---|---|
to |
Empfänger-Email |
consumer |
ConsumerId (wenn matchbar) |
newsletter |
NewsletterId |
status |
queued / sent / bounced / complained / opened / clicked |
openedAt |
Date |
clickedAt |
Date |
bounceReason |
string |
Tracking-Pixel und Click-Redirects laufen über mail-tracking-api.ayoune.app — separates Service, weil es public sein muss (kein Auth).
Rights: marketing.maillogs.{view|export}.
Tracking-Pipeline
Newsletter-Send
→ MailLog erzeugt
→ Mail durch Provider versendet
→ Empfänger öffnet → Pixel-Hit auf mail-tracking-api → MailLog.openedAt
→ Empfänger klickt Link → Redirect über mail-tracking-api → MailLog.clickedAt
→ Bounce-Webhook von Provider → MailLog.status=bounced
Google-Ads (sub-modul ads)
Google-Ads v23 Integration unter ads-api.ayoune.app:
ads.campaigns— Campaigns syncenads.adgroups— AdGroupsads.keywords— Keywords + Performanceads.metrics— Impressions, Clicks, Conversions
Setup via OAuth: ay exec ads:authorize öffnet Google-OAuth, persistiert Refresh-Token in Credentials.
Verbindungen
- CRM-Module — Empfänger-Auswahl
- Notifications — Versand-Channels
- Webhooks — Bounces/Opens nach extern