Coupons technisch sauber umsetzen
Eine belastbare Coupon-Implementierung besteht aus einem sauberen Datenmodell, einer deterministischen Regel-Engine und definierten Prozessen für Rückgabe, Storno und Grenzfälle wie Zeitzonen, Rundung und Mehrwährung. Die meisten teuren Couponfehler sind Modell-, nicht Codefehler.
Datenmodell
Bewährt hat sich die Trennung von Promotion (die Regel) und Code (der Zugang):
Promotion: id, name, typ (prozent|fix|versand|zugabe|staffel),
wert, mindestbestellwert, max_rabatt, start, ende,
produkt_regeln, kategorie_regeln, kombinierbar,
prioritaet, limit_gesamt, limit_pro_kunde, status
Code: code, promotion_id, typ (einmal|mehrfach),
nutzungszaehler, max_nutzungen, kunde_id (optional),
gueltig_von, gueltig_bis, status
So können viele Einmalcodes auf dieselbe Promotion zeigen, und Auswertungen laufen über die Promotion-ID statt über Codelisten.
Regel-Engine: die kritischen Entscheidungen
- Gültigkeit: Zeitraum, Status, Nutzungszähler und Kundenbindung werden serverseitig geprüft – niemals nur im Frontend.
- Mindestbestellwert: Bezugsgröße definieren (vor/nach anderen Rabatten, mit/ohne Versand) und dokumentieren.
- Maximalrabatt: Kappungsgrenze gegen Konfigurationsfehler bei Prozentrabatten.
- Kombinierbarkeit und Priorität: explizite Matrix, welche Aktionen stapelbar sind und in welcher Reihenfolge sie rechnen – die häufigste Quelle ungewollter Doppelrabatte.
- Rundung und Steuer: Rabatte anteilig auf Positionen verteilen, damit Steuerbeträge und Teilerstattungen korrekt sind; Rundungsregel (pro Position vs. pro Bestellung) festschreiben.
- Mehrwährung und Zeitzonen: Beträge je Währung definieren (nicht umrechnen) und Start/Ende mit expliziter Zeitzone speichern – „Mitternacht“ ist sonst mehrdeutig.
- Rückgabe und Storno: Regeln für anteilige Rabattrückrechnung und MBW-Unterschreitung nach Teilretoure (Details).
Schnittstellen und Betrieb
- APIs: Endpunkte für Codeprüfung, Einlösung (idempotent!) und Kampagnenverwaltung; Rate Limits gegen Enumeration (Fraud).
- Webhooks/Events: Einlösungen, Stornos und Retouren als Ereignisse ins Reporting und CRM streamen.
- Kassenintegration: Scan → Prüfung → Entwertung in einer Transaktion; Offline-Fähigkeit mit späterem Abgleich bedenken (POS-Kontext).
- Sicherheit: Codes wie Zugangsdaten behandeln – keine Klartext-Codelisten in Logs, Tickets oder Screenshots; Erstellung und Export protokollieren.
Vor dem Launch: QA- und Testplan vollständig durchlaufen. Codes erzeugen: Generator mit passender Importvorlage.