DRE — Benutzerhandbuch
Letzte Aktualisierung: 2026-06-13
Dieses Handbuch richtet sich an Handelsunternehmen, Marketing-Planer, Filial-Operatoren und Compliance-Verantwortliche, die mit dem Digital Retail Engine (DRE) arbeiten. Es beschreibt die Benutzeroberfläche, tägliche Arbeitsabläufe und häufige Fragen.
Für technische Integrationsdetails (POS-API, OAuth2, Webhooks) lesen Sie bitte den Integrator Guide — insbesondere Promotion Scenarios & Action Types und die POS Integration Service-Referenz.
Inhaltsverzeichnis
- Phase 1 — Einrichtung
- Phase 2 — Planen
- Phase 3 — Freigabe und Pilot
- Phase 4 — Durchführung
- Phase 5 — Auswertung
- Phase 6 — Compliance
- Phase 7 — Erweiterte Themen
- Phase 8 — Anhang
Phase 1 — Einrichtung
1.1 Artikelstammdaten pflegen
Letzte Aktualisierung: 2026-05-28
DRE läuft headless. Die Plattform vergleicht Artikel-Identifier (articleNumber, EAN, articleGroup_ID) als Zeichenketten. Eine Condition wie articleNumber = "BBQ-GRILL-001" greift auch ohne Master Data — das Kassensystem schickt die ID im Basket-Payload, die Plattform prüft die Bedingung. Ein unbekannter Artikel im Warenkorb ist kein Fehler.
Master Data brauchen Sie für:
- Werte-Hilfe im UI — beim Anlegen einer Promotion wählen Sie Artikel und Artikelgruppen aus einer Liste statt sie manuell einzutippen.
- Artikel-zu-Gruppe-Zuordnung — wenn eine Condition "Artikel aus Gruppe Weine" prüft, braucht die Plattform die Gruppen-Zuordnung. Headless können Sie diese auch direkt im Basket-Item-Payload vom Kassensystem mitliefern.
- Auswertungen — Reports zeigen Artikel-Namen statt nur die Artikelnummer.
- Lokale Filial-Instanz — wenn Sie offline mit lokaler DRE-Instanz arbeiten, brauchen Sie die Stammdaten am Standort verfügbar.
Dieses Kapitel erklärt, wie Sie Artikel einzeln anlegen, per CSV-Import hochladen und das Importergebnis prüfen.
Beispiel: Sie wollen 500 BBQ-Artikel aus Ihrem Sortiment importieren, um eine Grillsaison-Kampagne zu starten. Der schnellste Weg ist der CSV-Import.
Einzelnen Artikel anlegen
Was Sie brauchen: Zugriffsrecht "Stammdaten-Manager" im System.
- Öffnen Sie Stammdaten → Artikel über das Launchpad.
- Klicken Sie auf Anlegen.
- Füllen Sie die erforderlichen Felder aus:
- Artikelnummer — eindeutige Kennung (z. B. "BBQ-GRILL-001"). Muss systemweit einmalig sein. Erforderlich — Sie können die Artikel-Form nicht speichern, wenn dieses Feld leer ist.
- Name — lesbarer Artikelname (z. B. "Holzkohle-Grill Premium 60cm"). Erforderlich — Sie können die Artikel-Form nicht speichern, wenn dieses Feld leer ist.
- Optionale Felder:
- EAN — europäische Artikelnummer, genau 13 Ziffern (EAN-13) mit GS1-Prüfziffer-Validierung. 8-stellige EAN-8-Codes oder ungültige Prüfziffern werden abgelehnt.
- Kategorie — freier Kategorie-Text (z. B. "BBQ-ARTIKEL") zur Klassifizierung des Artikels für Auswertungen. Die Zuordnung zu Artikelgruppen erfolgt in der separaten Sektion Artikelgruppen auf der Artikel-Detailseite.
- Hersteller — Herstellername für Hersteller-basierte Promotionsbedingungen.
- Klicken Sie auf Speichern. Wenn Sie ein erforderliches Feld leer lassen, zeigt das System eine Fehlermeldung.
Artikel per CSV-Datei importieren
Der Massen-Import eignet sich, wenn Sie viele Artikel auf einmal anlegen oder aktualisieren möchten — zum Beispiel 500 BBQ-Artikel nach einem Sortimentswechsel.
Was Sie brauchen: Die korrekte CSV-Vorlage. Diese können Sie direkt aus dem Import-Dialog herunterladen.
- Öffnen Sie Stammdaten → Artikel.
- Klicken Sie auf Importieren.
- Klicken Sie im Dialog auf Beispielvorlage herunterladen um die aktuelle Vorlage zu erhalten.
- Füllen Sie die Vorlage mit Ihren Artikeln aus. Beachten Sie die Spaltenüberschriften — jede Spalte hat einen Hilfetext in der Vorlage. Die unterstützten Spalten sind
articleNumber,name,ean,manufacturerundcategory. - Speichern Sie die CSV-Datei und laden Sie sie im Dialog hoch.
- Klicken Sie auf Hochladen.
Der Importer akzeptiert CSV oder JSON. Optional geben Sie einen Idempotenzschlüssel an — der Schlüssel wird zur Nachverfolgung protokolliert. Ein erneuter Import desselben Artikels schlägt am Duplikat-Konflikt (Artikelnummer bereits vorhanden) fehl.
Wichtig: Laden Sie immer die aktuellste CSV-Vorlage aus dem System herunter. Ältere Vorlagen können Felder enthalten, die nicht mehr aktuell sind — das führt zu Import-Fehlern.
Importregeln:
- Es gibt keine feste Obergrenze für die Anzahl der Artikel pro Import-Vorgang.
- Der Import verarbeitet die Zeilen nacheinander und ist an das geöffnete Browser-Fenster gebunden. Teilen Sie sehr große Importe in mehrere kleinere Dateien auf.
- Wenn eine Artikelnummer bereits im System existiert, wird die Zeile als Konflikt in der Fehlerliste gemeldet (HTTP 409 "Article with articleNumber … already exists"). Sie können vorhandene Artikel nicht per Importer aktualisieren.
- Jeder Artikel braucht eine Artikelnummer und einen Namen. Zeilen ohne diese Felder werden zurückgewiesen.
- Ungültige EANs werden zurückgewiesen (Fehlermeldung in der Ergebnisliste).
Importergebnis prüfen
Der CSV-Import verarbeitet die Zeilen direkt in Ihrem Browser. Während der Verarbeitung sehen Sie eine kurze Statusmeldung ("Importing N article(s)..."). Sobald die letzte Zeile verarbeitet ist, zeigt das DRE ein Ergebnis-Dialogfenster. Dieses Fenster fasst zusammen, wie viele Artikel angelegt oder aktualisiert wurden und welche Zeilen fehlgeschlagen sind.
Der Dialog erscheint in einer von drei Varianten:
| Variante | Wann | Inhalt |
|---|---|---|
| Erfolg | Alle Zeilen wurden importiert | "Imported N of N article(s)." |
| Warnung | Einige Zeilen wurden importiert, andere sind fehlgeschlagen | "Imported N of M article(s)." plus eine Liste der fehlgeschlagenen Zeilen mit Zeilennummer und Grund |
| Fehler | Keine Zeile wurde importiert | "Imported 0 of M article(s)." plus die Fehlerliste |
Bei mehr als 20 fehlgeschlagenen Zeilen zeigt der Dialog die ersten 20 Gründe und vermerkt die Anzahl der übrigen Fehler.
Schließen Sie das Ergebnis-Dialogfenster mit OK. Die erfolgreich importierten Artikel erscheinen sofort in der Artikelliste — Sie müssen die Seite nicht neu laden.
Wenn Sie die App während des Imports schließen, bricht die Verarbeitung ab. Lassen Sie das Browser-Fenster geöffnet, bis das Ergebnis-Dialogfenster erscheint. Bei sehr großen Importen importieren Sie besser in mehreren kleineren Aufträgen.
Artikel über Ihr ERP-System synchronisieren
Wenn Ihr Unternehmen SAP S/4HANA einsetzt, kann die IT-Abteilung eine automatische Artikelsynchronisation einrichten. Dabei werden Artikelstammdaten direkt aus S/4HANA in das DRE repliziert — ohne manuelle CSV-Importe.
Für diese Einrichtung wenden Sie sich an Ihre IT-Abteilung. Die technische Anleitung zur DRFOUT-Integration finden Sie im Integrator Guide.
Häufige Fragen zu Artikelstammdaten
Warum wird meine EAN abgelehnt? EAN muss genau 13 Ziffern (EAN-13) sein und die GS1-Prüfziffer bestehen. 8-stellige EAN-8-Codes oder ungültige Prüfziffern werden abgelehnt. Sie müssen die Nummer korrekt aufgebaut haben, bevor Sie sie importieren.
Kann ich einen Artikel löschen? Ja, Sie können einen Artikel jederzeit löschen. Die Engine gleicht Promotionsbedingungen über die Artikelnummer beziehungsweise die EAN als Zeichenkette ab — nicht über eine Verknüpfung zum Stammdatensatz. Wenn Sie einen Stammdaten-Artikel löschen, bleiben die Bedingungen, die auf seine Nummer verweisen, bestehen und greifen weiterhin auf passende Warenkörbe. Pflegen Sie betroffene Bedingungen daher separat, wenn ein Artikel dauerhaft entfällt.
Einige Zeilen meines Imports sind fehlgeschlagen — was nun? Das Ergebnis-Dialogfenster listet jede fehlgeschlagene Zeile mit Zeilennummer und Grund. Korrigieren Sie die betroffenen Artikel in der CSV-Datei. Starten Sie anschließend einen neuen Import mit nur den korrigierten Zeilen — die bereits erfolgreich importierten Artikel müssen Sie nicht erneut hochladen.
1.2 POS-Gruppen, Prioritätsgruppen und Ausschlussgruppen
Letzte Aktualisierung: 2026-05-28
Bevor Sie Promotions anlegen, legen Sie fest, welche Kassenterminals welche Aktionen sehen dürfen. DRE nutzt drei Gruppen-Konzepte: POS-Gruppen (Filialen / Terminalsets), Prioritätsgruppen (Rangfolge bei Konflikten) und Ausschlussgruppen (wechselseitige Blockierung).
POS-Gruppen: Filialen zusammenfassen
Eine POS-Gruppe fasst Kassenterminals zu einem logischen Set zusammen. Promotions können auf bestimmte POS-Gruppen eingeschränkt werden.
Beispiel: Während des Oktoberfests sollen Sonderpreise nur in den "Filialen Süd" (München, Augsburg, Nürnberg) gelten — nicht bundesweit.
Neue POS-Gruppe anlegen:
- Öffnen Sie Stammdaten → POS-Gruppen über das Launchpad.
- Klicken Sie auf Anlegen.
- Geben Sie einen Code (erforderlich), einen Namen (z. B. "Filialen Süd") und eine optionale Beschreibung ein.
- Klicken Sie auf Speichern.
Eine POS-Gruppe enthält selbst keine Liste von Terminal-IDs. Die Verknüpfung zwischen Terminals und einer Gruppe entsteht erst, wenn Sie eine Promotion auf die Gruppe einschränken. Auf der Promotion-Objektseite fügen Sie im Abschnitt POS-Gruppen je eine Zeile pro Gruppe hinzu (Wertehilfe pro Zeile). Ohne Einschränkung gilt die Promotion für alle Terminals.
Prioritätsgruppen: Rangfolge bei mehreren Promotions
Wenn mehrere Promotions gleichzeitig auf einen Warenkorb zutreffen, entscheidet die Priorität (Zahl: je höher, desto höher die Priorität), welche Promotion zuerst bewertet wird. Promotions mit der gleichen Priorität werden als gleichrangig behandelt. Promotions ohne Prioritätsgruppe erhalten den Default-Wert 0.
Praktische Regel:
- Setzen Sie wichtige Dauer-Promotions auf Priorität 30 (höchste Priorität, kommen zuerst).
- Saisonale Aktionen auf Priorität 20.
- Flash-Sales und Clearance auf Priorität 10 (geringste Priorität, kommen zuletzt).
Es gibt kein Prioritätsfeld auf dem Anlegen/Bearbeiten-Formular einer Promotion. Die Priorität legen Sie fest, indem Sie die Promotion einer Prioritätsgruppe zuordnen — die Gruppe trägt den ganzzahligen Prioritätswert. Diese Zuordnung pflegen Sie in der Prioritätsgruppen-App: Öffnen Sie die Objektseite einer Prioritätsgruppe und fügen Sie die Promotions im Abschnitt der verknüpften Promotions inline hinzu.
Ausschlussgruppen: Promotions gegenseitig sperren
Mit Ausschlussgruppen (MutualExclusionGroups) legen Sie fest, dass von mehreren Promotions innerhalb einer Gruppe immer nur die beste greift — unabhängig von der Exklusivitätsstufe.
Beispiel: Zwei Bier-Aktionen ("Wochenende 20% auf Bier" und "Treue-Rabatt 3€ auf Bier") sollen sich gegenseitig ausschließen, aber eine kassenbon-weite 2%-Aktion soll trotzdem zusätzlich gelten. Legen Sie die beiden Bier-Aktionen in die Ausschlussgruppe "Bier-Promos".
Ausschlussgruppe zuweisen:
- Öffnen Sie die Promotion im Bearbeiten-Modus.
- Öffnen Sie den Abschnitt Ausschlüsse.
- Klicken Sie auf Anlegen in der Tabelle und wählen Sie über die Wertehilfe im Feld Ausschlussgruppe die gewünschte Gruppe.
- Klicken Sie auf Speichern.
Innerhalb einer Ausschlussgruppe gewinnt standardmäßig die Promotion mit dem höchsten Discount-Betrag für den konkreten Warenkorb (resolutionStrategy: HIGHEST_DISCOUNT). Alternativ können Sie pro Gruppe die Strategie LOWEST_DISCOUNT setzen, dann gewinnt die Promotion mit dem geringsten Discount. Die anderen werden mit dem Hinweis "Blocked by mutual exclusion group" zurückgewiesen.
Hinweis: Ausschlussgruppen und Exklusivitätsstufe (siehe Abschnitt 2.1 Promotion Authoring) können kombiniert werden. Ausschlussgruppen wirken innerhalb der Gruppe; Exklusivitätsstufen wirken darüber hinaus.
1.3 Stakeholder-Management und Budget-Finanzierung
Letzte Aktualisierung: 2026-05-28
Budgets in DRE können von einem oder mehreren Stakeholdern finanziert werden — zum Beispiel von der eigenen Marketingabteilung, einem Markenpartner oder einem externen Lieferanten, der Werbekostenzuschüsse (WKZ) beisteuert. Dieses Kapitel erklärt, wie Sie Stakeholder anlegen, mit Budgets verknüpfen und den Verbrauch nachvollziehen.
Wann brauche ich Stakeholder?
- Sie möchten festhalten, wer ein Promotion-Budget finanziert.
- Ein externer Lieferant zahlt Werbekostenzuschüsse und Sie möchten die Ausgaben klar dem Lieferanten zuordnen.
- Sie möchten monatliche Verbrauchsberichte pro Geldgeber erstellen.
Beispiel: Coca-Cola stellt 50.000 € WKZ für die Sommer-Getränkekampagne bereit. Sie legen Coca-Cola als Stakeholder vom Typ EXTERNAL_SUPPLIER an und verknüpfen ihn mit dem Budget der Kampagne.
Stakeholder-Typen
DRE unterscheidet vier Stakeholder-Typen:
| Typ | Beschreibung | Beispiel |
|---|---|---|
| INTERNAL | Interne Abteilung des eigenen Unternehmens | Marketingabteilung, Einkauf |
| BRAND | Markenpartner (gibt Mittel für markenbezogene Aktionen) | Coca-Cola, Nike |
| SUPPLIER | Interner Lieferant | Zentrallager, eigener Großhandel |
| EXTERNAL_SUPPLIER | Externer Lieferant mit WKZ-Vereinbarung | Weinlieferant mit 5 % Werbekostenzuschuss |
Der Typ EXTERNAL_SUPPLIER ist speziell für WKZ-Workflows (Werbekostenzuschüsse). Er erlaubt Ihnen, Budgetanteile klar einem externen Partner zuzuordnen und die Erstattungsansprüche nachzuverfolgen.
Neuen Stakeholder anlegen
- Öffnen Sie die Stakeholder-App über das Launchpad.
- Klicken Sie auf Anlegen.
- Füllen Sie die Felder aus:
- Name — eindeutiger Bezeichner (z. B. "WKZ Coca-Cola GmbH").
- Typ — wählen Sie den passenden Typ aus der Liste.
- Kontakt-E-Mail (optional) — primäre Kontaktadresse des Stakeholders (z. B. für WKZ-Abstimmung).
- Klicken Sie auf Speichern.
Budget mit Stakeholder verknüpfen
Ein Budget kann mit einem oder mehreren Stakeholdern verknüpft werden. Jeder Stakeholder erhält einen Anteil am Gesamtbudget.
- Öffnen Sie die Budgets-App und wählen Sie ein vorhandenes Budget oder legen Sie ein neues an.
- Scrollen Sie zur Sektion Beteiligte.
- Klicken Sie auf Hinzufügen.
- Wählen Sie den Stakeholder aus der Liste.
- Geben Sie den Anteil in Prozent ein (0–100).
- Klicken Sie auf Speichern.
Verbrauchshistorie einsehen
Auf der Budget-Detailseite gibt es die Registerkarte Verbrauchshistorie. Dort sehen Sie, wann und durch welche Promotion-Transaktionen das Budget verbraucht wurde.
- Öffnen Sie ein Budget in der Budgets-App.
- Klicken Sie auf die Registerkarte Verbrauchshistorie.
- Die Tabelle zeigt Datum, Transaktion, Promotion und den verbrauchten Betrag.
Hinweis: Die Verbrauchshistorie zeigt nur bestätigte Transaktionen — Kassierungen, die über den POS-Kassenvorgang bestätigt wurden. Simulationen und nicht abgeschlossene Vorgänge erscheinen nicht.
Budgetauslastung und Brenngeschwindigkeit
Wenn ein Budget aktiv ist und Transaktionen bestätigt wurden, zeigt die Budget-Detailseite die aktuelle Auslastung (%). Brenngeschwindigkeit und eine Prognose für das Enddatum finden Sie im separaten Report Budgetauslastung unter Berichte & Analytik.
Wichtig — angeschlossene Budgets. Ein Budget im Status SCHEDULED (freigegeben, aber noch nicht gestartet) — oder im Status DRAFT/Entwurf für ein noch nicht freigegebenes Budget — zeigt keine Brenngeschwindigkeit und kein prognostiziertes Enddatum. Der Grund: Das Budget hat noch nicht angefangen, Transaktionen zu verbrauchen — die Verstrichene-Zeit ist 0. Sobald das Budgets validFrom-Datum erreicht ist und die ersten Transaktionen eintreffen, berechnet das DRE die Metriken und aktualisiert die Prognose.
Diese Metriken helfen Ihnen, rechtzeitig zu erkennen, wenn ein Budget schneller aufgebraucht wird als erwartet, und gegeben falls korrigierend einzugreifen.
Berichte zu Kosten je Beteiligtem
Für eine aggregierte Auswertung nach Stakeholder und Zeitraum steht das Dashboard Kosten je Beteiligtem zur Verfügung:
- Öffnen Sie über das Launchpad Berichte & Analytik → Kosten je Beteiligtem.
- Wählen Sie den gewünschten Zeitraum über ein Von/Bis-Datumsbereich.
- Das Dashboard zeigt:
- Anteil je Stakeholder — Tortendiagramm (prozentualer Anteil am Gesamtverbrauch).
- Entwicklung über Zeit — Liniendiagramm nach Perioden.
- Top-Promotions je Stakeholder — die 10 Aktionen mit dem höchsten Budgetverbrauch.
Häufige Fragen zu Stakeholdern
Was ist der Unterschied zwischen SUPPLIER und EXTERNAL_SUPPLIER?
SUPPLIER ist ein externer Produktlieferant (z. B. ein Großhändler oder Distributor). EXTERNAL_SUPPLIER ist ein externer Partner mit einer WKZ-Vereinbarung — verwenden Sie diesen Typ, wenn Sie Erstattungsansprüche gegenüber einem Drittanbieter nachverfolgen möchten.
Kann ich einen Stakeholder löschen? Ja, Sie können einen Stakeholder löschen, auch wenn er mit Budgets verknüpft ist. Das System zeigt vor dem Löschen einen Warnhinweis, dass dabei auch die zugehörigen Datensätze entfernt werden. Bestätigen Sie das Löschen, werden der Stakeholder sowie seine Budgetzuordnungen und Nachfinanzierungsbeiträge mit entfernt.
Warum ist die Verbrauchshistorie-Registerkarte leer? Entweder gibt es noch keine bestätigten Transaktionen für dieses Budget, oder die Transaktionen sind noch in der Verarbeitung. Prüfen Sie den Bereich Ausstehende Transaktionen auf der Budget-Seite.
1.4 Benachrichtigungsprotokoll und Budgetalerts
Das Benachrichtigungsprotokoll ist ein Audit-Log, das jede Benachrichtigung aufzeichnet, die das System versucht hat, zu versenden. Wenn ein Budget einen Konsumierungsschwellenwert erreicht, sendet das DRE einen Alert über registrierte Kanäle; jeder Versuch (Erfolg oder Fehler) wird hier protokolliert.
Wann brauchen Sie das? Wenn Sie prüfen möchten, ob Budget-Alerts tatsächlich versendet wurden, oder wenn Sie fehlgeschlagene Zustellungen diagnostizieren.
Zugriff auf das Benachrichtigungsprotokoll
- Öffnen Sie den Launchpad.
- Gehen Sie zur Gruppe Verwaltung (Administration).
- Klicken Sie auf die Kachel Benachrichtigungsprotokoll (Bell-Icon, Untertitel "Budget-Schwellenwert-Benachrichtigungen und Zustellungsstatus").
Daraufhin öffnet sich eine List Report mit allen Benachrichtigungen; klicken Sie auf eine Zeile, um die Details zu sehen.
Was das Benachrichtigungsprotokoll zeigt
| Spalte | Bedeutung |
|---|---|
| Budget-Name | Name des Budgets, das den Schwellenwert erreicht hat. |
| Schwellenwert (%) | Der konfigurierte Auslösungsprozentsatz (z. B. 80 %). |
| Verbraucht (%) | Der Konsumierungsprozentsatz im Moment der Benachrichtigung. |
| Kanal | E-Mail, Webhook oder anderer Versandkanal. |
| Empfänger | E-Mail-Adresse oder Webhook-Ziel. |
| Status | SENT (erfolgreich), FAILED (Fehler), RATE_LIMITED (zu häufig), DISABLED (deaktiviert). |
| Gesendet am | Zeitstempel der Benachrichtigung (UTC). |
| Fehler | Bei Status FAILED oder RATE_LIMITED: Fehlermeldung oder Grund. |
Status-Bedeutungen
- SENT — Mindestens ein Kanal hat die Benachrichtigung zugestellt.
- FAILED — Ein Zustellungsfehler ist aufgetreten (z. B. ungültige E-Mail).
- RATE_LIMITED — Die Benachrichtigung wurde unterdrückt, da für dieses Budget + Schwellenwert + Kanal bereits eine Benachrichtigung im letzten Stundenfenster versendet wurde.
- DISABLED — Benachrichtigungen sind global oder für diesen Mandanten deaktiviert.
Wichtige Hinweise
- Das Protokoll ist schreibgeschützt — Sie können Einträge nicht bearbeiten oder löschen.
- Webhook-bezogene Einträge: Neben Budget-Alerts können auch fehlgeschlagene Webhook-Wiederholung und Genehmigungsanfragen hier protokolliert werden.
- Filtern: Sie können nach Status, Kanal und Budget-Name filtern.
Phase 2 — Planen
2.1 Promotion Authoring
Das DRE unterstützt verschiedene Promotionstypen, die Sie über die Fiori-Benutzeroberfläche anlegen. Dieser Abschnitt erklärt die wichtigsten Muster — BOGO, Bundle, und wie Exklusivität in der Praxis funktioniert.
Authoring BOGO-Promotions (Buy-N-Get-M-Free)
Eine "Kauf N, bekomme M gratis"-Promotion lässt den Warenkorb N+M qualifizierte Artikel enthalten, berechnet aber nur N davon — die M günstigsten (oder teuersten, oder zufälligen) Artikel erhalten 100 % Rabatt (bis zu ihrem Linienwert).
Der Rabatt ist auf den Wert der freien Einheiten begrenzt. Wenn die M ausgewählten Artikel weniger kosten als der volle Betrag ihrer Zeile, wird nur dieser kleinere Betrag rabattiert — der Gesamtrabatt kann niemals die volle Zeilensumme übersteigen.
Beispiel: "5 Premium-Zigarren à 28 EUR pro Stück kaufen, 2 gratis bekommen."
- Korbinhalt: 5 Zigarren × 28 EUR = 140 EUR.
- Bedingung erfüllt (≥ 5 Zigarren).
- 2 günstigste Zigarren werden ausgewählt (beide à 28 EUR).
- Rabatt = 2 × 28 EUR = 56 EUR (nicht 140 EUR).
- Endbetrag: 140 − 56 = 84 EUR.
Weiteres Beispiel: "3 Bier-6-Packs kaufen, 1 gratis bekommen."
| Feld | Wert | Warum |
|---|---|---|
| Aktionstyp | ARTICLE_GROUP | Rabatt trifft eine Gruppe von Artikeln |
| Rabattart | PERCENTAGE | Gratis = 100 % Rabatt |
| Rabattwert | 100.00 | Vollrabatt auf die ausgewählten Artikel |
| Auswahltyp | CHEAPEST | M günstigste Artikel in der Gruppe |
| Anwendungsmengenmodus | LIMITED | Rabatt auf eine feste Anzahl begrenzen |
| Anwendungsmenge | 1 | Anzahl der gratis Artikel (das "M") |
| Bedingung | ARTICLE_GROUP = "BIER-6-PACK", minQuantity = 4 | Mindestens 4 Bier-6-Packs im Warenkorb |
Pflichtfeld: Wenn Sie
CHEAPEST/MOST_EXPENSIVE/RANDOMals Auswahltyp undLIMITEDals Mengenmodus setzen, muss Anwendungsmenge ausgefüllt sein. Das System weist den Speichervorgang sonst ab, um fehlerhafte Vollabrechnungen zu verhindern.
Verhalten:
- 3 Bier-6-Packs im Warenkorb → Bedingung nicht erfüllt (minQuantity=4); kein Rabatt.
- 4 Bier-6-Packs → 1 günstigstes Bier-6-Pack erhält 100 % Rabatt; 3 zum Normalpreis.
Im Simulator prüfen:
- Öffnen Sie Werkzeuge > Simulator im Fiori Launchpad.
- Fügen Sie 4 Zeilen mit dem Bier-6-Pack-Artikel hinzu (unterschiedliche Preise, um die "günstigste"-Logik zu sehen).
- Klicken Sie auf Simulieren. Die Ergebnisanzeige zeigt eine Zeile mit 100 % Rabatt, die anderen drei zum Normalpreis.
Authoring Bundle-Promotions
Eine Bundle-Promotion erfordert mehrere Komponenten in festen Mindestmengen und gewährt einen Pauschalrabatt, wenn alle Komponenten im Warenkorb vorhanden sind.
Beispiel: "2 Bier-6-Packs + 1 Grill-Paket = 10 € Rabatt."
| Feld | Wert |
|---|---|
| Aktionstyp | BUNDLE |
| Rabattart | ABSOLUTE |
| Rabattwert | 10.00 |
| Max. Bundles | 1 (optional; leer = unbegrenzt) |
Fügen Sie für jede Pflichtkomponente eine Zeile in der Bundle-Komponenten-Untertabelle hinzu:
| Artikelnummer | Mindestmenge | Maximalmenge |
|---|---|---|
BIER-6-PACK | 2 | leer |
GRILL-PAKET | 1 | leer |
Pflichtfeld: Wenn Sie
BUNDLEals Aktionstyp wählen, muss mindestens eine Bundle-Komponente vorhanden sein. Ohne Komponenten weist das System den Speichervorgang ab.
Authoring Tiered-Bundle-Promotions (Mengenstaffel-Preise)
Eine Tiered-Bundle-Promotion (Mengenstaffel-Preise) gibt einem Ziel einen Mengenrabatt. Das Ziel ist wahlweise ein einzelner Artikel oder eine ganze Artikelgruppe. Je mehr Stück des Ziels im Warenkorb liegen, desto günstiger wird der Stückpreis. Der erreichte Staffelpreis gilt für alle Stück, jedes zu seinem eigenen Preis rabattiert.
Das ist kein Marginalrabatt. Erreicht der Warenkorb eine Staffel, wird der Staffelpreis auf jedes Stück angewendet — nicht nur auf die Stück oberhalb der Mengenschwelle.
Ziel ist ein Artikel ODER eine Artikelgruppe — nie beides. Sie wählen genau eines: entweder eine Ziel-Artikelnummer (ein dedizierter Artikelcode) oder eine Ziel-Artikelgruppe. Setzen Sie beides oder keines, weist das DRE die Aktivierung ab.
- Einzelner Artikel: Die Staffel zählt die Stück eines dedizierten Artikelcodes zusammen.
- Artikelgruppe: Die Staffel zählt unterschiedliche Artikel derselben Gruppe gemeinsam (siehe Auf eine Artikelgruppe staffeln).
Der Begriff "Bundle" meint hier die gestaffelte Menge — nicht eine feste Kombination verschiedener Artikel. Für eine feste Kombination unterschiedlicher Artikel verwenden Sie stattdessen den Aktionstyp
BUNDLE(siehe oben).
Die Menge wird über den gesamten Warenkorb zusammengezählt. Liegt der Artikel in mehreren Zeilen vor (z. B. zwei getrennt erfasste Posten), addiert das DRE diese Mengen, bevor es die Staffel auswählt.
Beispiel: "Kiste Mineralwasser — Staffelpreis ab 6 Flaschen."
Anna legt eine Promotion an, die den Flaschenpreis je nach Abnahmemenge senkt: ab 6 Flaschen 1,00 € pro Flasche, ab 12 Flaschen 0,80 € pro Flasche.
So konfigurieren Sie die Staffel
- Öffnen Sie die Promotion im Bearbeiten-Modus (über die Promotionen-App im Launchpad).
- Legen Sie im Abschnitt Rabattaktionen eine Rabattaktion an und setzen Sie:
| Feld | Wert | Warum |
|---|---|---|
| Aktionstyp | QUANTITY_TIER | Mengenstaffel-Preise für einen Artikel |
| Ziel-Artikelnummer | WASSER-05L | Der eine dedizierte Artikelcode, der gestaffelt wird |
| Rabattwert | (leer) | Die Preise stehen in den Staffeln, nicht auf der Aktion |
- Pflegen Sie in der Mengenstaffel-Untertabelle eine Zeile je Stufe. Jede Stufe besteht aus einer Mindestmenge und einem Rabattart mit Rabattwert:
| Mindestmenge | Rabattart | Rabattwert | Bedeutung |
|---|---|---|---|
6 | Stückpreis | 1.00 | Ab 6 Flaschen kostet jede Flasche 1,00 € |
12 | Stückpreis | 0.80 | Ab 12 Flaschen kostet jede Flasche 0,80 € |
Hinweis zur Oberfläche: Die Mengenstaffel-Untertabelle erscheint, sobald Sie
QUANTITY_TIERals Aktionstyp wählen.
Die drei Staffel-Typen
Jede Staffel verwendet einen Rabattart. Es gibt drei:
| Rabattart | Beschriftung | Bedeutung | Beispiel |
|---|---|---|---|
UNIT_PRICE | Stückpreis | Setzt den Stückpreis direkt — der Wert ist der neue Stückpreis. | Staffelwert 26,00 → jedes Stück kostet 26,00 € (z. B. Kistenpreis je Flasche). |
PERCENTAGE | Prozentual | Prozent Rabatt je Stück. | Staffelwert 15 → 15 % Rabatt auf jedes Stück. |
ABSOLUTE | Absolut | Betrag pro Stück — Abzug je Stück, nicht je Zeile. | Staffelwert 3,00 auf 4 Stück → 12,00 € Abzug (4 × 3,00), nicht 3,00 €. |
Wichtig —
Absolutist „Betrag pro Stück", nicht „Betrag pro Zeile". Eine Staffel mitABSOLUTEund Wert3,00zieht pro Stück 3,00 € ab. Bei 4 Stück sind das 12,00 € Abzug, nicht 3,00 €. Wenn Sie einen festen Betrag auf die gesamte Zeile abziehen möchten, istQUANTITY_TIERder falsche Aktionstyp — verwenden Sie dafür eine reguläre Rabattaktion.
Unterhalb der niedrigsten Staffel — voller Preis, kein Rabatt
Liegt die zusammengezählte Menge unter der Mindestmenge der niedrigsten Staffel, zahlt der Kunde den vollen Preis ohne Rabatt.
Das unterscheidet sich von gestaffelten Kassenbon-Rabatten (SCALED_RECEIPT): dort gibt es einen Basisrabatt, der unterhalb der ersten Stufe greift. Bei der Mengenstaffel gibt es keinen Basisrabatt.
Damit jede Menge einen Preis bekommt: Legen Sie eine Staffel mit Mindestmenge
1an. Ohne diese Staffel zahlen kleine Mengen den vollen Normalpreis.
Beispiel (die häufigste Fehlkonfiguration): Sie pflegen nur zwei Staffeln — 3 → 30,00 € und 4 → 26,00 € (jeweils Stückpreis).
- 1 oder 2 Stück → voller Normalpreis (keine Staffel erreicht, kein Rabatt).
- 3 Stück → jedes Stück 30,00 €.
- 4 oder mehr Stück → jedes Stück 26,00 €.
Wenn auch 1 und 2 Stück einen Preis bekommen sollen, fügen Sie eine Staffel mit Mindestmenge 1 hinzu.
Obergrenze — die höchste Staffel gilt nach oben unbegrenzt
Erreicht oder überschreitet die Menge die höchste Mindestmenge, gilt die höchste Staffel für alle Stück. Mehr Stück senken den Rabatt nie wieder. Im Beispiel oben kostet bei 4, 10 oder 50 Stück jede Flasche 26,00 €.
Durchgerechnetes Beispiel
Warenkorb: 12 Flaschen WASSER-05L, Normalpreis 1,20 € pro Flasche.
- Zusammengezählte Menge = 12.
- Höchste erreichte Staffel =
12 → 0,80 €(Stückpreis). - Endpreis: 12 × 0,80 € = 9,60 € (statt 12 × 1,20 € = 14,40 €).
- Ersparnis: 4,80 €.
Bei 8 Flaschen greift die Staffel 6 → 1,00 €: 8 × 1,00 € = 8,00 € (statt 9,60 €). Bei 4 Flaschen ist keine Staffel erreicht — der Kunde zahlt 4 × 1,20 € = 4,80 € ohne Rabatt.
Regeln beim Speichern
- Sie geben genau ein Ziel an: entweder eine Ziel-Artikelnummer oder eine Ziel-Artikelgruppe. Setzen Sie beides oder keines, weist das DRE die Aktivierung ab.
- Es muss mindestens eine Staffel vorhanden sein.
- Die Mindestmengen müssen ganzzahlig, mindestens
1und über alle Staffeln streng aufsteigend und eindeutig sein. Zwei Staffeln mit derselben Mindestmenge weist das DRE ab. - Der Rabattwert jeder Staffel muss größer als
0sein; beiProzentualhöchstens100. - Zielt die Staffel auf eine Artikelgruppe, muss jede Staffel den Rabattart
Prozentualverwenden.StückpreisundAbsolutsind nur für einen einzelnen Artikel zulässig.
Im Simulator prüfen
- Öffnen Sie Werkzeuge > Simulator im Fiori Launchpad.
- Fügen Sie eine Zeile mit dem dedizierten Artikel hinzu und setzen Sie die Menge auf 12.
- Klicken Sie auf Simulieren. Die Ergebnisanzeige zeigt den Staffelpreis auf allen 12 Stück.
- Senken Sie die Menge auf 4 (unter die niedrigste Staffel) und simulieren Sie erneut — die Zeile bleibt zum Normalpreis, ohne Rabatt.
Auf eine Artikelgruppe staffeln
Statt eines einzelnen Artikels staffeln Sie eine ganze Artikelgruppe. Der Unterschied: Bei einer Gruppe zählen unterschiedliche Artikel derselben Gruppe gemeinsam zur Menge. So erreicht ein Kunde die Staffel auch dann, wenn er verschiedene Artikel der Gruppe mischt.
Jedes Stück wird zu seinem eigenen Preis rabattiert. Die Staffel bestimmt nur den Prozentsatz; sie setzt keinen gemeinsamen Preis über verschiedene Artikel hinweg. Deshalb arbeiten Gruppenstaffeln ausschließlich mit dem Rabattart Prozentual — ein fester Stückpreis oder ein fester Betrag wäre über unterschiedliche Artikel nicht sinnvoll.
Beispiel: "Zigarren-Aktion — Staffelrabatt über das ganze Sortiment."
Anna möchte den Zigarrenabsatz fördern, unabhängig von der einzelnen Sorte. Sie legt eine Promotion an, die einen Mengenrabatt auf die Artikelgruppe ZIGARREN gibt: ab 3 Stück 10 % auf jedes Stück, ab 5 Stück 15 % auf jedes Stück.
So konfigurieren Sie die Gruppenstaffel
- Öffnen Sie die Promotion im Bearbeiten-Modus (über die Promotionen-App im Launchpad).
- Legen Sie im Abschnitt Rabattaktionen eine Rabattaktion an und setzen Sie:
| Feld | Wert | Warum |
|---|---|---|
| Aktionstyp | QUANTITY_TIER | Mengenstaffel-Preise |
| Ziel-Artikelgruppe | ZIGARREN | Die Gruppe, deren Artikel gemeinsam zählen — lassen Sie die Ziel-Artikelnummer dafür leer |
| Untergruppen einbeziehen | (aus) | Standard: nur Artikel, die direkt der Gruppe ZIGARREN zugeordnet sind, zählen |
| Rabattwert | (leer) | Die Prozentsätze stehen in den Staffeln, nicht auf der Aktion |
- Pflegen Sie in der Mengenstaffel-Untertabelle eine Zeile je Stufe. Bei einer Gruppe ist der Rabattart immer
Prozentual:
| Mindestmenge | Rabattart | Rabattwert | Bedeutung |
|---|---|---|---|
3 | Prozentual | 10 | Ab 3 Zigarren (Sorten gemischt) 10 % auf jedes Stück |
5 | Prozentual | 15 | Ab 5 Zigarren (Sorten gemischt) 15 % auf jedes Stück |
Untergruppen einbeziehen. Standardmäßig ist die Option aus: Nur Artikel, die der Gruppe direkt zugeordnet sind, zählen zur Staffel. Schalten Sie die Option ein, zählen zusätzlich die Artikel aller Untergruppen der Zielgruppe mit. Beispiel: Hat
ZIGARRENdie UntergruppenZIGARREN-MILDundZIGARREN-KRÄFTIG, zählen deren Artikel nur bei eingeschalteter Option ebenfalls zur Menge.
Hinweis zur Oberfläche: Die Felder Ziel-Artikelgruppe und Untergruppen einbeziehen erscheinen, sobald Sie
QUANTITY_TIERals Aktionstyp wählen.
Durchgerechnetes Beispiel (gemischte Sorten)
Warenkorb: 2 × ZIGARRE-KIRSCH zu 4,00 € und 3 × ZIGARRE-LIMETTE zu 5,00 €. Beide Artikel sind der Gruppe ZIGARREN zugeordnet.
- Zusammengezählte Menge in der Gruppe = 2 + 3 = 5 Stück.
- Höchste erreichte Staffel =
5 → 15 %. - Kirsch-Zigarren: 2 × 4,00 € − 15 % = 2 × 3,40 € = 6,80 €.
- Limetten-Zigarren: 3 × 5,00 € − 15 % = 3 × 4,25 € = 12,75 €.
- Endpreis: 19,55 € (statt 23,00 €), Ersparnis 3,45 €.
Jede Sorte behält ihren eigenen Preis; gemeinsam ist nur der Prozentsatz, den die zusammengezählte Gruppenmenge auswählt.
Im Simulator prüfen (Gruppe)
- Öffnen Sie Werkzeuge > Simulator im Fiori Launchpad.
- Fügen Sie zwei Zeilen mit unterschiedlichen Artikeln derselben Gruppe hinzu — z. B. 2 ×
ZIGARRE-KIRSCHund 3 ×ZIGARRE-LIMETTE. - Klicken Sie auf Simulieren. Die Ergebnisanzeige zeigt denselben Prozentrabatt auf beiden Zeilen, weil die Gruppenmenge 5 erreicht.
- Reduzieren Sie auf insgesamt 2 Stück der Gruppe und simulieren Sie erneut — keine Staffel ist erreicht, beide Zeilen bleiben zum Normalpreis.
Nächste Schritte
- Für eine feste Kombination unterschiedlicher Artikel: Authoring Bundle-Promotions.
- Wenn mehrere Promotions denselben Warenkorb treffen: Stacking und Exklusivität in der Praxis.
Tiered Bundle Pricing — English summary
A tiered-bundle-pricing promotion (action type QUANTITY_TIER) applies volume pricing to a target. The target is either a single dedicated article code or a whole article group. The more units of the target are in the basket, the lower the per-unit price. The resolved tier price applies to all units, each discounted on its own price, not only the units above the threshold — this is not marginal/incremental pricing.
You pick exactly one target — a Target Article Number (one dedicated code) or a Target Article Group, never both. Set both or neither and the DRE rejects activation. With a single article, every unit is the same dedicated code. With an article group, different articles of the group count together (see Targeting an article group). Despite the word "bundle", this is volume pricing on the tier quantity — not a fixed combination of different articles. For a fixed combination, use the BUNDLE action type instead.
Configure it on the promotion: open the promotion in edit mode (Promotions app in the launchpad), add a discount action in the Discount Actions section, set the action type to QUANTITY_TIER, set either the Target Article Number (the one dedicated code) or the Target Article Group, and build the tier table (one row per tier: minimum quantity + discount type + discount value). The tier sub-table appears once you pick QUANTITY_TIER.
The three tier types:
| Tier type | Label | Meaning | Example |
|---|---|---|---|
UNIT_PRICE | Unit Price | Sets the per-unit price directly. | Tier value 26.00 → each unit costs €26.00 (e.g. case price per bottle). |
PERCENTAGE | Percentage | Percent off each unit. | Tier value 15 → 15 % off every unit. |
ABSOLUTE | Absolute | Amount off per unit — deducted per unit, not per line. | Tier value 3.00 on 4 units → €12.00 off (4 × 3.00), not €3.00. |
Absoluteis "amount off per unit", not "amount off the whole line". A €3.00ABSOLUTEtier on a 4-unit line takes €12.00 off, not €3.00.
Below-lowest behaviour: if the aggregate quantity is below the lowest tier's minimum quantity, the customer pays full price, no discount. This differs from scaled receipt tiers (SCALED_RECEIPT), which fall back to a base discount. If you want every quantity to get a price, add a tier at minimum quantity 1. Example — tiers {3 → €30}, {4 → €26} mean 1 or 2 units pay the full base price.
Ceiling behaviour: at and above the highest tier's quantity, the highest tier applies to all units. More units never reduce the discount.
Targeting an article group
Instead of a single code, set the Target Article Group (leave Target Article Number empty). Different articles of the group then count together toward the volume tier. Example — 2 cherry cigars + 3 lime cigars in group CIGARS make 5 units in the group, so the tier for 5 applies to all 5 units. Each article is discounted on its own price; the tier only sets the percentage, never a shared price across different articles. For that reason, group tiers use percentage discounts only — a fixed unit price or fixed amount-off makes no sense across a mixed-price group, so the discount type for every group tier is PERCENTAGE. Single-article tiers keep all three types (UNIT_PRICE / PERCENTAGE / ABSOLUTE).
The Include Sub-Groups option (includeSubGroups) controls how far the group reaches. Off by default: only articles assigned directly to the group count. On: articles of the group's sub-groups also count toward the tier. The Target Article Group and Include Sub-Groups fields appear once you pick QUANTITY_TIER.
Worked example (mixed articles): basket has 2 × CIGAR-CHERRY at €4.00 and 3 × CIGAR-LIME at €5.00, both in group CIGARS, with tiers {3 → 10 %}, {5 → 15 %}. Group quantity = 5, so the 5 → 15 % tier applies. Cherry: 2 × €4.00 − 15 % = €6.80. Lime: 3 × €5.00 − 15 % = €12.75. Total €19.55 (from €23.00), saving €3.45.
Authoring Gratisartikel-Promotions (FREE_ITEM)
Eine Gratisartikel-Promotion (Aktionstyp FREE_ITEM) gewährt einen Artikel kostenlos, sobald die Bedingungen der Promotion erfüllt sind. Sie legen einen Ziel-Artikelcode und eine Gratismenge fest. Trifft die Promotion zu, ist diese Menge des Artikels für den Kunden kostenlos.
Das DRE entscheidet je Warenkorb, wie der Gratisartikel verbucht wird — abhängig davon, ob der Artikel schon im Warenkorb liegt:
- Liegt der Artikel bereits im Warenkorb: Die betreffende Einheit wird kostenlos. Sie bleibt auf dem Kassenbon stehen und wird als Gratisartikel gekennzeichnet. Der Stückpreis dieser Einheit wird auf 0,00 € gesetzt.
- Liegt der Artikel nicht im Warenkorb: Das DRE fügt ihn als kostenlose Zugabe hinzu. Der Kunde muss den Artikel also nicht selbst in den Warenkorb legen, um ihn zu erhalten.
Liegt nur ein Teil der Gratismenge im Warenkorb, kombiniert das DRE beides: Die vorhandenen Einheiten werden kostenlos, die Restmenge wird als Zugabe hinzugefügt.
Beispiel: "Ab 50 € Einkauf: eine Tasse Kaffee gratis."
Anna legt eine Promotion mit der Bedingung "Warenkorbwert ≥ 50 €" an und hängt eine Gratisartikel-Aktion an, die eine Tasse Kaffee (KAFFEE-TO-GO) kostenlos gewährt.
So konfigurieren Sie die Gratisartikel-Aktion
- Öffnen Sie die Promotion im Bearbeiten-Modus (über die Promotionen-App im Launchpad).
- Legen Sie im Abschnitt Rabattaktionen eine Rabattaktion an und setzen Sie:
| Feld | Wert | Warum |
|---|---|---|
| Aktionstyp | FREE_ITEM | Gratisartikel gewähren oder hinzufügen |
| Gratisartikel-Nummer | KAFFEE-TO-GO | Der Artikel, der kostenlos gewährt wird (Pflichtfeld) |
| Gratisartikel-Menge | 1 | Anzahl kostenloser Einheiten (Standard: 1) |
| Auf eine pro Warenkorb beschränken | Ja | Höchstens eine Gratiseinheit je Warenkorb (Standard) |
| Gratisartikel-Referenzpreis | 2.50 | Wert der Zugabe, wenn kein Warenkorbpreis vorliegt |
| Rabattwert | (leer) | Ein Gratisartikel hat keinen Rabattwert |
Hinweis zur Oberfläche: Die Felder für die Gratisartikel-Aktion erscheinen, sobald Sie
FREE_ITEMals Aktionstyp wählen.
Die Gratismenge begrenzen — "Auf eine pro Warenkorb beschränken"
Das Feld Auf eine pro Warenkorb beschränken (restrictToOnePerBasket) steuert, wie oft der Gratisartikel gewährt wird. Es ist standardmäßig aktiv:
| Einstellung | Bedeutung |
|---|---|
| Ja (Standard) | Höchstens eine Gratiseinheit dieses Codes im gesamten Warenkorb — auch dann, wenn mehrere Promotions denselben Artikel gewähren. |
| Nein | Die Gratismenge entspricht dem Feld Gratisartikel-Menge und kann mit den Auslösern wachsen, begrenzt durch Maximale Gratiseinheiten. |
Die Obergrenze gilt global je Artikelcode: Triggern zwei verschiedene Promotions im selben Warenkorb je eine Gratis-Tasse Kaffee und ist bei mindestens einer Auf eine pro Warenkorb beschränken aktiv, erhält der Kunde insgesamt eine Gratis-Tasse, nicht zwei. Beim Speichern erscheint zu diesem Feld der Hinweis "höchstens eine Gratiseinheit dieses Codes im gesamten Warenkorb".
Maximale Gratiseinheiten — eine harte Obergrenze
Das optionale Feld Maximale Gratiseinheiten (maxFreeUnits) begrenzt die Gesamtzahl kostenloser Einheiten, die diese Aktion gewährt — unabhängig vom Preis. Leer bedeutet unbegrenzt (sofern Auf eine pro Warenkorb beschränken nicht ohnehin auf eine Einheit begrenzt).
Der Wert der Zugabe — Gratisartikel-Referenzpreis und 0,00 €
Jeder Gratisartikel bekommt einen Wert zugewiesen, damit Budget und Berichte die Kosten der Zugabe erfassen. Das DRE ermittelt diesen Wert in dieser Reihenfolge:
- Warenkorbpreis: Liegt der Artikel im Warenkorb, wird sein erfasster Stückpreis verwendet.
- Gratisartikel-Referenzpreis: Andernfalls der von Ihnen gepflegte Gratisartikel-Referenzpreis (
freeItemReferencePrice). - Stammdatenpreis: Ein Preis aus den Artikelstammdaten (heute nicht belegt — die Artikelstammdaten führen aktuell keine Preisspalte; DRE arbeitet stammdaten-optional).
- Unbekannt → 0,00 €: Lässt sich kein Preis ermitteln, wird die Zugabe mit 0,00 € ausgewiesen. Berichte können diese Fälle kennzeichnen.
Regel beim Speichern — mindestens eine Begrenzung erforderlich. Eine Gratisartikel-Aktion muss mindestens eine der drei Begrenzungen erfüllen: (a) einen positiven Gratisartikel-Referenzpreis, (b) eine Maximale Gratiseinheiten-Obergrenze, oder (c) das Kontrollkästchen Auf eine pro Warenkorb beschränken eingeschaltet (Standard: eingeschaltet). Sind alle drei Begrenzungen ausgeschaltet oder leer, weist das System die Aktion beim Speichern ab.
Regeln beim Speichern
- Die Gratisartikel-Nummer ist Pflicht. Ohne sie weist das DRE die Aktion ab.
- Gratisartikel-Menge und Maximale Gratiseinheiten müssen, falls gesetzt, ganzzahlig und mindestens
1sein. - Es muss entweder ein positiver Gratisartikel-Referenzpreis oder eine Maximale Gratiseinheiten-Obergrenze vorhanden sein (siehe Regel oben).
- Der Rabattwert der Aktion bleibt leer — ein Gratisartikel trägt keinen Rabattwert.
Durchgerechnetes Beispiel
Warenkorb: Einkauf über 54 € inklusive einer Tasse KAFFEE-TO-GO zu 2,50 €. Die Promotion "Ab 50 € eine Tasse Kaffee gratis" trifft zu.
- Die Tasse liegt bereits im Warenkorb → ihre Einheit wird kostenlos.
- Der Stückpreis der Tasse wird auf 0,00 € gesetzt; die Zeile bleibt auf dem Bon und ist als Gratisartikel gekennzeichnet.
- Wert der Zugabe: 2,50 € (Warenkorbpreis).
- Endbetrag: 54,00 € − 2,50 € = 51,50 €.
Lag die Tasse nicht im Warenkorb, fügt das DRE sie als kostenlose Zugabe hinzu; der Wert (2,50 €) stammt dann aus dem Gratisartikel-Referenzpreis.
Im Simulator prüfen
- Öffnen Sie Werkzeuge > Simulator im Fiori Launchpad.
- Fügen Sie Zeilen hinzu, die die Bedingung erfüllen (z. B. Warenkorbwert ≥ 50 €), und nehmen Sie den Gratisartikel einmal mit, einmal ohne in den Warenkorb auf.
- Klicken Sie auf Simulieren. Liegt der Artikel im Warenkorb, zeigt die Ergebnisanzeige die Zeile zu 0,00 € als Gratisartikel; liegt er nicht im Warenkorb, erscheint er als kostenlose Zugabe.
Nächste Schritte
- Für einen Mengenrabatt auf denselben Artikel: Authoring Tiered-Bundle-Promotions.
- Wenn mehrere Promotions denselben Warenkorb treffen: Stacking und Exklusivität in der Praxis.
Free Item — English summary
A free-item promotion (action type FREE_ITEM) grants an article for free when the promotion's conditions are met. You set a target article code and a free quantity. When the promotion matches, that quantity of the article is free for the customer.
The DRE decides per basket how the free unit is recorded:
- Already in the basket (gift): the present unit becomes free. It stays on the receipt, is flagged as a free item, and its unit price is set to €0.00.
- Not in the basket (inject): the DRE adds the article as a free grant. The customer does not have to scan it to receive it.
If only part of the free quantity is present, the DRE combines both: the present units become free and the shortfall is injected.
Configure it on the promotion: open the promotion in edit mode (Promotions app in the launchpad), add a discount action in the Discount Actions section, set the action type to FREE_ITEM, set the Free Item Article Number (the free article, mandatory), and set the Free Item Quantity. The free-item fields appear once you pick FREE_ITEM.
The cap field:
| Field | Setting | Meaning |
|---|---|---|
Restrict to one per basket (restrictToOnePerBasket) | On (default) | At most one free unit of this code across the whole basket — even when multiple promotions grant it (a global per-code cap). |
| Restrict to one per basket | Off | The free quantity follows the free quantity field and may scale with triggers, bounded by max free units. |
Max free units (maxFreeUnits) | optional | A price-independent hard cap on the total free units this action grants. Empty = unlimited. |
Give-away value resolution order: basket price (the code's scanned unit price, if present) → reference price (freeItemReferencePrice) → master data (no price column today; DRE is master-data-optional) → unknown → €0.00. A free item with no known price reports a €0.00 / unknown give-away value, and reports can flag it.
Save rule — a price OR a cap is required. A free-item action with neither a reference price nor a max-free-units cap is rejected at save. Without a price and without a count cap, an unbounded €0.00 give-away could be granted with no budget signal. Set either a positive reference price or a max free units cap.
Authoring Nach-Kauf-Gutschein-Promotions (POST_PURCHASE_COUPON)
Eine Nach-Kauf-Gutschein-Promotion (Aktionstyp POST_PURCHASE_COUPON) gibt dem Kunden nach dem Einkauf automatisch einen Gutschein für den nächsten Besuch mit. Der Gutschein wird direkt auf dem Kassenbon gedruckt und kann beim nächsten Einkauf eingelöst werden.
Diese Promotions eignen sich, um Wiederholungskäufe anzuregen. Sie ergänzen klassische Sofort-Rabatte: Der Kunde erhält nicht sofort einen Preisvorteil, sondern eine Bonität für die Zukunft — ideal für Bonusprogramme oder Kundenbindung.
Beispiel: "Jeder Grill-Einkauf über 100 € bringt einen 5-Euro-Rabattgutschein für den nächsten Einkauf mit."
Anna legt eine Promotion mit der Bedingung "Warenkorbwert ≥ 100 €" an und hängt eine Nach-Kauf-Gutschein-Aktion an, die einen 5-Euro-Gutschein ausgeben soll.
Voraussetzungen
- Der Ziel-Coupon-Typ muss vom Typ Einzelgutschein (
INDIVIDUAL) sein. Gemeinsame Gutscheine (GENERIC) können nicht als Nach-Kauf-Gutschein vergeben werden. Das System weist die Speicherung ab, falls Sie einenGENERIC-Typ wählen. - Optional, aber empfohlen: Aktivieren Sie Auto-Refill für den Gutschein-Typ, um sicherzustellen, dass genug Gutschein-Codes vorhanden sind. Ohne Auto-Refill wird jeder ausgegebene Gutschein beim Erfüllen durch den asynchronen Worker generiert. Eine Vorab-Generierung (Auto-Refill) reduziert die Worker-Last und vermeidet Engpässe bei der Gutschein-Pool-Erschöpfung. Siehe Coupon-Codes und Auto-Refill für Details.
So konfigurieren Sie die Nach-Kauf-Gutschein-Aktion
- Öffnen Sie die Promotion im Bearbeiten-Modus (über die Promotionen-App im Launchpad).
- Legen Sie im Abschnitt Rabattaktionen eine Rabattaktion an und setzen Sie:
| Feld | Wert | Warum |
|---|---|---|
| Aktionstyp | POST_PURCHASE_COUPON | Nach-Kauf-Gutschein |
| Ziel-Coupon-Typ | (Einzelgutschein-Name) | Der Coupon-Typ, aus dem der Code stammt (Pflichtfeld); muss vom Typ INDIVIDUAL sein |
| Rabattwert | (leer) | Nach-Kauf-Gutscheine tragen keinen Rabattwert auf der Aktion |
Hinweis zur Oberfläche: Die Felder für die Nach-Kauf-Gutschein-Aktion erscheinen, sobald Sie
POST_PURCHASE_COUPONals Aktionstyp wählen.
Wie es funktioniert
- Der Kunde erfüllt die Promotion-Bedingungen (z. B. Warenkorbwert ≥ 100 €).
- Der Kassenbon wird verarbeitet und die Nach-Kauf-Gutschein-Aktion wird ausgelöst.
- Das System weist dem Kunden einen verfügbaren Gutschein-Code aus dem konfigurierten Typ zu. Ist kein Code mehr im Pool vorhanden, wird einer ad-hoc generiert.
- Der Gutschein-Code wird auf dem Kassenbon gedruckt. Der Kunde nimmt ihn mit nach Hause.
- Beim nächsten Einkauf gibt der Kunde den Code am Kassenterminal ein. Das Terminal akzeptiert ihn und wendet den Rabatt an.
Gutscheine für anonyme Kunden
Nach-Kauf-Gutscheine werden als Codes auf dem Kassenbon gedruckt — sie funktionieren auch für anonyme, nicht im Treueprogramm registrierte Kunden. Der Code selbst ist der Beleg. Das System braucht keine Kunden-ID zum Ausgeben oder Einlösen.
Gutschein-Verfallsdatum und Verfügbarkeit
Das Verfallsdatum wird vom Gutschein-Typ bestimmt, nicht von der Promotion. Öffnen Sie die Coupon-Typen-App und prüfen Sie das Feld Gültig bis des konfigurierten Gutschein-Typs. Nach Ablauf dieses Datums können keine neuen Codes mehr ausgegeben werden.
Regeln beim Speichern
- Der Ziel-Coupon-Typ ist Pflichtfeld. Ohne ihn weist das DRE die Aktion ab.
- Der ausgewählte Gutschein-Typ muss vom Typ Einzelgutschein (
INDIVIDUAL) sein. Gilt der Typ alsGENERIC(Mehrfach-Gutschein), weist das DRE die Speicherung mit einer Fehlermeldung ab. - Der Rabattwert bleibt leer — die Aktion trägt keinen Rabattwert.
Durchgerechnetes Beispiel
Warenkorb: 120 € (Grillzubehör). Die Promotion "Ab 100 € einen 5-Euro-Rabattgutschein" trifft zu.
- Bedingung erfüllt (≥ 100 €).
- Das System weist aus dem konfigurierten Gutschein-Typ einen Code zu, z. B.
GRILL26-ABC123. - Der Code wird auf dem Kassenbon aufgedruckt: "Rabattgutschein: GRILL26-ABC123 (5,00 €), gültig bis [Datum des Typs]".
- Der Kunde nimmt ihn mit nach Hause.
- Beim nächsten Einkauf trägt er den Code ein. Das Terminal akzeptiert den Code und gewährt 5,00 € Rabatt.
Im Simulator prüfen
Der Simulator zeigt keine After-Purchase-Gutscheine (diese entstehen erst bei echten Transaktionen). Sie können aber die Promotion-Bedingung prüfen:
- Öffnen Sie Werkzeuge > Simulator im Fiori Launchpad.
- Fügen Sie Zeilen hinzu, die die Bedingung erfüllen (z. B. Warenkorbwert ≥ 100 €).
- Klicken Sie auf Simulieren. Die Ergebnisanzeige zeigt die Nach-Kauf-Gutschein-Aktion als angewendet (auch wenn der Code erst im echten Kassenbon erscheint).
Gutschein-Einlösungen prüfen
Die eingelösten Gutscheine sehen Sie später im Report Coupon-Analytik (Launchpad → Berichte & Analytik → Coupon-Analytik). Dort können Sie:
- Ausgegeben — wie viele Gutscheine insgesamt ausgegeben wurden.
- Eingelöst — wie viele davon später eingelöst wurden.
- Einlöserate — der Prozentsatz (Eingelöst geteilt durch Ausgegeben).
- Ø Tage bis Einlösung — durchschnittliche Anzahl der Tage zwischen Ausgabe und Einlösung.
Siehe Coupon-Analyse für den vollständigen Report.
Nächste Schritte
- Für Coupon-Typen Auto-Refill aktivieren: Coupon-Codes und Auto-Refill.
- Nach-Kauf-Gutschein-Einlösungen auswerten: Coupon-Analyse.
- Wenn mehrere Promotions denselben Warenkorb treffen: Stacking und Exklusivität in der Praxis.
Stacking und Exklusivität in der Praxis
DRE steuert, ob mehrere Promotions gleichzeitig auf einen Warenkorb angewendet werden können, über das Feld Exklusivitätsstufe (ExclusivityLevel). Es gibt vier Stufen:
| Stufe | Bedeutung |
|---|---|
NONE | Standardwert. Die Promotion stapelt sich mit allen anderen. |
PROMOTION | Nur die beste Promotion dieser Stufe greift im selben Prioritätsrang. |
GROUP | Nur die beste Promotion innerhalb derselben Ausschlussgruppe greift. |
GLOBAL | Keine andere Promotion darf gleichzeitig angewendet werden. |
Die folgenden vier Szenarien zeigen, wie das in der Praxis aussieht.
Szenario A — Stack-all (Standard, alle auf NONE)
Warenkorb: BBQ-Grill 99,00 € + Bier-6-Pack 9,00 € + Premium-Zigarren 35,00 € = 143,00 €
Drei aktive Promotions, alle ExclusivityLevel: NONE:
- "10 % auf Grills" → −9,90 €
- "5 % auf den Kassenbon" → −7,15 €
- "15 % auf Tabak" → −5,25 €
Ergebnis: Alle drei greifen. Gesamtersparnis 22,30 €, Endbetrag 120,70 €.
Kein Konflikt — weil alle auf NONE stehen, stapelt das System sie ohne gegenseitige Blockierung.
Szenario B — GLOBAL sperrt alles
Gleicher Warenkorb (143,00 €) + eine vierte Promotion: "Black-Friday 25 %" mit ExclusivityLevel: GLOBAL.
Ergebnis: Nur "Black-Friday 25 %" greift (−35,75 €, Endbetrag 107,25 €). Die anderen drei Promotions werden als durch die GLOBAL-Promotion „Black-Friday" blockiert zurückgewiesen.
Wenn mehrere GLOBAL-Promotions aktiv sind: Das System wählt diejenige mit dem höchsten Rabattbetrag für den konkreten Warenkorb.
Szenario C — Ausschlussgruppe (MutualExclusionGroup)
Warenkorb: 2× Bier-6-Pack à 9,00 € = 18,00 €
Zwei Bier-Promotions in der Ausschlussgruppe "Bier-Promos":
- "Bier-Wochenende 20 %" → −3,60 €
- "Treue-Rabatt 3 €" → −3,00 €
Plus eine kassenbon-weite Promotion (kein Mitglied der Gruppe):
- "2 % auf den Kassenbon" → −0,29 €
Ergebnis: Innerhalb der Ausschlussgruppe gewinnt "Bier-Wochenende 20 %" (höherer Betrag). "Treue-Rabatt 3 €" wird blockiert. Die kassenbon-weite 2 %-Promotion stapelt zusätzlich. Gesamtersparnis 3,89 €, Endbetrag 14,11 €.
Szenario D — PROMOTION-Stufe
Warenkorb: BBQ-Grill 99,00 €
Drei Promotions, alle ExclusivityLevel: PROMOTION, gleicher Prioritätsrang:
- "10 % Grill-Rabatt" → −9,90 €
- "15 € Aufräum-Aktion" → −15,00 €
- "5 % Neukunden-Rabatt" → −4,95 €
Ergebnis: "15 € Aufräum-Aktion" gewinnt (höchster Rabattbetrag). Die anderen zwei werden als durch die PROMOTION-exklusive Aktion „Aufräum" blockiert zurückgewiesen. Endbetrag 84,00 €.
Praxis-Tipp: Verwenden Sie
PROMOTIONwenn mehrere ähnliche Aktionen existieren und immer nur die beste für den Kunden gelten soll — ohne eine explizite Ausschlussgruppe pflegen zu müssen.
Aktionsvorlagen — Templates für wiederkehrende Promotions
Eine Aktionsvorlage ist ein eingefrorenes Blueprint einer Promotion, das Sie wiederholt als Ausgangspunkt für neue Promotions verwenden können. Statt Bedingungen und Aktionen jedes Mal von Hand aufzubauen, materialisieren Sie eine Vorlage einmal, und das DRE erstellt eine neue, fertige Promotion im Entwurfsstatus.
Beispiel: Sie wiederholen jede Woche eine "Wochenblatt-Aktion" mit demselben Szenario (z. B. "Bier ≥ 6er-Packs = 5% Rabatt"). Eine Vorlage spart die manuelle Konfiguration jedes Mal.
Zugriff auf Aktionsvorlagen
- Öffnen Sie den Launchpad.
- Gehen Sie zur Gruppe Promotionen.
- Klicken Sie auf die Kachel Aktionsvorlagen.
Die List Report zeigt alle gespeicherten Vorlagen. Klicken Sie auf eine Vorlage, um sie zu öffnen.
Vorlage materialisieren (in eine Promotion umwandeln)
- Öffnen Sie eine Vorlage in der Object Page.
- Klicken Sie auf den Button Promotion aus Vorlage erstellen im Header.
- Ein Dialog öffnet sich und fragt nach:
- Name der Promotion — wie die neue Promotion heißen soll.
- Gültig ab — Startdatum.
- Gültig bis — Enddatum.
- Klicken Sie auf Erstellen. Das DRE erstellt eine neue Promotion im Entwurfs-Status mit dem gleichen Szenario (Bedingungen und Aktionen kopiert).
- Passen Sie bei Bedarf Namen, Daten oder andere Details an.
- Aktivieren Sie die Promotion wie gewohnt.
Wichtige Hinweise
- Vorlagen sind editierbar. "Eingeforen" bedeutet, dass sie eine statische Momentaufnahme sind; Sie können sie aber jederzeit erstellen, bearbeiten und löschen.
- Materialisierung erzeugt immer einen Entwurf — keine Aktivierung. Sie müssen die neue Promotion separat freigeben.
- Rollen: Nur Administratoren dürfen Vorlagen erstellen/bearbeiten. PromotionManager und Genehmiger haben Lesezugriff.
- Bekannte Einschränkung: Staffelung, Mengenstaffeln und Bundled-Komponenten (scaledTiers, quantityTiers, bundleComponents) werden derzeit nicht tiefenkopiert — Sie müssen diese nach der Materialisierung manuell hinzufügen.
2.2 Coupon-Codes und Auto-Refill
Coupon-Typen, die Einmalcodes vergeben, können während einer laufenden Kampagne leer laufen — sobald der Pool ungenutzter Codes null erreicht, sieht der nächste Kunde am Kassenterminal eine "Keine Codes verfügbar"-Meldung. Auto-Refill verhindert das, indem der Pool automatisch aufgefüllt wird, sobald der Vorrat unter einen von Ihnen festgelegten Schwellwert fällt. Sie aktivieren es einmal pro Coupon-Typ; das System erledigt den Rest im Hintergrund.
Dieser Abschnitt richtet sich an Promotion-Manager und Marketing-Planer. Sie konfigurieren Auto-Refill auf der Coupon-Typen-Objektseite (Fiori Launchpad → Coupons → Coupon-Typ auswählen).
Wann wird der Refill ausgelöst?
Auto-Refill überwacht die Anzahl der ACTIVE (ungenutzt, nicht eingelöst, nicht abgelaufen) Codes für den Coupon-Typ. Sobald diese Anzahl unter den von Ihnen gesetzten Nachfüll-Schwellenwert fällt, generiert das System eine neue Batch von Codes — die Größe dieser Batch ist der Wert Codes pro Nachfüllung — und die neuen Codes sind sofort für Kunden verfügbar.
Die Prüfung läuft planmäßig im Hintergrund. Der Scheduler-Tick wertet jede Minute alle aktivierten Refill-Schedules aus; das tatsächliche Refill-Intervall pro Schedule kommt aus der verknüpften Code-Konfiguration (Feld refillIntervalMinutes). Ohne verknüpfte Code-Konfiguration nutzt die Plattform einen sicheren Standard von 60 Minuten pro Schedule.
Wenn Sie Code-Konfiguration leer lassen, prüft die Plattform pro Schedule alle 60 Minuten (sicherer Standard). Für engere Intervalle verknüpfen Sie eine Code-Konfiguration mit
refillIntervalMinutes≥ 1.
Konfigurieren
- Öffnen Sie die Coupon-Typen-App aus dem Fiori Launchpad.
- Wählen Sie den Coupon-Typ aus, den Sie automatisch auffüllen möchten. Die Objektseite öffnet sich.
- Scrollen Sie zum Abschnitt Automatisches Nachfüllen.
- Klicken Sie auf Auto-Nachfüllen aktivieren in der Aktionsleiste oben auf der Seite.
- Füllen Sie den Dialog aus:
| Feld | Bedeutung | Typischer Wert |
|---|---|---|
| Nachfüll-Schwellenwert | Wenn ungenutzte Codes unter diesen Wert fallen, wird ein Refill ausgelöst. | 100 |
| Codes pro Nachfüllung | Wie viele neue Codes das System pro Refill generiert. | 500 |
| Code-Konfiguration (optional) | Gespeicherte Konfiguration für Format (Präfix, Länge, Zeichensatz) und Refill-Intervall (refillIntervalMinutes). Leer lassen für 60-Minuten-Standard pro Schedule. | leer |
| Aktiviert | Schalter zum Aktivieren/Deaktivieren ohne Einstellungsverlust. | an |
- Speichern. Die Nachfüll-Historie-Untertabelle am unteren Seitenende beginnt, jeden vom System generierten Batch zu protokollieren.
Tipp: Setzen Sie den Schwellwert hoch genug, um die erwartete Einlöserate zwischen zwei Refill-Intervallen abzudecken. Bei einer Kampagne, die ~50 Codes pro Minute verbraucht, ist ein Schwellwert von
100bei 60-Minuten-Standard-Intervall zu eng — verknüpfen Sie eine Code-Konfiguration mit kürzeremrefillIntervalMinutesoder erhöhen Sie Schwellwert + Batch-Größe deutlich (z. B.5000).
Status einsehen
Der Abschnitt Automatisches Nachfüllen auf der Objektseite zeigt zwei schreibgeschützte Zeitstempel:
| Feld | Bedeutung |
|---|---|
| Zuletzt geprüft | Zeitstempel der letzten Prüfung. Wenn dieser älter als das konfigurierte Intervall ist, könnte der Scheduler gestoppt sein — prüfen Sie die Kachel Aggregator Runs. |
| Zuletzt nachgefüllt | Zeitstempel des letzten erfolgreichen Refills. Wenn "Zuletzt geprüft" sich bewegt, aber "Zuletzt nachgefüllt" nicht, wurde der Schwellwert noch nicht unterschritten — das ist normal. |
Die Nachfüll-Historie-Untertabelle listet jeden vom System generierten Batch mit Zeitstempel, Code-Anzahl und der daraus resultierenden Batch-ID auf.
Deaktivieren
Sie haben zwei Optionen, beide reversibel:
- Pausieren — öffnen Sie den Abschnitt Automatisches Nachfüllen, klicken Sie auf Auto-Nachfüllen aktualisieren, und schalten Sie Aktiviert auf aus. Schwellwert und Batch-Größe bleiben erhalten; schalten Sie den Schalter wieder ein, um fortzufahren.
- Deaktivieren — klicken Sie auf Auto-Nachfüllen deaktivieren in der Aktionsleiste. Gleiche Wirkung wie Pausieren, aber mit einem Klick und klar benannt.
Der vorhandene Pool ungenutzter Codes bleibt in beiden Fällen gültig — nur die automatische Auffüllung stoppt.
2.3 Aktivierung an bestimmten Wochentagen
Sie können eine Promotion auf bestimmte Wochentage beschränken. So richten Sie zum Beispiel ein „Montags-Frühstücksangebot" oder eine „Werktags"-Aktion ein, ohne mehrere Einzel-Promotions anzulegen.
Hinweis: Diese Wochentags-Steuerung ersetzt die frühere App „Wiederkehrende Promotion-Muster". Deren Launchpad-Kachel wurde entfernt. Tagesbasierte Aktivierung pflegen Sie jetzt direkt auf der Promotion.
Wo Sie es finden. Öffnen Sie eine Promotion und wechseln Sie in den Bearbeiten-Modus. Den Abschnitt Wochentage finden Sie auf der Promotion-Seite zwischen Gültigkeit und Promotion-Szenario.
So wählen Sie Wochentage:
- Nutzen Sie eine Voreinstellung — Jeden Tag, Werktage (Mo–Fr) oder Wochenende (Sa–So).
- Oder schalten Sie einzelne Tage über die Tagesschalter (Mo–So) ein und aus.
- Eine Zusammenfassungszeile bestätigt Ihre Auswahl, zum Beispiel „Aktiv an Werktagen (Mo–Fr)".
- Klicken Sie auf Speichern.
Wie es wirkt. Lassen Sie die Auswahl leer, ist die Promotion an jedem Tag aktiv. Andernfalls wertet das DRE die Promotion nur an den ausgewählten Wochentagen aus — die Vorfilterung blendet sie an allen anderen Tagen aus.
2.4 Kampagnen-Management
Letzte Aktualisierung: 2026-06-11
Kampagnen bündeln mehrere Aktionen unter einem gemeinsamen Thema — zum Beispiel alle Promotions der Grillsaison oder eines Black-Friday-Events. Das gibt Ihnen eine einheitliche Stelle, um Termine zu steuern, den Überblick zu behalten und Aktionen gemeinsam zu verschieben.
Wann brauche ich eine Kampagne?
- Sie haben 10 oder mehr Promotions für dasselbe Event und möchten deren Laufzeiten synchronisiert halten.
- Sie möchten im Promotionskalender sehen, welche Aktionen zu einem Thema gehören.
- Sie planen, den Kampagnenzeitraum nachträglich zu verschieben — und alle verknüpften Promotions sollen automatisch mitgehen.
Beispiel: "Grillsaison 2026" — 5 Promotions, 4 Wochen Laufzeit. Sie legen eine Kampagne an und verknüpfen alle 5 Promotions damit. Wenn das Wetter zwei Wochen kalt bleibt und Sie die Kampagne um eine Woche verlängern müssen, ändern Sie einfach das Kampagnenenddatum.
Neue Kampagne anlegen
Was Sie brauchen: Admin-Rolle (Kampagnen können nur von Administratoren erstellt werden).
- Öffnen Sie die Kampagnen-App über das Launchpad.
- Klicken Sie oben rechts auf Anlegen.
- Füllen Sie die Pflichtfelder aus:
- Name — ein eindeutiger, sprechender Name (z. B. "Grillsaison 2026").
- Gültig von / Gültig bis — der Zeitrahmen der gesamten Kampagne.
- Klicken Sie auf Speichern.
Die Kampagne liegt zunächst als Entwurf vor. Sie können jetzt Promotions verknüpfen.
Promotions mit einer Kampagne verknüpfen
- Öffnen Sie eine vorhandene Kampagne (oder die gerade angelegte).
- Scrollen Sie zur Sektion Verknüpfte Aktionen.
- Klicken Sie auf Hinzufügen und wählen Sie die gewünschten Promotions aus der Liste.
- Klicken Sie auf Übernehmen und dann auf Speichern.
Tipp: Sie können eine Promotion auch direkt von der Promotion-Detailseite aus mit einer Kampagne verknüpfen — im Feld Kampagne im Abschnitt Allgemeine Informationen auf der Objektseite der Promotion.
Kampagnentermine verschieben
Wenn sich der Zeitplan einer Kampagne ändert — zum Beispiel weil das Event eine Woche früher startet — können Sie die Kampagnendaten anpassen. Das System fragt Sie, ob alle verknüpften Promotions ebenfalls verschoben werden sollen.
- Öffnen Sie die Kampagne.
- Klicken Sie auf Bearbeiten.
- Ändern Sie Gültig von und/oder Gültig bis.
- Klicken Sie auf Aktivieren (Entwurf abschließen).
- Ein Bestätigungs-Banner erscheint: "N verknüpfte Promotion(en) werden auf den neuen Datumsbereich aktualisiert. Fortfahren?"
- Klicken Sie auf Aktivieren & Promotions aktualisieren.
Nach der Bestätigung erhalten alle verknüpften Promotions automatisch die neuen Daten. Sie sehen im Promotionskalender sofort die aktualisierten Einträge.
Wichtig: Wenn Sie auf Abbrechen klicken, bleiben alle Promotions unverändert. Die Kampagnendaten werden ebenfalls nicht gespeichert.
Häufige Fragen zu Kampagnen
Kann eine Promotion in mehreren Kampagnen sein? Nein — eine Promotion gehört zu genau einer Kampagne oder zu keiner.
Was passiert mit Promotions, die ich manuell bearbeitet habe? Das System verschiebt alle verknüpften Promotions, unabhängig davon, ob Sie diese manuell bearbeitet haben. Wenn Sie eine Promotion bewusst von der Kampagnen-Terminverschiebung ausnehmen möchten, trennen Sie sie vor der Aktivierung von der Kampagne.
Sehe ich die Kampagne im Kalender? Ja — öffnen Sie den Promotionskalender und aktivieren Sie die Einfärbung "Nach Kampagne". Promotions derselben Kampagne werden unter ihrer Kampagne gruppiert. Siehe auch den Abschnitt Promotionskalender.
Kampagne sperren
Wenn alle Promotions einer Kampagne kommuniziert wurden — zum Beispiel auf gedruckten Flyern, in Werbemails oder in einem externen Datenfeed — können Sie die Kampagne sperren. Die Sperre friert alle Bearbeitungsmöglichkeiten ein, sodass der Systemzustand nicht mehr vom kommunizierten Stand abweichen kann. Die Auswertung am POS ist davon nicht betroffen: Eine gesperrte Promotion wird weiterhin normal angewendet und gewährt den Rabatt wie konfiguriert.
Warum sperren? Sie verhindern versehentliche Änderungen an Promotions, die bereits gedruckt oder veröffentlicht sind.
Wer kann sperren? Administratoren und Promotion-Manager können eine Kampagne sperren.
Kampagne sperren — Schritt für Schritt
- Öffnen Sie die Kampagne in der Kampagnen-App über das Launchpad.
- Klicken Sie in der Aktionsleiste auf Sperren (🔒).
- Die Kampagne ist jetzt gesperrt. Alle bearbeitbaren Felder sind ausgegraut. Das 🔒-Symbol erscheint im Seitenkopf.
Kampagne entsperren — Schritt für Schritt
- Öffnen Sie die gesperrte Kampagne (🔒-Symbol im Seitenkopf ist sichtbar).
- Klicken Sie in der Aktionsleiste auf Entsperren.
- Bestätigen Sie die Aktion im Bestätigungsdialog.
- Die Kampagne ist entsperrt. Alle Felder können wieder bearbeitet werden.
Wer kann entsperren? Nur der Ersteller der Kampagne (der Benutzer, der die Kampagne angelegt hat) oder ein Administrator kann eine Kampagne entsperren. Promotion-Manager, die die Kampagne nicht erstellt haben, können sie nicht entsperren.
Was ist gesperrt — was bleibt erlaubt?
| Aktion | Status |
|---|---|
| Kampagnenfelder bearbeiten (Name, Datum, Beschreibung) | Gesperrt |
| Promotions hinzufügen oder entfernen | Gesperrt |
| Kampagnentermine verschieben (Shift Dates) | Gesperrt |
| Promotion-Felder bearbeiten | Gesperrt |
| Promotion-Aktionen ausführen (Aktivieren, Genehmigen usw.) | Gesperrt |
| Kampagne lesen und navigieren | Erlaubt |
| ICS-Kalenderexport | Erlaubt |
| ICS-Kalenderexport | Erlaubt |
| Budgets bearbeiten | Erlaubt |
| Kampagne entsperren (Eigentümer oder Admin) | Erlaubt |
Hinweis: Das Bearbeiten von Budgets bleibt auch für gesperrte Kampagnen erlaubt. Laufende Rechnungen und Kostenfreigaben können Sie weiterhin verbuchen.
🔒-Markierung in der Promotionsliste
In der Promotionsliste (Fiori Launchpad → Promotions) zeigt ein 🔒-Symbol in der Spalte Gesperrt, dass diese Promotion zu einer gesperrten Kampagne gehört. Die Promotion selbst kann nicht bearbeitet werden, solange ihre Kampagne gesperrt ist. Um Änderungen an einer solchen Promotion vorzunehmen, entsperren Sie zuerst die Kampagne.
Fehlermeldungen
Wenn Sie versuchen, eine Promotion oder eine Kampagne im gesperrten Zustand zu bearbeiten, zeigt die DRE eine Fehlermeldung an, die darauf hinweist, dass die Kampagne gesperrt ist und zunächst entsperrt werden muss. Diese Einschränkung gilt für alle Schreiboperationen über den Admin-Service und über die API.
2.5 Promotionskalender
Letzte Aktualisierung: 2026-05-28
Der Promotionskalender zeigt alle Aktionen und Kampagnen auf einer Zeitachse. Er eignet sich perfekt für die Übersicht: Welche Promotions laufen wann? Überschneiden sich zwei Aktionen? Gibt es Lücken im Aktionsplan?
Wann nutze ich den Kalender?
- Wöchentliche Planung: Ich sehe auf einen Blick, was diese Woche und nächste Woche aktiv ist.
- Kampagnenplanung: Ich sehe, wie Kampagnen sich auf der Zeitachse verteilen.
- Konfliktprüfung: Ich erkenne sofort, ob zwei Promotions mit denselben Artikeln gleichzeitig aktiv wären.
Kalenderansicht öffnen
- Klicken Sie im Launchpad auf Promotionskalender.
- Der Kalender öffnet sich in der Monatsansicht. Wechseln Sie mit den Schaltflächen Woche / Monat in die gewünschte Ansicht.
- Nutzen Sie die Pfeile Zurück / Vor um in der Zeit zu navigieren.
Kampagnen als Gruppe sehen
Promotions, die zur gleichen Kampagne gehören, werden im Kalender unter der Kampagne gruppiert. Die Kampagnenzeile zeigt den Gesamtzeitraum, darunter erscheinen die einzelnen Promotions.
Einfärbung wechseln
Nutzen Sie den Schalter in der Werkzeugleiste:
- Nach Status (Standard): Aktive Promotions grün, Entwürfe grau, abgelaufene hellgrau, abgelehnte rot.
- Nach Kampagne: Promotionen werden gruppiert nach Kampagne (plus eine Gruppe Ohne Kampagne). Jede Kampagnen-Gruppe hat eine Kopfzeile; die Farben der einzelnen Promotionen entsprechen ihrem Status (aktiv = grün, Entwurf = grau usw.), nicht der Kampagne.
- Nach Stakeholder: Hilfreich, um schnell zu sehen, wer welche Aktionen finanziert.
Kalender filtern
Die Filterschaltfläche oben in der Werkzeugleiste ermöglicht es, den Kalender nach Artikelgruppen, POS-Gruppen und Stakeholdern zu filtern. Klicken Sie auf das Suchsymbol (⧉) neben einem Filterfeld, um eine Suchdialog zu öffnen:
Artikelgruppe filtern:
- Klicken Sie auf das Suchsymbol neben dem Feld Artikelgruppe.
- Der Dialog öffnet sich. Geben Sie eine Artikelgruppe ein, um die Liste zu durchsuchen.
- Wählen Sie eine oder mehrere Artikelgruppen durch Anklicken aus.
- Klicken Sie auf OK. Der Kalender zeigt nur noch Promotions, die diese Artikelgruppen enthalten.
Gleiches gilt für POS-Gruppe und Stakeholder — filtern Sie nach den Gruppen oder Abteilungen, die Sie interessieren. Die ausgewählten Filter bleiben erhalten, wenn Sie die Seite neu laden oder die Ansicht speichern und später öffnen.
Mehrere Filter kombinieren: Wenn Sie mehrere Filter (z. B. Artikelgruppe UND POS-Gruppe) gesetzt haben, zeigt der Kalender nur Promotions, die beide Bedingungen erfüllen.
Gespeicherte Kalenderansichten
Wenn Sie bestimmte Filter häufig nutzen (z. B. "nur Getränke-Promotions" oder "nur Aktionen meiner Abteilung"), können Sie diese Ansicht speichern:
- Setzen Sie die gewünschten Filter in der Filterschaltfläche.
- Klicken Sie auf Ansicht speichern und geben Sie der Ansicht einen Namen.
- Die gespeicherte Ansicht erscheint künftig im Dropdown Meine Ansichten.
Kalenderereignis öffnen
Klicken Sie auf einen Balken im Kalender, um direkt zur Detailseite der Promotion oder Kampagne zu springen.
Hinweis zu Drag & Drop
Das direkte Verschieben von Promotions per Drag & Drop ist in Planung, aber noch nicht verfügbar. Um Termine zu ändern, öffnen Sie die Promotion über den Kalender und bearbeiten Sie Gültig von / Gültig bis auf der Detailseite. Zum Verschieben einer ganzen Kampagne mitsamt aller verknüpften Promotions siehe den Abschnitt Kampagnen-Management.
Phase 3 — Freigabe und Pilot
3.1 Freigabeprozess
Der Freigabeprozess steuert die Promotion-Aktivierung über eine Prüfer-Entscheidung. Autoren erstellen Promotions als ENTWURF, reichen sie zur Genehmigung ein, und Prüfer (mit der Rolle PromotionApprover) genehmigen oder lehnen ab. Das Prüfprotokoll in PromotionApprovals ist nur erweiterbar — jede Entscheidung wird aufbewahrt.
Lebenszyklus-Zustände
ENTWURF → Zur Genehmigung einreichen → Wartet auf Genehmigung (PENDING_APPROVAL)
│
├─ Genehmigen → AKTIV (validFrom ≤ heute)
├─ Genehmigen → GENEHMIGT (validFrom > heute; Scheduler aktiviert am validFrom)
└─ Ablehnen → ABGELEHNT
ABGELEHNT ist ein Endzustand für die Berechnungsmaschine — die Vorfilterung lässt ihn nie durch. Autoren können eine abgelehnte Promotion über die Aktion Erneut zur Genehmigung einreichen überarbeiten (ABGELEHNT → ENTWURF), sodass der Autor die Promotion bearbeiten und erneut einreichen kann, ohne die Zeile neu zu erstellen. Das unveränderliche PromotionApprovals-Prüfprotokoll bewahrt sowohl die ursprüngliche Ablehnung als auch die nachfolgende erneute Einreichung.
Autor-Ablauf
- Erstellen Sie eine Promotion als
ENTWURF. - Klicken Sie auf Zur Genehmigung einreichen auf der Listen- oder Objektseite.
- Geben Sie optional einen Freitext-Kommentar für den Prüfer an.
- Der Status wechselt zu Wartet auf Genehmigung (intern
PENDING_APPROVAL). Der Autor kann Zielfelder nicht mehr bearbeiten, bis der Prüfer antwortet.
Prüfer-Ablauf
- Erhalten Sie die E-Mail-Benachrichtigung. Der Deep-Link öffnet die betreffende Promotion direkt auf ihrer Objektseite. Die gespeicherte Listenansicht "Wartet auf meine Genehmigung" zeigt Ihnen alle Promotions, die auf Ihre Entscheidung warten.
- Die Statusspalte ist farbkodiert (orange für ausstehend, grün für genehmigt, rot für abgelehnt).
- Klicken Sie auf Genehmigen oder Ablehnen. Die Genehmigung wechselt sofort zu
AKTIV, wennvalidFrombereits in der Vergangenheit liegt, andernfalls landet sie inGENEHMIGTund der vorhandene Scheduler aktiviert amvalidFrom.
Mandanten-Konfiguration: Genehmigung erzwingen
Das DRFOUT Tenant Config-Flag requireApprovalBeforeActive (Standard false) steuert den alten ENTWURF → AKTIV-Direktpfad. Setzen Sie es auf true, um jede Promotion durch den Genehmigungsworkflow zu zwingen, bevor sie AKTIV werden kann.
E-Mail-Benachrichtigungen
- Im Entwicklungsbetrieb wird keine E-Mail versendet (nur im Log).
- Für Produktivbetrieb konfiguriert Ihre IT-Abteilung die Empfängerliste.
- Wiederholte Einreichungen innerhalb von 5 Minuten (gleiche Promotion, gleicher Empfänger) werden zusammengefasst.
Rolle ohne Admin-Rechte
Der PromotionApprover benötigt keine Admin- oder PromotionManager-Berechtigung. Eine eigenständige Freigabe-Rolle reicht aus, um den Freigabeprozess vollständig zu nutzen.
Freigaben-Kachel
Benutzer mit der PromotionApprover-Rolle finden in der Launchpad-Startseite die Kachel Freigaben (Symbol: Aufgaben-Icon). Ein Klick öffnet die Promotions-Liste, automatisch vorgefiltert auf Promotions im Status PENDING_APPROVAL.
Der Freigeber sieht nur die ausstehenden Promotionen — das ist der Standardzustand der Liste. Sie können diesen Filter jederzeit aufheben, wenn Sie alle Promotionen durchsehen möchten.
Nur ausstehende Promotions sichtbar
Im Freigabe-Posteingang sind ausschließlich Promotions mit dem Status Wartet auf Genehmigung sichtbar. Freigegebene oder abgelehnte Promotions verlassen den Posteingang automatisch — sie sind für den Freigeber nicht mehr lesbar.
Aktive und Entwurf-Promotions — Standard-Listenansicht
Die Promotions-Liste (über das Launchpad → Promotionen) zeigt standardmäßig nur aktive Promotions. In-Bearbeitung-Entwürfe (einschließlich verlassener, unbenannter Drafts) sind in dieser Ansicht verborgen. Um Entwürfe zu sehen, aktivieren Sie den Filter Bearbeitungsstatus und wählen Sie Entwurf. Damit werden Entwürfe ein- und ausgeblendet.
Schritt-für-Schritt-Ablauf (Freigeber)
- Launchpad öffnen → Kachel Freigaben anklicken.
- Promotion aus der Liste auswählen.
- Promotion prüfen, dann Genehmigen oder Ablehnen klicken.
- Die Promotion verschwindet aus dem Posteingang; das Freigabeprotokoll wird automatisch fortgeschrieben.
Häufige Fragen zum Freigabeprozess
Kann ein Autor die eigene Promotion genehmigen? Nein. Die Eigenfreigabe ist systemseitig blockiert: Wer eine Promotion angelegt hat, kann sie unabhängig von seinen Rollen nicht selbst freigeben oder ablehnen.
Was passiert, wenn der Prüfer abwesend ist?
Die Promotion bleibt im Status Wartet auf Genehmigung (intern PENDING_APPROVAL), bis jemand mit der PromotionApprover-Rolle entscheidet. Bitten Sie Ihre IT-Abteilung, eine Stellvertreter-Rolle für Urlaubszeiten einzurichten.
3.2 Pilot-Modus
Der Pilot-Modus ermöglicht es Ihnen, eine Promotion für eine begrenzte Anzahl von POS-Gruppen zu starten, den Uplift gegenüber einer Kontrollgruppe zu messen und sie entweder automatisch zu aktivieren oder zur Überarbeitung zurückzukehren.
Beispiel: Sie möchten eine neue Tabak-Formel mit "15 % auf Tabak in ausgewählten Filialen" testen — in 10 % der Filialen, während 90 % als Kontrollgruppe dienen.
Lebenszyklus-Zustände
ENTWURF → Pilot starten → PILOT (innerhalb des Pilotfensters)
│
├─ Auf Aktiv setzen → AKTIV (manuell)
├─ Pilot beenden → ENTWURF (manuelle Überprüfung)
└─ Auto-Beförderungs-Job → ENTWURF (automatisch, zur manuellen Überprüfung)
Die automatische Beförderung zu AKTIV ist derzeit nicht aktiv: Die zugrunde liegende Uplift-Telemetrie ist noch nicht angebunden. Der Auto-Beförderungs-Job stellt abgelaufene Piloten daher immer auf ENTWURF zurück. Verwenden Sie die manuelle Aktion Auf Aktiv setzen, um einen erfolgreichen Piloten zu aktivieren.
Pilot anlegen
Der Pilot wird in einer eigenen App konfiguriert — auf der Promotion-Objektseite gibt es keinen Pilot-Abschnitt und kein Pilot-Link-Facet.
- Erstellen Sie die Promotion als
ENTWURFund speichern Sie sie. - Öffnen Sie im Launchpad Promotionen → Pilot-Konfiguration. Legen Sie eine neue Pilot-Konfiguration an und verknüpfen Sie sie über das Feld Promotion mit Ihrer Promotion. Die Konfiguration hat eigene Abschnitte:
- Pilot Start / Ende — das Fenster, in dem die Vorfilterung die Zielausrichtung auf die Pilot-POS-Gruppen einschränkt.
- Pilot-POS-Gruppen — Filialen, die am Pilotarm teilnehmen.
- Kontroll-POS-Gruppen — Filialen, die auf der Basis bleiben (keine Pilotpromotion).
- Auto-Beförderung — wenn eingeschaltet, wechselt der Auto-Beförderungs-Job PILOT zu AKTIV, wenn der gemessene Uplift ≥ Schwellwert ist; andernfalls zu ENTWURF.
- Auto-Beförderungs-Schwellwert (%) — erforderlicher Mindest-Uplift.
- Speichern Sie die Konfiguration. Die Validierung weist ab:
- Pilotgruppe ∩ Kontrollgruppe überlappen sich (keine Filiale darf in beiden Armen sein).
- Ende gleich oder vor Start.
- Schwellwert ist ≤ 0 oder > 100 (gültiger Bereich: größer als 0 bis 100 %).
- Öffnen Sie die Promotion und klicken Sie auf Pilot starten, um sie von ENTWURF auf PILOT umzustellen. Pilot starten ist eine Aktion auf der Promotion und setzt eine gespeicherte Pilot-Konfiguration voraus.
Hinweis zur statistischen Aussagekraft
Streben Sie mindestens 20 Filialen pro Pilotarm an — kleinere Arme können einen Uplift von 5 % nicht zuverlässig von zufälliger Varianz unterscheiden. Das ist eine beratende Empfehlung, die beim Anlegen nicht erzwungen wird: Sie können den Pilot trotzdem starten. Die Stichprobengrößen-Warnung erscheint nicht beim Anlegen, sondern im Pilotvergleichs-Report (Abschnitt 3.3), wenn ein Arm unter 20 Filialen liegt.
Auto-Beförderungs-Job
Ein 5-Minuten-Hintergrundprozess prüft alle Pilot-Konfigurationen, deren Fenster beendet hat:
autoBeförderung = aus→ wechselt zuENTWURFfür manuelle Überprüfung.autoBeförderung = einund Uplift ≥ Schwellwert → wechselt zuAKTIV.autoBeförderung = einund Uplift < Schwellwert → wechselt zuENTWURF.
3.3 Pilot-Auswertung
Nach Abschluss eines Pilots können Sie Pilotarm und Kontrollarm direkt vergleichen.
Pilotvergleichsseite öffnen
- Öffnen Sie im Launchpad Berichte & Analytik → Pilotvergleich.
- Wählen Sie die Pilot-Konfiguration aus der Liste.
- Die Objektseite zeigt vier Diagramme:
- Umsatz: Pilot vs. Kontrolle — Nettoumsatz über das Pilotfenster.
- Warenkorbgröße: Pilot vs. Kontrolle — gewichteter Durchschnittseinkaufskorb.
- Transaktionen: Pilot vs. Kontrolle — Gesamt- und Promotions-Transaktionszählungen.
- Statistische Konfidenz (p-Wert) — p-Wert-Abzeichen + Gewinner-Status.
Verfügbare Kennzahlen
| Kennzahl | Bedeutung |
|---|---|
| Pilot-/Kontrollfilialen | Anzahl der POS-Gruppen in jedem Arm |
| Stichprobenwarnhinweis | Sichtbar, wenn ein Arm < 20 Filialen hat |
| Pilot-/Kontroll-Transaktionen | Bestätigte Transaktionen über das Pilotfenster |
| Umsatz-Uplift | (Pilotrumsatz − Kontrollumsatz) / Kontrollumsatz |
| Gewinner | Pilot / Kontrolle / Nicht eindeutig (Rohcodes: PILOT / CONTROL / INCONCLUSIVE) |
Best Practices
- Mindestens 20 Filialen pro Arm für aussagekräftige chi-Quadrat-Tests.
- Mindestens 14 Tage Fensterlänge, damit Tagesaggregationen Wochentags- und Feiertagseffekte ausgleichen.
- Ähnliche Traffic-Profile zwischen den Armen wählen (ähnlicher Umsatz, ähnlicher Sortimentsmix).
- Auto-Beförderungs-Schwellwert sollte den minimalen geschäftlichen Uplift widerspiegeln, nicht den statistischen Schwellwert.
Phase 4 — Durchführung
4.1 Simulator
Die Simulations-App (zugänglich über das Fiori Launchpad unter Werkzeuge > Simulator) ermöglicht es Ihnen, Testkörbe zu erstellen und sie durch die Promotion-Maschine zu führen, ohne Nebenwirkungen.
Die direkte URL für die Simulator-Kachel ist:
http://localhost:4004/launchpad.html#Simulation-display
Wichtig — Seitenaktualisierung. Wenn Sie die Browserseite im Fiori Launchpad neu laden, springt die Shell zurück zur Launchpad-Startseite. Verwenden Sie die Werkzeuge > Simulator-Kachel oder die Breadcrumb-Navigation, um zum Simulator zurückzukehren — verlassen Sie sich nicht auf die Browser-Schaltfläche "Neu laden".
Zeilen-Referenz-Eingabe
Jede Warenkorb-Zeile im Simulator enthält eine Zeilenreferenz-Spalte mit einer Texteingabe. Der Platzhaltertext lautet "Auto".
- Leer lassen für normales Testen. Der Server weist automatisch
"1","2","3"usw. zu. - Ausfüllen, wenn Sie Split-Always-Szenarien testen — zum Beispiel, wenn Sie denselben Artikel in zwei Zeilen hinzufügen und überprüfen möchten, welche Zeile den Rabatt erhält. Geben Sie eine eindeutige Zeichenfolge pro Zeile ein (z. B.
"10","20").
Das Simulationsantwort-Panel zeigt die lineReference auf jedem Ergebniseintrag, sodass Sie die Zuordnung visuell bestätigen können.
Nicht ausgelöste Promotionen
Wenn Sie eine Simulation durchführen, enthält das Antwort-Panel einen Block Nicht ausgelöste Promotionen, der jede Promotion auflistet, die berücksichtigt, aber nicht ausgelöst wurde. Der Block wird ausgeblendet, wenn jede aktive Promotion angewendet wurde — sein Vorhandensein bedeutet, dass etwas mit dem Warenkorb übereinstimmte, aber abgelehnt wurde.
Jeder Eintrag ist nach der Pipeline-Phase gruppiert, die ihn verworfen hat:
| Phasenkennzeichnung | Was es bedeutet | Beispiel |
|---|---|---|
| Vorfilter | Vor einer Bedingungsprüfung herausgefiltert — weil die Promotion außerhalb ihres Gültigkeitsfensters liegt, nicht für diese POS-Gruppe aktiv ist, durch Wochentag- oder Happy-Hour-Regeln blockiert wird oder einfach inaktiv ist. | "Sommerschlussverkauf" ist vor drei Tagen abgelaufen. |
| Gutschein erforderlich | Die Promotion ist gutschein-ausgelöst, aber der Warenkorb hat keinen passenden Gutschein. | "VIP-Treue-Boost" benötigt Code VIP-2026. |
| Bedingungen nicht erfüllt | Vorfilter bestanden, aber der Bedingungsbaum wurde nicht wahr ausgewertet. Das Popover zeigt, welcher Bedingungsknoten fehlgeschlagen ist und welcher Wert erwartet vs. beobachtet wurde. | "10 % auf Getränke" benötigt Beleggesamtbetrag ≥ 50 €; Korbgesamtbetrag ist 32 €. |
| Durch Priorität blockiert | Bedingungen stimmten überein, aber eine höherprioritäre Promotion hat zuerst dieselben Artikel übernommen. | "Gestapelter Rabatt" verlor gegen den höher priorisierten "Top-Priorität-Bündel". |
| Budget erschöpft | Bedingungen und Priorität bestanden, aber das Budget der Promotion ist erschöpft oder würde das Kundenlimit überschreiten. Das Popover zeigt Verwendet / Erforderlich / Verbleibend und den begrenzenden Grund. | "Black Friday Bündel"-Budget ist bei 500 / 500 — erschöpft. |
| Ungültige Gutscheine | Ein Gutschein-Code im Warenkorb hat die Validierung fehlgeschlagen (abgelaufen, bereits eingelöst, noch nicht aktiv, falscher Kunde usw.). Das Popover zeigt den Code und den Validierungsfehler. | Gutschein SAVE10 ist ABGELAUFEN. |
Klicken Sie auf das Hinweis-Symbol in einer Zeile, um das Drill-Down-Popover für diesen Verwurf zu öffnen. Wenn eine Promotion ohne aufzeichnungsbare Details verworfen wurde, zeigt das Popover "Keine weiteren Details".
Nur für den Simulator. Dieses Panel wird ausschließlich in der Simulator-Benutzeroberfläche gerendert. Live-POS-Terminals zeigen keine verpassten Promotion-Daten.
Request aus Berechnungsprotokoll importieren
Sie können einen Testwarenkorb aus einem echten Kassensystem-Request importieren, um eine Promotion gegen die tatsächlichen Transaktionsdaten zu debuggen. Dies ist hilfreich, wenn ein Kunde im Geschäft ein Verhalten meldet, das Sie reproduzieren möchten, ohne die Cashier-Daten manuell neu einzugeben.
Die Simulator-App bietet einen Request importieren-Button oben im Warenkorb-Panel. Klicken Sie darauf, um eine JSON-Datei auszuwählen.
Schritt-für-Schritt:
- Klicken Sie auf die Schaltfläche Request importieren.
- Wählen Sie eine JSON-Datei aus, die Sie aus dem Berechnungsprotokoll exportiert haben.
- (Optional) Aktivieren Sie das Kontrollkästchen Timestamp auf jetzt setzen, um die Simulation mit dem aktuellen Datum und der aktuellen Uhrzeit auszuführen statt mit dem Original-Zeitstempel aus der Datei.
- Klicken Sie auf Importieren, um den Warenkorb zu laden.
Dateiformat. Die Datei muss ein JSON-Request sein, der aus der Berechnungsprotokoll-Anzeige exportiert wurde. Das System lehnt Response-Dateien ab.
Warenkörb wird überschrieben. Der Import ersetzt alle aktuellen Warenkorb-Artikel. Speichern Sie Ihre Test-Szenarien lokal, bevor Sie neue Requests importieren, wenn Sie mehrere Szenarien durcharbeiten möchten.
Hinweis zu personenbezogenen Daten. Das Berechnungsprotokoll importiert Kunden-ID und Kundengruppe mit den echten Werten — diese Felder werden nicht maskiert und können direkt zum Testen von Kundenbedingungen (zum Beispiel: Rabatt nur für VIP-Kunden) verwendet werden. Felder wie Loyalitäts-Kartennummer, Zahlungskarteninformationen und persönliche Kontaktdaten (Name, E-Mail, Telefon, IBAN) können als
***REDACTED***angezeigt werden, wenn sie im gespeicherten Request enthalten waren. Loyalitätsstufe und -punkte sind nicht maskiert — diese Felder stehen ebenfalls direkt zur Verfügung.
4.2 Warenkörbe mit Rückgaben
Letzte Aktualisierung: 2026-06-03
Das Aktionsmotorsystem akzeptiert jetzt gemischte Warenkörbe. Ein gemischter Warenkorb enthält sowohl Verkaufszeilen (positive Mengen) als auch Rückgabezeilen (negative Mengen) in einer einzigen Transaktion.
Wie Rückgaben funktionieren
Wenn Ihr Kassensystem eine Rückgabezeile an die DRE sendet (erkennbar an einer negativen Menge), führt das Aktionsmotorsystem folgende Schritte aus:
-
Rückgabezeilen werden nicht bewertet. Das Aktionsmotorsystem prüft seine Bedingungen und berechnet Rabatte nur auf Verkaufszeilen (positive Mengen). Rückgabezeilen werden in die Antwort echoed, ohne geprüft oder rabattiert zu werden.
-
Rückgabezeilen fließen nicht in Budgets, Coupons oder Treue ein. Rückgaben verursachen keinen Budgetverbrauch, reduzieren keine Coupon-Verfügbarkeit und erwerben keine Treuepunkte. Nur Verkaufszeilen beeinflussen diese Entitäten.
-
Die Rückgabe bleibt im Status quo. Die Zeile wird unverändert mit dem Originalbetrag / der Originalmenge zurückgegeben. Weder Rabatte noch Aufschläge werden angewendet.
Verantwortung zwischen Kassensystem und DRE
Die Korrektheit des Rückgabepreises liegt bei Ihrem Kassensystem — das Aktionsmotorsystem gibt den gelieferten Preis unverändert zurück.
Das heißt:
- Ihr Kassensystem prüft, ob ein Artikel rückgabefähig ist, ob das Rückgabefenster noch offen ist und welcher Preis erstattet werden soll (Originalpreis, Durchschnittspreis, aktueller Marktpreis).
- Das Aktionsmotorsystem akzeptiert den Preis, den Sie senden, und leitet ihn unverändert weiter.
Diese Aufteilung stellt sicher, dass Rückgaben nicht gegen Ihre Geschäftslogik verstoßen — das DRE-System muss sich nicht in Rückgabepolitiken einmischen.
Sicherheitsgrenzen
Das Aktionsmotorsystem prüft Rückgabewarenkörbe auf Plausibilität:
- Mengen von genau 0 sind ungültig und werden abgewiesen.
- Warenkörbe, deren Rückgabemengen die Verkäufe stark übersteigen (mehr als das Zweifache des Verkaufsvolumens), werden abgewiesen.
- Warenkörbe, deren Gesamtsumme einen Mindestwert unterschreitet, werden abgewiesen.
Diese Grenzen verhindern Missbrauch (z. B. Rückgabe von Artikeln, die nie verkauft wurden) und schützen die Integrität Ihrer Finanzberichte.
Testen im Simulator
Der Simulator akzeptiert negative Mengen direkt. Geben Sie pro Warenkorb-Zeile eine positive Menge für einen Verkauf oder eine negative Menge für eine Rückgabe ein. So testen Sie gemischte Warenkörbe (Verkauf plus Rückgabe) in einer einzigen Simulation, ohne gegen die POS-API aufzurufen.
Eine Menge von null wird abgewiesen — der Simulator zeigt in einem Warnhinweis die Meldung „Artikel N: Menge muss ungleich null sein (positiv für Verkäufe, negativ für Rückgaben)".
Die Ergebnisanzeige weist Rückgaben gesondert aus: Eine Zeile Rückgabe-Zwischensumme zeigt den Gesamtwert der Rückgabezeilen. Rabatte greifen nur auf den Verkaufszeilen; Rückgabezeilen bleiben unverändert.
4.3 POS-Funktionen
Letzte Aktualisierung: 2026-05-28
DRE enthält fünf POS-Funktionen am Kassensystem — Funktionen am Kassensystem, die das Kundenerlebnis am Point of Sale verbessern und die Konversionsrate Ihrer Promotions steigern. Alle fünf sind in der Produktionsversion aktiv und arbeiten automatisch im Hintergrund.
Schwellwert-Lücke (Threshold Gap)
Was es tut: Das System berechnet, wie nah ein Warenkorb an einer Promotion ist, die noch nicht ausgelöst hat. Wenn ein Kunde z. B. noch 2 Flaschen Wein bis zu einer "3 kaufen, 1 gratis"-Aktion braucht, erkennt DRE diese Lücke.
Wann feuert es: Bei jeder Kassiersimulation — automatisch, ohne Konfiguration.
Was der Kunde sieht: Das Kassendisplay oder eine Beleganzeige kann die Lückenhinweise anzeigen (z. B. "Noch €3,00 bis zum nächsten Rabatt!"). Die Anzeige hängt von der POS-Integration ab.
Typischer Nutzen: Upsell — Kunden kaufen ein oder zwei Artikel mehr, um den Rabatt zu erreichen.
Fast-Treffer-Empfehlungen (Near-Miss)
Was es tut: Wenn ein Kunde eine Promotion knapp verpasst hat (z. B. der Warenkorb war 85 % der Anforderung), kann das System eine Empfehlung ausgeben: "Fast! Noch 1 Artikel aus der Kategorie Weine für 20 % Rabatt."
Wann feuert es: Nach jedem Kassiervorgang, wenn die Near-Miss-Analyse für Ihren Mandanten aktiviert ist (standardmäßig aus Datenschutzgründen deaktiviert).
Was der Kunde sieht: Eine Empfehlung auf dem Kassendisplay oder auf dem Kassenbon — konfigurierbar je nach POS-System.
Aktivierung: Ein Administrator aktiviert Near-Miss in der Mandanten-Analytik-App. Dafür gibt es zwei Schalter: "Near-Miss-Analytik aktivieren" (zeichnet die Telemetriedaten auf) und "Produktive Near-Miss-Empfehlungen aktivieren" (spielt die Hinweise am POS aus); beide sind standardmäßig aus. Ohne Aktivierung werden keine Near-Miss-Daten gesammelt. Siehe Abschnitt 5.3 Mandanten-Analytik.
Datenschutz: Near-Miss-Empfehlungen enthalten keine Kundennummer und keinen Personenbezug. Es wird nur der Warenkorb-Inhalt ausgewertet.
Einsparungszusammenfassung (Savings Summary)
Was es tut: Am Ende eines Kassenvorgangs fasst DRE alle erzielten Rabatte in einer einzelnen Zahl zusammen: "Sie haben heute €4,50 gespart."
Wann feuert es: Immer, wenn mindestens eine Promotion angewendet wurde.
Was der Kunde sieht: Die Gesamtersparnis erscheint auf dem Kassenbon und kann auf dem Kassendisplay angezeigt werden (je nach POS-Integration).
Sparbrechnung mit Gutschein-Details: Wenn eine "Gutschein-Promotion" (z. B. "Gib 50 EUR aus, erhalte 10 EUR Gutschein") aktiv ist, erscheint der Gutschein-Rabatt jetzt in der Abbrechnung der gewährten Rabatte — als eigenständige Zeile mit Betrag. Beispiel: Der Kassenbon zeigt eine eigene Gutschein-Zeile mit Betrag (z. B. „−10,00 EUR") neben anderen Rabattzeilen — die genaue Bezeichnung der Zeile hängt von Ihrer Kassenintegration ab. Das macht die Summe transparent: Alle aufgelisteten Rabatte plus der Endbetrag stimmen überein.
Typischer Nutzen: Höhere Kundenzufriedenheit — Kunden sehen genau, welche Promotions sie erhalten haben und wie viel sie sparen.
Stufenweise Empfehlungen (Progressive Nudges)
Was es tut: DRE unterscheidet Empfehlungen nach Empfehlungstyp, nicht nach Phase des Kassenvorgangs. Es gibt drei Empfehlungstypen:
- Ausgaben-Schwelle (spend-threshold) — Hinweis, dass der Kunde mit einem höheren Bonwert eine Promotion erreicht (z. B. "Noch 15 € bis zum Rabatt").
- Mehrfachkauf (multi-buy) — Hinweis, dass der Kunde mit weiteren Artikeln eine Mengen-Promotion auslöst (z. B. "Noch 1 Artikel für 3-für-2").
- Gestaffelter Rabatt (tiered-discount) — Hinweis, dass der Kunde mit etwas mehr die nächste Rabattstufe erreicht.
Wann feuert es: Bei jedem Kassiervorgang, wenn stufenweise Empfehlungen aktiviert sind (standardmäßig an).
Was der Kunde sieht: Das POS-System kann die Hinweise stufenweise auf dem Display darstellen — der Hinweis ändert sich, wenn der Warenkorb wächst.
Aktivierung/Deaktivierung: In der Mandanten-Analytik-App über den Schalter "Produktive Nudges aktivieren". Kann deaktiviert werden, wenn die Hinweise im Betrieb unerwünscht sind.
A/B-Testing
Was es tut: DRE kann eine Promotion nur für ausgewählte Filialen aktivieren (Testgruppe) und die Ergebnisse mit Filialen ohne die Promotion (Kontrollgruppe) vergleichen. So können Sie belastbar messen, ob eine neue Promotion wirklich mehr Umsatz bringt.
Wann feuert es: Immer wenn eine Promotion als "Experiment" markiert ist und Kontroll- und Testfilialen zugewiesen sind.
Was der Betreiber sieht: Im Pilot-Vergleich sehen Sie Konversionsrate, Umsatz und statistischen Signifikanzwert (p-Wert) für beide Gruppen, mit dem Gewinner gekennzeichnet als Pilot, Kontrolle oder Nicht eindeutig. Im Post-Mortem-Dashboard sehen Sie die gleichen Metriken für die abgelaufene Kampagne, mit Gewinner gekennzeichnet als Experimentgruppe, Kontrolle oder Nicht eindeutig.
Typischer Nutzen: Fundierte Entscheidungen statt Bauchgefühl — Sie wissen vor dem flächendeckenden Rollout, ob die Promotion funktioniert.
Alle fünf Funktionen im ROI-Dashboard
Das ROI-Dashboard (Launchpad → Berichte & Analytik → Promotionswirkung & ROI) bündelt die Kennzahlen aller fünf Funktionen in einer Übersicht. Sie sehen dort, wie oft jede Funktion ausgelöst hat und wie oft darauf eine Kaufentscheidung gefolgt ist.
Phase 5 — Auswertung
5.1 Promotion Impact ROI Dashboard
Das Promotionswirkung & ROI-Fiori-Dashboard (Launchpad-Kachel „Promotionswirkung & ROI") zeigt Produktionstelemetrie der 5 POS-Funktionen am Kassensystem:
| Funktion | Diagramm | Was es zeigt |
|---|---|---|
| Schwellwert-Lücke | Balken (Emissionen vs. Konversionen) | Wie oft response.thresholdGaps[] emittiert wurde und wie oft ein Rabatt folgte |
| Fast-Treffer | Linie (Emissionen + Ø Fehlbetrag) | Emissionsanzahl + weiche Konversionsrate |
| Einsparungszusammenfassung | Balken (Funnel) | Impressionen von response.totals.savingsSummary und Folgekonversionen |
| Stufenweise Empfehlungen | Linie nach Phase | Kurve pro Empfehlungsphase (Ausgaben-Schwelle / Mehrfachkauf / Gestaffelter Rabatt) |
| A/B-Test | Tabelle der Experimente | Pro Experiment: Promotion, Ø Warenkorb Kontrolle, Ø Warenkorb Experiment, Uplift %, Stichprobengröße je Arm, Signifikanz-Ampel |
Die Kennzahlen erklärt: Emissionen, Konversionen und die Schwellenwert-Gap-Konversion
Alle Diagramme dieses Dashboards arbeiten mit zwei Grundgrößen: Emissionen und Konversionen. Dieser Abschnitt erklärt beide und zeigt am Beispiel der Schwellenwert-Gap-Konversion, wie Sie die Zahlen lesen.
Emission (Ausspielung). Eine Emission ist ein abgeschlossener Kassiervorgang, bei dem das DRE die jeweilige Funktion ausgespielt hat. Bei der Schwellenwert-Gap-Konversion heißt das: Der Warenkorb lag nah an einer Aktion, die noch nicht ausgelöst hatte. „Nah" bedeutet, der Kunde hatte mindestens 80 % der Bedingung erreicht — zum Beispiel 80 € von 100 € Mindestumsatz. Die 80 % sind die Standard-Nähe-Schwelle. Das DRE hat dem Kassensystem in diesem Fall einen Hinweis geschickt. Pro Kassiervorgang zählt höchstens eine Emission, auch wenn der Kunde mehrere Aktionen knapp verpasst hat.
Konversion. Eine Konversion ist eine Emission, bei der derselbe Kassiervorgang auch einen Rabatt gebracht hat — der Gesamtrabatt des Bons war größer als 0. Wichtig: Die Konversion misst einen Zusammenhang innerhalb desselben Vorgangs. Sie misst nicht, ob ein Kunde später wiederkommt und die Lücke gezielt schließt. Der Rabatt kann auch aus einer anderen Aktion stammen. Die Konversion ist deshalb ein weicher Indikator (englisch „soft KPI"): Sie zeigt, dass ein knapp-vorbei-Kunde am Ende doch profitiert hat. Sie beweist keine Ursache und Wirkung.
Konversionsrate. Die Konversionsrate ist der Anteil der Emissionen, die zu einer Konversion wurden: Konversionen geteilt durch Emissionen. Eine Rate von 50 % bedeutet, dass die Hälfte der knapp-vorbei-Vorgänge im selben Bon noch einen Rabatt erhielt.
Das Diagramm „Schwellen-Lücken-Konversionen". Das Diagramm — in der Anwendung als Schwellenwert-Gap-Konversionen geführt — stellt pro Tag zwei Balken nebeneinander: die Emissionen (wie oft das DRE eine Schwellenwert-Lücke erkannt hat) und die Konversionen (wie viele dieser Vorgänge im selben Bon doch einen Rabatt brachten).
Beispiel: Am 06.06.2026 zeigt das Diagramm 8 Emissionen und 4 Konversionen. Das DRE hat an diesem Tag also 8 Kunden erkannt, die knapp an einer Aktion vorbeischrammten. 4 davon erhielten im selben Vorgang trotzdem einen Rabatt. Die Konversionsrate beträgt 4 geteilt durch 8, also 50 %.
Zusätzlich zeigt das Dashboard die durchschnittliche Lücke (avgGapClosed): wie viel den knapp-vorbei-Kunden im Schnitt noch fehlte. Eine kleine durchschnittliche Lücke bei gleichzeitig niedriger Konversionsrate ist ein besonders deutliches Signal — hier genügt oft eine kleine Anpassung, damit mehr Kunden die Aktion auslösen.
Wozu dient die Kennzahl? Sie finden damit Aktionen, deren Auslöse-Schwelle zu hoch liegt. Viele Emissionen bei niedriger Konversionsrate bedeuten: Viele Kunden kommen nah heran, lösen die Aktion aber nicht aus. Prüfen Sie dann zwei Hebel — senken Sie die Bedingung der Aktion (zum Beispiel den Mindest-Bonwert), oder spielen Sie am Kassensystem einen deutlicheren Hinweis aus (siehe Abschnitt 4.3 POS-Funktionen).
Drei Arten von Lücken. Das DRE unterscheidet, woran eine Aktion knapp scheiterte:
| Lückenart | Bedeutung | Beispielhinweis am Kassensystem |
|---|---|---|
Betragslücke (RECEIPT_AMOUNT) | Es fehlt Umsatz bis zu einem Mindest-Bonwert. | „Noch 5 € bis zum Rabatt." |
Mengenlücke (ITEM_QUANTITY) | Es fehlen Stück bis zu einer Mindestmenge. | „Noch 1 Artikel für das Angebot." |
Staffellücke (SCALED_RECEIPT) | Es fehlt Umsatz bis zur nächsten Rabattstufe. | „Noch 20 € bis 15 % statt 10 %." |
Hinweis zu den übrigen Diagrammen. Emissionen und Konversionen gelten sinngemäß für alle fünf Diagramme. Eine Ausnahme: Das Diagramm Near-Miss-Konversionen zeigt derzeit nur Emissionen. Eine eigene Konversionszahl wird dort nicht berechnet, weil ein Fast-Treffer pro Vorgang keinen eigenen Rabattwert trägt; die Konversionsspalte bleibt deshalb auf 0. Die Nähe-Schwelle für Fast-Treffer ist außerdem ein eigener Wert (Standard 30 %), den Sie in der Mandanten-Analytik einstellen (siehe Abschnitt 5.3 Mandanten-Analytik).
Per-Promotion-Aufschlüsselung: Welche Promotions treiben diese Zahl?
Jedes ROI-Panel beantwortet nicht nur die Frage „Wie viele Emissionen und Konversionen gab es heute?", sondern auch „Welche Promotions stecken dahinter?" Klicken Sie auf einen Tagespunkt im Schwellwert-Lücke- oder Einsparungszusammenfassung-Diagramm, um einen Popover mit den Top-Promotions für diesen Tag zu öffnen.
Schwellwert-Lücken-Aufschlüsselung. Der Popover ist eine Liste; jede Promotion erscheint als Listeneintrag (Name, eine Kontextzeile „Schwelle X · Ø Lücke Y" und eine Zeile „Konversion % · n=…") mit diesen Angaben:
| Spalte | Bedeutung |
|---|---|
| Promotionsname | Der Name der Promotion, z. B. „Sommerrabatt Wein". |
| Konversion % | Anteil der Emissionen dieser Promotion, die zu einem Rabatt im selben Bon führten. |
| Volumen (n) | Stichprobengröße — wie viele Vorgänge in diesen Wert einflossen. Eine hohe Rate bei niedrigem n ist kein verlässlicher Wert. |
| Ausgaben-Schwelle | Der konfigurierte Mindestbetrag dieser Promotion (z. B. 50 €). |
| Durchschnittliche Lücke | Wie weit Kunden im Schnitt von der Schwelle entfernt waren (z. B. −8,20 €). |
Einsparungs-Aufschlüsselung. Der Popover ist eine Liste; jede Promotion erscheint als Listeneintrag (Name, Kontextzeile „Ersparnis gesamt X · Ø Y" und „Konversion % · n=…") mit diesen Angaben:
| Spalte | Bedeutung |
|---|---|
| Promotionsname | Name der Promotion. |
| Konversion % | Anteil der Vorgänge, bei denen diese Promotion einen Einsparungsbetrag ausgab. |
| Volumen (n) | Stichprobengröße. |
| Gesamtersparnis | Summe aller gewährten Rabatte dieser Promotion am Auswahltag. |
| Durchschnittliche Ersparnis | Rabatt pro auslösendem Vorgang. |
Beispiel: Anna wählt den 10. Juni im Schwellwert-Lücke-Diagramm. Der Popover zeigt: „Sommerrabatt Wein — 42 % Konversion, n=24, Schwelle 50 €, Lücke −6,80 €." Das bedeutet: 24 Kunden kamen bis auf 6,80 € an die Aktionsschwelle heran, aber nur 42 % kauften noch nach. Eine Absenkung der Schwelle auf 45 € würde voraussichtlich mehr Abschlüsse bringen.
Das Near-Miss-Panel verfügt bereits über denselben Drill-down-Mechanismus (Klick auf Tagespunkt → Top-Promotions).
A/B-Test-Ergebnisse: Experiments im Überblick
Das A/B-Panel zeigt eine Tabelle aller laufenden und abgeschlossenen Experimente — nicht einen einzelnen gemittelten Uplift-Balken. So erkennen Sie sofort, welches Experiment wie abschneidet.
Was die Tabelle zeigt. Pro Experiment enthält eine Zeile:
| Spalte | Bedeutung |
|---|---|
| Promotionsname | Die Promotion, die als Experiment läuft. |
| Ø Warenkorb Kontrolle | Durchschnittlicher Bon-Wert in den Kontroll-Filialen (ohne Promotion). |
| Ø Warenkorb Experiment | Durchschnittlicher Bon-Wert in den Test-Filialen (mit Promotion). |
| Uplift % | Prozentuale Differenz zwischen Experiment- und Kontroll-Ø-Warenkorb. Ein positiver Wert bedeutet: Test-Kunden kauften im Schnitt mehr. |
| n Kontrolle / n Experiment | Stichprobengröße pro Arm. Werfen Sie immer einen Blick auf n — ein Uplift von 30 % bei n=8 ist Zufall, bei n=800 ist es ein Signal. |
| Signifikanz | Ampel-Symbol auf Basis eines statistischen Tests (Welch-t-Test auf Warenkorbwerten, 95 %-Konfidenz). |
Wie Sie die Signifikanz-Ampel lesen:
- Grün (signifikant) — Die Differenz zwischen Experiment und Kontrolle ist mit 95 % Konfidenz kein Zufall. Sie können auf Basis dieses Ergebnisses entscheiden.
- Gelb (nicht signifikant) — Die Differenz erreicht nicht die 95 %-Konfidenz. Das kann an einer kleinen Stichprobe oder an einem echten Nulleffekt liegen. Sammeln Sie mehr Daten, bevor Sie eine Rollout-Entscheidung treffen.
Beispiel: Das Experiment „GRILL26-Sommer" zeigt Ø Warenkorb Kontrolle 42,30 €, Ø Warenkorb Experiment 49,80 €, Uplift +17,7 %, n Kontrolle=312, n Experiment=308, Ampel grün. Das ist ein belastbares Ergebnis. „Aktionswoche Kosmetik" zeigt +22 % Uplift, aber n=11 je Arm und gelbe Ampel — hier fehlen Daten für eine Entscheidung.
Tagesaufschlüsselung. Klicken Sie auf eine Zeile, um den Tagesverlauf zu öffnen: Kontroll- und Experiment-Ø-Warenkorb als zwei Linien über die Zeit, kumulative Stichprobengröße und Signifikanz pro Tag. So sehen Sie, ob der Uplift stabil war oder an einzelnen Tagen konzentriert ist.
„Sieger ausrollen". Am Ende der Tagesaufschlüsselung erscheint die Schaltfläche „Sieger ausrollen". Ein Klick öffnet die Promotions-Anwendung, in der Sie die Gewinner-Variante in den regulären Betrieb überführen. Die Schaltfläche ändert selbst keinen Status; den Rollout führen Sie in der Promotions-Anwendung aus.
Beschriftungen der Empfehlungsphasen. Im Stufenweise-Empfehlungen-Diagramm und in Drill-down-Popovers lesen Sie die Phasen jetzt als Klarnamen statt als interne Codes:
| Angezeigter Name | Bedeutung |
|---|---|
| Ausgaben-Schwelle | Der Kunde braucht noch einen Mindestumsatz, um die Promotion auszulösen. |
| Mehrfachkauf | Der Kunde braucht noch eine bestimmte Stückzahl. |
| Gestaffelter Rabatt | Der Kunde steht kurz vor der nächsten Rabattstufe. |
Leerer Zustand beim ersten Öffnen
Das erste Mal, wenn ein Mandant Promotion Impact ROI öffnet, zeigt jedes Diagramm "Keine Daten" — das ist erwartet. Das Dashboard beantwortet drei Fragen:
- Was speist dieses Diagramm? Jedes Panel hat eine kontextuelle Leer-Zustandsmeldung, die die zugrundeliegende Funktion benennt.
- Wann werden die Daten aktualisiert? Ein oberes Banner sagt "Daten werden t äglich um 02:00 Uhr UTC aktualisiert. Letzter Lauf: {Zeitstempel}, {n} Zeilen verarbeitet."
- Zählen meine Simulator-Läufe? Nur wenn Sie sie bestätigen. Das Banner erklärt: "Quelle: bestätigte POS-Transaktionen — einschließlich Transaktionen, die Sie im Simulator bestätigen; reine Vorschau-Aufrufe (ohne Bestätigung) werden nicht gezählt."
Demo-Daten laden: Für Demonstrationen oder Schulungen können Sie synthetische Daten in die Datenbank einspielen, um die Diagramme sofort befüllt zu sehen. Führen Sie dazu aus:
npm run seed:kfroi-demo
Das Skript lädt 6 Tage Demo-Telemetrie (Schwellwert-Lücken, Near-Miss, Einsparungen, Empfehlungen und A/B-Tests) und führt die Aggregations-Jobs automatisch aus. Nach wenigen Sekunden zeigen alle fünf Diagramme realistische Charts mit Beispieldaten. Weitere Informationen finden Sie in Abschnitt 7.3 Demo-Umgebung einrichten.
Mandanten-Feature-Flags
Zwei der fünf Diagramme erfordern Ihre ausdrückliche Aktivierung:
| Diagramm | Erforderliches Flag | Standard | Wo umschalten |
|---|---|---|---|
| Near-Miss-Konversionen | Near-Miss-Analytik aktivieren | AUS (DSGVO-sicher) | Mandanten-Analytik → Objektseite |
| Stufenweise Empfehlungen | Produktive Nudges aktivieren | AN für neue Mandanten | Mandanten-Analytik → Objektseite |
Wenn ein Flag AUS ist, ändert sich der Leer-Zustand des Diagramms zu "Near-Miss-Analytik ist für diesen Mandanten deaktiviert. Klicken Sie hier, um sie auf der Mandanten-Analyse-Seite zu aktivieren."
Near-Miss-Analysen aktivieren (opt-in)
Near-Miss-Analysen sind standardmäßig aus (DSGVO-Sicherheit). Es werden keine Near-Miss-Zeilen geschrieben, bis Sie Near-Miss-Analytik aktivieren auf der TenantAnalyticsConfig-Zeile des Mandanten einschalten. Das ist beabsichtigt.
Das Dashboard rendert ein geführtes Aktivierungs-Panel auf der Near-Miss-Konversionskarte, wenn das Flag AUS ist:
- Ein kurzer Hilfetext erklärt, was Near-Miss-Analysen aufzeichnen.
- Eine primäre Schaltfläche "Near-Miss-Analysen für diesen Mandanten aktivieren", die das Flag aktiviert, ohne das Dashboard zu verlassen.
- Ein sekundärer Link "Mandanten-Analytik-Einstellungen öffnen" für Operatoren, die verwandte Flags überprüfen möchten.
Troubleshooting-Checkliste
- Banner zeigt "… Bisher keine Aktualisierungen aufgezeichnet" → Der Cron ist noch nicht ausgelöst (Standard 02:00 UTC). Warten Sie oder verwenden Sie die Schaltfläche "Jetzt aktualisieren" oben im Dashboard.
- Banner hat einen
ranAt-Wert, aberprocessedRowsist 0 → Keine bestätigten POS-Transaktionen an diesem Tag (Vorschau-Simulator-Aufrufe ohne Bestätigung zählen nicht). Prüfen Sie die Berechnungsprotokolle. - Ein Diagramm zeigt einen Deaktiviert-Hinweis (z. B. "Near-Miss-Analytik ist für diesen Mandanten deaktiviert") → Schalten Sie das Flag auf der Mandanten-Analytik-Objektseite um.
- Banner zeigt Status
TEILWEISE→ Prüfen Sie die Protokolle des Aggregator-Jobs auf mandantenspezifische Fehler.
Aggregator-Läufe — Analytik-Hintergrundprozess
Der Aggregator ist ein nächtlicher Hintergrund-Job, der die Telemetrie des vorherigen Tages zusammenfasst und die KPI-Dashboards (ROI, Killer-Features) mit Daten speist. Die Kachel Aggregator-Läufe zeigt, wann und ob dieser Job wirklich gelaufen ist und wie viele Daten er verarbeitet hat.
Wann brauchen Sie das? Wenn ein ROI-Dashboard leer aussieht und Sie unterscheiden müssen: "Der Job ist kaputt" vs. "Der Job lief, aber es gab gestern keine Aktivität."
Zugriff auf Aggregator-Läufe
- Öffnen Sie den Launchpad.
- Gehen Sie zur Gruppe Verwaltung.
- Klicken Sie auf Aggregator-Läufe (Refresh-Icon, Untertitel "KFROI-Hintergrundjob-Historie").
Eine List Report zeigt alle Job-Aufrufe; klicken Sie auf eine Zeile für Details.
Was die Report zeigt
| Spalte | Bedeutung |
|---|---|
| Lauf-ID | Eindeutige technische ID des Job-Aufrufs. |
| Ausgeführt am | Zeitstempel der Job-Fertigstellung (UTC). |
| Aggregationsdatum | Das UTC-Datum, das zusammengefasst wurde (typisch: Vortag D-1). |
| Status | SUCCESS, PARTIAL, NO_DATA, oder FAILED. |
| Verarbeitete Mandanten | Anzahl der aktiven Mandanten, über die der Aggregator iteriert hat (unabhängig davon, ob sie Daten hatten). |
| Verarbeitete Zeilen | Gesamtzahl der geschriebenen Telemetrie-Zeilen. |
| Dauer (ms) | Wie lange der Job lief. |
| Fehlermeldung | Bei Status FAILED: die Top-Level-Fehlermeldung. Bei Status PARTIAL leer — mandantenspezifische Fehler stehen im Anwendungsprotokoll. |
Status-Bedeutungen
- SUCCESS — Mindestens eine Zeile verarbeitet, keine Fehler.
- PARTIAL — Fertiggestellt, aber mindestens ein Mandant hatte einen Fehler.
- NO_DATA — Keine aktiven Mandanten mit Daten — nichts zu aggregieren (nicht fehlerhaft, erwartet).
- FAILED — Der Job ist abgestürzt; der Fehler wird in der Spalte Fehlermeldung angezeigt.
Wichtige Hinweise
- Schreibgeschützt — das Protokoll ist eine diagnostische Ansicht; Sie können Einträge nicht ändern.
- Nächtlicher Cron-Job — läuft täglich zu einer konfigurierten UTC-Stunde (default 02:00 UTC). Der Refresh-Button startet den Job NICHT neu — das ist nur eine Anzeige.
- Für Betriebspersonal (Boris) — diese Ansicht ist für Ops und Plattform-Admins, nicht für Retail-Planner.
- Leere ROI-Dashboards: Wenn ein Dashboard leer aussieht, prüfen Sie einen neuen NO_DATA-Eintrag — das bedeutet meist "wir hatten gestern keine Transaktionen", nicht "Bug".
5.2 Post-Mortem Dashboard
Wenn eine Promotion endet, sehen Planer eine kuratierte KPI-Seite, die ihre Leistung mit einer Vorabperioden-Baseline vergleicht. Die PromotionPerformance-Objektseite zeigt die Sektion Aktions-Insights (KPI-Kacheln) sowie fünf weitere Visualisierungs-Sektionen plus ein bedingtes A/B-Panel — jeweils als eigene Sektion (nicht ineinander verschachtelt):
- KPI-Kacheln — Einlösungen, Gesamtrabatt gewährt, Durchschnittliche Warenkorb-Delta, Aktive Tage. (Nur bestätigte Transaktionen — Simulator-Läufe sind ausgeschlossen.)
- Uplift-Vergleich — Liniendiagramm des durchschnittlichen täglichen Umsatzes während der Promotion im Vergleich zu einem 30-tägigen Baseline-Fenster vor der Promotion. Zwei Umschalter:
- Nur gleicher Wochentag — schränkt die Baseline auf Wochentage ein, die mit dem Aktionsfenster übereinstimmen.
- Tage mit anderen Aktionen ausschließen (strikter Modus) — schließt Baseline-Tage aus, an denen auch eine andere Promotion aktiv war (Standard AN).
- Top-10-Filialen — horizontales Balkendiagramm, gerankt nach Rabatt-Summe. Zeigt nur bestätigte Transaktionen. Klicken Sie auf einen Balken, um in gefilterte Berechnungsprotokolle zu gehen.
- Top-10-Artikel — gleiche Form, gerankt nach Artikel-Rabatten (nur bestätigte Transaktionen).
- Stunden-des-Tages-Heatmap — 24×7-Raster. Zellenfarbe entspricht der Anzahl der Anwendungen (nur bestätigte Transaktionen). (Simulator-Läufe werden nicht gezählt.)
- A/B-Konfidenzpanel — standardmäßig verborgen. Nur sichtbar, wenn die Promotion als Experiment markiert war (
isExperiment=true). Zeigt Kontroll- vs. Experiment-Transaktionszählungen, Konversionsraten, Umsatz, Durchschnittskorb, p-Wert und ein Gewinner-Abzeichen.
Best Practices
- Öffnen Sie das Dashboard frühestens einen Tag nach Ende der Promotion — die Nacht-Aggregation muss erst laufen.
- Nutzen Sie den Schalter "Tage mit anderen Aktionen ausschließen" (strikter Modus), wenn Ihre Promotion parallel zu anderen Aktionen lief, um Baseline-Verzerrungen zu vermeiden.
- Das A/B-Konfidenzpanel ist besonders wertvoll für Pilot-Entscheidungen — es zeigt einen statistischen p-Wert, nicht nur Rohumsatzzahlen.
5.3 Mandanten-Analytik
Letzte Aktualisierung: 2026-05-28
Als Mandanten-Manager oder Systemadministrator stellen Sie auf dieser Seite ein, welche Analysefunktionen für Ihr Mandanten-Konto aktiv sind und mit welchen Schwellwerten sie arbeiten. Die Seite ist eine Konfigurationsseite — sie zeigt keine Diagramme oder Kennzahlen. Die ausgewerteten Kennzahlen selbst finden Sie auf den Auswertungs-Dashboards (siehe Abschnitt 5.1 Promotion Impact ROI Dashboard und 5.2 Post-Mortem Dashboard).
Wann brauche ich diese Seite?
- Sie möchten Schwellwerte konfigurieren (z. B. ab wie viel Prozent Warenkorbnähe ein "Fast-Treffer"-Hinweis erscheint).
- Sie möchten datenschutzkritische Analysefunktionen gezielt aktivieren oder deaktivieren.
- Sie möchten die Zeitzone festlegen, in der Tages- und Stunden-Auswertungen berechnet werden.
Schwellwerte konfigurieren
- Öffnen Sie Mandanten-Analytik über das Launchpad.
- Klicken Sie auf Bearbeiten.
- Passen Sie die gewünschten Schwellwerte an:
- Near-Miss-Schwelle (%) — Wie nahe muss ein Warenkorb an einer Promotion sein, damit ein Hinweis erscheint? Standardwert: 30 %. Bereich: 5 – 100 %.
- Zeitzone — Legen Sie fest, in welcher Zeitzone Tages- und Stunden-Auswertungen berechnet werden (z. B. "Europe/Berlin"). Standard: UTC.
- Klicken Sie auf Speichern.
Achtung: Änderungen an der Zeitzone wirken sich auf die Darstellung aller historischen Tageswerte aus. Bestehende Aggregate werden nicht neu berechnet — nur neue Daten werden mit der neuen Zeitzone erfasst.
Datenschutzeinstellungen (DSGVO)
Einige Analysefunktionen erfordern Ihre ausdrückliche Aktivierung, da sie zusätzliche Daten sammeln:
| Feld | Standardmäßig | Beschreibung |
|---|---|---|
| Near-Miss-Analytik aktivieren | Aus | Erfasst detaillierte Daten darüber, welche Promotions Kunden knapp verpasst haben. Aktivieren Sie dies nur, wenn Ihr Datenschutzbeauftragter zugestimmt hat. |
| Produktive Near-Miss-Empfehlungen aktivieren | Aus | Zeigt Near-Miss-Hinweise auf dem Kassendisplay. Erfordert, dass die Near-Miss-Analytik aktiviert ist. |
| Produktive Nudges aktivieren | An | Zeigt abgestufte Hinweise ("Noch X € bis zum Rabatt") am POS. Kann deaktiviert werden, wenn die Hinweise unerwünscht sind. |
So aktivieren oder deaktivieren Sie eine Funktion:
- Öffnen Sie die Kachel Mandanten-Analytik im Launchpad.
- Klicken Sie auf Bearbeiten.
- Navigieren Sie zum Reiter Produktive Features (Teleportation) oder Telemetrie (Track 2) (Near-Miss + Schwelle).
- Schalten Sie den gewünschten Schalter um.
- Klicken Sie auf Speichern.
Änderungen werden binnen ~1 Minute wirksam (Prozess-Cache) — kein Server-Neustart erforderlich.
Häufige Fragen zu Mandanten-Analytik
Warum zeigt das Dashboard "Keine Daten"? Die Analysen basieren auf bestätigten Kassierungen. Simulationen werden nicht gezählt. Wenn Sie das System gerade eingerichtet haben oder nur Testtransaktionen durchgeführt haben, werden die Charts erst nach dem nächsten produktiven Kassiervorgang befüllt.
Können Analysedaten gelöscht werden? Aggregierte Tagesdaten werden dauerhaft aufbewahrt (kein automatisches Löschen). Rohdaten für Near-Miss-Ereignisse werden nach 30 Tagen automatisch bereinigt.
5.4 Coupon-Analyse
Der Bericht Coupon-Analyse (Launchpad → Berichte & Analytik → Kachel Coupon-Analytik) zeigt pro Coupon-Typ, wie viele Codes ausgestellt, eingelöst, abgelaufen oder storniert wurden. Die Einlösequote berechnet sich aus eingelösten Codes geteilt durch alle vergebenen Codes.
Nachkauf-Kennzahlen. Für Coupons, die am Kassenterminal als Nachkauf-Gutschein ausgegeben wurden (Ausgabekanal „POST_PURCHASE"), stehen zusätzliche Spalten zur Verfügung:
| Kennzahl | Bedeutung |
|---|---|
| Nachkauf ausgestellt | Anzahl der Codes, die über eine Nachkauf-Aktion ausgegeben wurden. |
| Nachkauf eingelöst | Anzahl davon, die später eingelöst wurden. |
| Nachkauf-Quote (%) | Eingelöst geteilt durch ausgestellt, in Prozent. Wenn noch kein Code ausgegeben wurde, bleibt das Feld leer. |
| Ø Tage bis Einlösung | Durchschnittliche Anzahl Tage zwischen Ausgabe und Einlösung. Nützlich, um die typische Rückkehr-Zeitspanne zu bewerten. |
| Ø Warenkorb bei Einlösung | Durchschnittlicher Warenkorbwert der Kassiervorgänge, bei denen ein Nachkauf-Coupon eingelöst wurde. |
Nachkauf-Kennzahlen auf der Coupon-Typ-Übersicht. Klicken Sie auf einen Coupon-Typ in der Tabelle, um die Übersicht (Object Page) zu öffnen. Dort finden Sie ein Nachkauf-Abschnitt mit den 5 wichtigsten Kennzahlen zur Nachkauf-Performance: ausgegeben, eingelöst, Einlösungsquote, durchschnittliche Tage bis Einlösung und durchschnittlicher Warenkorbwert. Diese Messwerte beziehen sich ausschließlich auf Codes, die über eine Nachkauf-Aktion ausgegeben wurden. Die Gesamtzahlen der Tabelle (Ausgestellt, Eingelöst, Einlösequote) zählen weiterhin alle Kanäle zusammen.
Coupon-Vergleich
Im Coupon-Analyse-Bericht können Sie 2–4 Nachkauf-Gutschein-Typen nebeneinander vergleichen, um zu sehen, welche Gutschein-Mechanik Kunden am schnellsten zurückbringt, am zuverlässigsten eingelöst wird und den höchsten Warenkorbwert auslöst.
So nutzen Sie den Coupon-Vergleich:
- Öffnen Sie den Coupon-Analyse-Bericht (Launchpad → Berichte & Analytik → Kachel Coupon-Analytik).
- Wählen Sie mittels der Kontrollkästchen links in der Tabelle 2–4 Nachkauf-Gutschein-Typen aus. Der Button Vergleichen ist deaktiviert, wenn Sie weniger als 2 Typen wählen. Wenn Sie mehr als 4 Typen wählen, erscheint eine Benachrichtigung.
- Klicken Sie auf Vergleichen. Die Vergleichsansicht öffnet sich.
Die Vergleichsansicht besteht aus zwei Zonen: oben ein Balkendiagramm für den schnellen visuellen Überblick, darunter das Scorecard mit den exakten Werten.
Das Balkendiagramm (obere Zone):
Am oberen Rand der Vergleichsansicht zeigt ein gruppiertes Balkendiagramm die drei primären Kennzahlen — Einlösungsrate, Rückkehr-Tempo (Ø Tage bis Einlösung) und Ø Warenkorb. Die Balken sind nach Coupon-Typ gruppiert. Jede Gruppe enthält einen Balken pro verglichenem Coupon-Typ. So lesen Sie die Werte auf einen Blick.
So lesen Sie die Balkenlänge:
- Für Einlösungsrate und Ø Warenkorb gilt: Ein längerer Balken steht für einen höheren und damit besseren Wert.
- Für Rückkehr-Tempo gilt: Ein kürzerer Balken steht für eine schnellere Rückkehr. Das Diagramm dreht die Achse nicht um. Neben dieser Kennzahl steht der Hinweis „kürzer = besser", der die Richtung erklärt.
Das Diagramm zeigt ausschließlich diese drei primären Kennzahlen. Die Kontext-Kennzahlen (ausgestellt, eingelöst) erscheinen nur im Scorecard, nicht im Diagramm. Ø Warenkorb (€) wird auf einer separaten rechten Achse dargestellt, damit die Balken für Einlösungsrate und Rückkehr-Tempo nicht durch den größeren €-Maßstab abgeflacht werden.
Das Vergleichs-Scorecard (untere Zone):
Die Vergleichstabelle zeigt einen Vergleich mit fünf Kennzahlen, eine Spalte pro ausgewähltem Coupon-Typ:
| Kennzahl | Bedeutung |
|---|---|
| Einlösungsrate (%) | Prozentsatz der ausgegebenen Codes, die eingelöst wurden. |
| Ø Tage bis Einlösung | Durchschnittliche Anzahl Tage zwischen Ausgabe und Einlösung — kürzer ist besser. |
| Ø Warenkorb (€) | Durchschnittlicher Warenkorbwert bei Einlösung. |
| Nachkauf ausgestellt | Anzahl der über eine Nachkauf-Aktion ausgegebenen Codes. |
| Nachkauf eingelöst | Anzahl der eingelösten Codes. |
Baseline und Differenzen: Der zuerst ausgewählte Coupon-Typ wird als Basis (Baseline) markiert. Alle anderen Spalten zeigen die Differenz zur Basis sowohl als absolute Werte als auch als Prozentanteile.
Best-in-Class Hervorhebung: Der beste Wert pro Kennzahl ist farblich hervorgehoben, sodass Sie schnell erkennen, welcher Gutschein-Typ in welcher Kategorie führt.
Konfidenz-Signal (n=X): Jede Spalten-Kopfzeile zeigt ein Traffic-Light-Signal basierend auf der Anzahl ausgegebener Codes:
- Grün — ≥ 100 Codes: statistische Unsicherheit gering, Ergebnisse zuverlässig.
- Gelb — 30–99 Codes: moderate Unsicherheit, Ergebnisse sollten mit Vorsicht interpretiert werden.
- Rot — < 30 Codes: hohe statistische Unsicherheit, Ergebnisse sind noch nicht aussagekräftig.
Hinweis bei Typ-Mischung: Falls die Vergleichsauswahl sowohl Einzelgutscheine (INDIVIDUAL) als auch Mehrfach-Gutscheine (GENERIC) enthält, zeigt eine Benachrichtigung, dass direkte Quoten-Vergleiche irreführend sein können (unterschiedliche Zielgruppen, Ausgabekanäle).
Fazit-Zeile: Am unteren Ende der Vergleichstabelle wird eine Zusammenfassung angezeigt, die beschreibt, welcher Coupon-Typ in den meisten Primär-Kennzahlen führt.
XLSX-Export: Klicken Sie auf Export XLSX, um die vollständige Vergleichstabelle als lokalisierte Excel-Datei (XLSX) herunterzuladen. Die Datei enthält alle Kennzahlen, Baseline-Differenzen und Konfidenz-Signale.
Zurück zur Listenansicht: Klicken Sie auf Zurück, um zur Coupon-Analyse-Listentabelle zurückzukehren. Ihre Filter und Selektionen bleiben erhalten.
5.5 Gratisartikel-Report
Der Gratisartikel-Report zeigt, wie oft das DRE kostenlose Artikel (FREE_ITEM Aktionen) wirklich ausgegeben hat und wie oft eine Ausgabe blockiert wurde, weil ein globales Limit (Schwellenwert pro Code) bereits erfüllt war. Dieser Report beantwortet die Frage: "Wie oft versuchten zwei Promotions, den gleichen Gratisartikel zu geben, sodass nur eine gewinnt?"
Zugriff auf den Gratisartikel-Report
- Öffnen Sie den Launchpad.
- Gehen Sie zur Gruppe Berichte & Analytik (Reports).
- Klicken Sie auf Gratisartikel-Zugabe (Untertitel "Tägliche Gratisartikel-Zugaben + wie oft eine Zugabe durch eine andere Promotion unterdrückt wurde").
Die List Report zeigt tägliche Aggregats-Zeilen; klicken Sie auf eine Zeile, um Details zu sehen.
Was der Report zeigt
| Spalte | Bedeutung |
|---|---|
| Datum | Das Geschäftsdatum der Aggregation. |
| Kassengruppe | Die POS-Gruppe (z. B. DOWNTOWN, MALL, OUTLET). |
| Gewährt | Anzahl der Gratisartikel-Zugaben, die tatsächlich auftraten. |
| Durch andere Promotion unterdrückt | Anzahl der Versuche, denselben Code zu gewähren, die aber wegen eines Limits blockiert wurden. |
| Zugabe-Kosten | Summe der Kosten der tatsächlich gewährten Gratisartikel (EUR). |
| Unbewertete Zugaben | Anzahl der Zugaben, denen das DRE keinen Preis zuordnen konnte (Datenqualitäts-Flag). |
Status-Bedeutungen und Gotchas
- Unterdrückt = globaler Schenkung-Cap: Wenn mindestens eine der beteiligten Promotionen
restrictToOnePerBasket=truesetzt, darf das DRE einen bestimmten Code pro Warenkorb nur einmal kostenlos geben. Wenn zwei solche Promotions den gleichen Code schenken wollen, gewinnt die höherprioritäre; die andere wird unterdrückt. Dies ist dasrestrictToOnePerBasket-gesteuerte globale Per-Code-Cap-Feature. - Unbewertete Zugaben: Das DRE konnte für diese Einheit keinen Preis auflösen (Preisouelle=UNKNOWN_ZERO). Die Zugabe wurde gewährt, aber Kosten sind unbekannt → zählt 0,00 EUR zu den Ausgaben (Datenqualitäts-Signal).
- Daten sind NICHT Echtzeit: Der Report wird nächtlich einmal über den VORHERIGEN UTC-Tag aggregiert. Die neuesten Live-Transaktionen von heute sehen Sie morgen.
- Kassengruppe 'UNASSIGNED': Telemetry ohne POS-Gruppe-Zuordnung wird hier zusammengefasst.
Wichtige Hinweise
- Schreibgeschützt — das ist ein reiner Analyse-Report.
- Rollen: Zugriff für Admin, PromotionManager, BudgetManager.
- Filter: Sie können nach Datum und Kassengruppe filtern.
Phase 6 — Compliance
6.1 Audit-Log und Compliance
Letzte Aktualisierung: 2026-05-28
Das DRE führt ein lückenloses Protokoll aller sicherheitsrelevanten Aktionen. Der Audit-Log richtet sich an Compliance-Verantwortliche, Revisoren und Systemadministratoren.
Beispiel: Für die Quartals-Compliance-Prüfung möchten Sie alle Genehmigungs- und Ablehnungsereignisse des letzten Quartals exportieren. Der Audit-Log liefert das in wenigen Minuten.
Was wird protokolliert?
| Aktion | Wird erfasst |
|---|---|
| Promotion aktivieren / deaktivieren | Ja — mit Zeitstempel und Benutzer |
| Promotion zur Genehmigung einreichen | Ja |
| Genehmigung erteilen / ablehnen | Ja — mit Kommentar |
| Campaign sperren / entsperren | Ja |
| Webhook-Replay ausgelöst / Auslieferung übersprungen | Ja |
| Fehlgeschlagene Anmeldung / Sicherheitsereignis (z. B. abgewiesener Zugriff) | Ja |
Hinweis: Für Promotionen, Budgets und andere Geschäftsobjekte zeigt der Audit-Log jetzt deren aussagekräftigen Namen (z. B. "Sommeraktion 2026" statt nur einer technischen ID), was die Nachverfolgung erleichtert.
Audit-Log öffnen und filtern
- Öffnen Sie über das Launchpad die Audit-Log-App.
- Sie können die Liste nach Zeitstempel sortieren, um die neuesten Ereignisse oben anzuzeigen.
- Nutzen Sie die Filterleiste, um die Ansicht einzugrenzen:
- Aktion — z. B. nur "Aktivieren" oder nur "Genehmigung".
- Akteur — alle Aktionen eines bestimmten Benutzers.
- Zeitstempel — von/bis Datum.
- Objekttyp (Entität) — z. B. nur Ereignisse zu Promotions oder Budgets. Einen Filter für eine einzelne Promotion gibt es nicht.
Eintrag im Detail ansehen
Klicken Sie auf einen Eintrag in der Liste, um die vollständigen Details zu sehen:
- Zeitstempel — genaues Datum und Uhrzeit.
- Akteur — wer die Aktion ausgeführt hat.
- Aktion — was genau getan wurde.
- Betroffenes Objekt — Typ (z. B. Promotions, Budgets), Name und technische ID.
- Kommentar — bei Genehmigungen: der Kommentar des Prüfers.
SIEM-Export für externe Systeme
Wenn Ihr Unternehmen ein Security-Information-and-Event-Management-System (SIEM) einsetzt, kann der Audit-Log automatisch als JSON-Lines-Datei exportiert werden. Der Export läuft täglich als Hintergrundjob.
Was wird exportiert: Alle Einträge aus der Audit-Log-Tabelle (Promotion-Aktivierungen, Genehmigungen, Ablehnungen, Webhook-Ergebnisse, Sicherheitsereignisse). Coupon-Einlösungen sind in einem separaten RedemptionLogs-Journal enthalten und nicht im Audit-Export.
Wo sind die Exportdateien? Die Konfiguration des SIEM-Exports (Ziel-Pfad, Authentifizierung) erfolgt durch Ihre IT-Abteilung.
Hinweis: Der SIEM-Export gibt ausschließlich Audit-Log-Einträge aus — keine Transaktionsdaten und keine persönlichen Kundendaten (keine Kunden-IDs im Audit-Log).
Häufige Fragen zum Audit-Log
Wie lange werden Einträge aufbewahrt? Audit-Log-Einträge werden nicht automatisch gelöscht. Wenden Sie sich an Ihren Systemadministrator, falls eine gesetzliche Löschpflicht erfüllt werden muss.
Kann ich Einträge nachträglich ändern oder löschen? Nein — der Audit-Log ist schreibgeschützt. Kein Benutzer (auch kein Administrator) kann Einträge bearbeiten oder löschen. Das ist eine bewusste Designentscheidung für Compliance-Anforderungen.
Ein Eintrag fehlt — warum? Nur die in der obigen Tabelle aufgeführten Aktionen werden protokolliert. Lesezugriffe (z. B. Promotion-Liste öffnen) werden nicht erfasst. Falls ein Aktivierungs- oder Genehmigungsereignis fehlt, wenden Sie sich an den Support.
Phase 7 — Erweiterte Themen
7.1 Lokale Filial-Instanz
Letzte Aktualisierung: 2026-05-28
Die lokale Filial-Instanz ist eine schlanke DRE-Kopie, die direkt im Filial-Server läuft. Sie wertet Kassenbons aus, ohne eine Verbindung zur zentralen Cloudplattform zu benötigen. Sobald die Verbindung wieder verfügbar ist, synchronisiert sie Daten automatisch.
Wann benötige ich eine lokale Instanz?
- Ihre Filiale hat eine unzuverlässige oder langsame Internetverbindung.
- Sie möchten die Antwortzeiten am Kassenterminal minimieren (keine Cloud-Latenz).
- Ihr Betrieb muss auch bei Internetausfällen voll funktionsfähig bleiben.
Was sieht der Filial-Operator?
Der Filial-Operator arbeitet mit der Lokalen Admin-App (erreichbar unter http://<Filialserver>:4004/local-admin). Wenn Sie die App ohne aktive Sitzung öffnen, fordert das System Sie zur Anmeldung auf und führt Sie zur Login-Seite. Danach können Sie sich anmelden.
Im Abschnitt Status der BTP-Verbindungs-Objektseite (Lokale Admin-App) sehen Sie:
| Anzeige | Bedeutung |
|---|---|
| Verbindungsstatus | Grün = mit BTP verbunden, Gelb = ungetestet (noch kein Verbindungstest), Rot = getrennt/Fehler. Der Sonden-/Halboffen-Zustand und der Offline-Modus werden separat über die Felder Circuit-Breaker-Status und BTP-Status angezeigt. |
| Letzter Sync | Zeitstempel der letzten erfolgreichen Datensynchronisation |
| Letzter Sync-Status | Ergebnis der letzten Synchronisation |
| Ausstehende Transaktionen | Anzahl der Kassierungen, die noch nicht zu BTP übertragen wurden |
| Promotionen geladen | Anzahl der Promotionen, die aktuell lokal verfügbar sind |
Heartbeat-Monitoring
Die lokale Instanz überwacht laufend, ob die Verbindung zur zentralen Cloudplattform verfügbar ist ("Herzschlag"). Sie müssen nichts manuell tun — das Monitoring läuft automatisch im Hintergrund.
- Verbunden (Grün): Alle Kassierungen laufen über die Cloud — maximale Aktualität der Promotionsdaten.
- Offline (Rot): Die Cloud ist nicht erreichbar. Kassierungen werden lokal berechnet und als ausstehende Transaktionen gespeichert.
- Probe (Gelb): Das System testet gerade, ob die Verbindung stabil ist. Kassierungen laufen noch lokal, bis die Stabilität bestätigt ist.
Hinweis für den Operator: Wenn die Verbindung längere Zeit im Offline-Modus bleibt, prüfen Sie bitte den Router und die Internetverbindung. Die lokalen Promotionsdaten können veralten, wenn der letzte Sync länger als 24 Stunden zurückliegt.
Synchronisation zwischen Filiale und Cloud
Die Synchronisation läuft in zwei Richtungen:
-
Promotionsdaten von der Cloud in die Filiale: Neue und geänderte Promotions werden automatisch alle 5 Minuten heruntergeladen (konfigurierbar). Das stellt sicher, dass die Filiale immer aktuelle Aktionen kennt.
-
Transaktionen aus der Filiale zur Cloud: Jede bestätigte Kassierung wird zur Cloud übertragen. Wenn die Verbindung unterbrochen war, werden alle aufgesammelten Transaktionen automatisch nachgeliefert, sobald die Verbindung wieder steht.
Manuelle Synchronisation auslösen:
- Öffnen Sie die Lokale Admin-App.
- Klicken Sie auf Sync Now (die Schaltflächen der Operator-App sind englisch beschriftet).
- Das System zeigt das Ergebnis unmittelbar an — Erfolg oder eine Fehlermeldung mit Ursache.
Verbindung testen
Wenn Sie unsicher sind, ob die Verbindung zur Cloud funktioniert:
- Öffnen Sie Lokale Admin → BTP-Verbindung (BTP Connection).
- Klicken Sie auf Test Connection (die Schaltfläche ist englisch beschriftet).
- Das System zeigt entweder "Verbindung erfolgreich" oder eine genaue Fehlermeldung (z. B. falsche Zugangsdaten, fehlende Berechtigung).
Häufige Fragen zur lokalen Instanz
Wie lange kann die Filiale offline arbeiten? Unbegrenzt — solange die Promotionsdaten noch nicht abgelaufen sind. Das Feld Letzter Sync in der Admin-App zeigt an, wie frisch die lokal gespeicherten Daten sind.
Was passiert mit Rabatten, die während des Offline-Betriebs gewährt wurden? Alle Kassierungen werden als ausstehende Transaktionen gespeichert und nach Verbindungswiederherstellung zur Cloud übertragen. Wenn ein Promotion-Budget dabei überschritten wurde, wird die Überschreitung im Budget-Bericht als Warnung markiert — die Transaktionen selbst werden nicht storniert.
Wie richte ich eine lokale Instanz ein? Die vollständige Einrichtungsanleitung (Docker-Installation, Zugangsdaten, Netzwerkkonfiguration) finden Sie im separaten Dokument Lokale Filial-Installation (für IT-Administratoren).
7.2 Mandanten-Konfiguration
Als Systemadministrator können Sie das Verhalten des DRE-Mandanten über die Mandanten-Konfiguration anpassen. Diese Einstellungen betreffen das gesamte Mandanten-Konto und erfordern Administrator-Berechtigungen.
Genehmigungsworkflow aktivieren
Standardmäßig können Promotions direkt vom Entwurf in den aktiven Zustand wechseln. Wenn Sie den Freigabeprozess erzwingen möchten, aktivieren Sie das Flag Genehmigung vor Aktivierung erforderlich:
- Öffnen Sie Mandanten-Konfiguration über das Launchpad.
- Klicken Sie auf Bearbeiten.
- Schalten Sie Genehmigung vor Aktivierung erforderlich auf An.
- Klicken Sie auf Speichern.
Ab diesem Zeitpunkt müssen alle Promotions den Genehmigungsworkflow durchlaufen (siehe Abschnitt 3.1 Freigabeprozess).
Analysen-Einstellungen
Die Analyse-Konfiguration (Near-Miss-Schwellwert, Zeitzone, DSGVO-Flags) wird über die Mandanten-Analytik-App verwaltet — siehe Abschnitt 5.3 Mandanten-Analytik.
Passwort zurücksetzen (Lokale Instanz)
Für die lokale Filial-Instanz gibt es ein CLI-Tool zur Passwortrücksetzung. Wenden Sie sich bei Bedarf an Ihre IT-Abteilung — die vollständige Anleitung befindet sich im Dokument Lokale Filial-Installation.
Wichtig: Ändern Sie das Standard-Passwort der lokalen Instanz sofort nach der Erstinstallation. Das Standard-Passwort ist in der Installationsanleitung dokumentiert.
7.3 Demo-Umgebung einrichten
Als Administrator können Sie Demoumgebungen für Schulungen, Kundenvorführungen oder Testzwecke mit realistischen Beispieldaten vorbereiten. Das DRE bietet dazu automatisierte Skripte, die eine vollständige Demo-Landschaft aufbauen und verwalten.
Demo-Daten laden (seed:demo)
Das Skript npm run seed:demo füllt die Datenbank mit einer kuratierten Demo-Kampagne basierend auf deutsche Einzelhandelszenarien:
Was wird eingespielt:
- 5 Promotions — vollständige Promotion-Lebenszyklus: Rabatt auf Artikelgruppe (z. B. "10 % auf Elektroartikel"), Kassenbon-Rabatt, Bundle-Angebot (Grillset), Coupon-Promotion und Kundenkarten-Treuebonus.
- 2 Kampagnen — "Sommerkampagne 2026" (aktiv) und "Herbst-Aktionen 2026" (Entwurf).
- 2 Budgets — mit Finanzierungsanteilen (z. B. 60 % Lieferant, 40 % Marketingabteilung).
- 2 Stakeholder — ein externer Supplier und eine interne Marketingabteilung.
- Coupon-Codes — 3 vorgenerierte Codes zum Testen der Coupon-Einlösung.
- Bedingungen und Aktionen — vollständig konfiguriert für jede Promotion.
Anwendungsfall: Sie möchten einem neuen Kundenstamm das System demonstrieren und brauchen innerhalb von Sekunden eine realistische Szenario-Landschaft.
Nutzung:
npm run seed:demo
Das Skript ist idempotent — Sie können es mehrfach ausführen, ohne Duplikate zu erzeugen. Es prüft vor jedem Insert, ob die Daten bereits vorliegen.
Nach dem Ausführen navigieren Sie über das Launchpad zur App Promotionen, um die eingespielten Aktionen zu sehen. Testen Sie diese mit dem Simulator (Abschnitt 4.1 Simulator).
Test-Residuen bereinigen (db:clean)
Während Ihrer Testläufe und Entwicklung entstehen Einträge mit Test-Präfixen (z. B. TEST_, BUG-P-, BUG-PT-). Das Skript npm run db:clean entfernt diese Einträge sicher wieder.
Verhalten:
- Dry-Run (Standard):
npm run db:cleanzeigt, welche Einträge gefunden wurden, ohne sie zu löschen. Das ist der sichere Standard. - Mit Löschen:
npm run db:clean -- --applylöscht die gefundenen Einträge wirklich.
Das Skript durchsucht folgende Entitäten nach Test-Präfixen: Promotionen, Kampagnen, Budgets, Stakeholder, Coupon-Typen und weitere.
Beispiel:
# Dry-Run — was würde gelöscht?
npm run db:clean
# Wirklich löschen
npm run db:clean -- --apply
Hinweis: Der Dry-Run beendet sich mit Exit-Code 1, wenn Residuen gefunden wurden. Das erlaubt CI-Pipelines zu erkennen, wenn die DB nicht sauber ist.
Demo-Daten für Auswertungs-Dashboard laden (seed:kfroi-demo)
Das Promotion Impact ROI-Dashboard (Abschnitt 5.1 Promotion Impact ROI Dashboard) benötigt Transaktions-Daten, um seine 5 Diagramme zu rendern. In einer frischen Umgebung zeigt das Dashboard "Keine Daten".
Das Skript npm run seed:kfroi-demo spielt 6 Tage synthetische Telemetrie-Daten ein, damit Sie die Charts sofort sehen und demo-bereit sind.
Was wird eingespielt:
- Schwellwert-Lücken: Szenarien, in denen Kunden knapp an einem Rabatt vorbeigeschrammt sind.
- Near-Miss-Daten: Missbrauchte Promotion-Chancen pro Tag.
- Einsparungen-Zusammenfassung: Gesamtkunden-Einsparungen über 6 Tage.
- Stufenweise Empfehlungen: Hinweise in verschiedenen Checkout-Phasen.
- A/B-Test-Daten: Varianten-Uplift und Konversionsraten.
Nutzung:
npm run seed:kfroi-demo
Das Skript führt automatisch die Aggregations-Jobs für die letzten 6 Tage aus. Öffnen Sie danach im Launchpad die App Berichte & Analytik → Promotionswirkung & ROI-Kachel, um die Diagramme mit Daten gefüllt zu sehen.
Hinweis: Die Daten sind synthetisch und für Demo-Zwecke erstellt. Sie basieren nicht auf echten Kassierungen. Nach dem Ausführen echter Promotions ersetzen die echten Telemetrie-Daten die Demo-Daten.
Produktions-Schutzmaßnahme: Test-Namen abgelehnt
Auf dem Produktions-Profil wird automatisch ein Schutz aktiviert: Sie können keine Promotion, Kampagne, Budget oder andere Entität mit einem Namen anlegen oder umbenennen, der mit TEST_, BUG-P oder BUG-PT beginnt.
Grund: Die Datenbank kann versehentlich mit Test-Residuen überlaufen, insbesondere wenn Demo-Umgebungen in der Produktion getestet werden.
Verhalten:
- Versuch, eine Promotion mit dem Namen
TEST_Sommerkampagnezu erstellen: HTTP 400 mit Meldung "Names starting with TEST_, BUG-P, or BUG-PT are reserved for testing and are not allowed in production." - Dev/Test/Local-Profile: Der Schutz ist deaktiviert. Sie können frei Test-Namen verwenden.
Workaround: Benennen Sie Ihre Testpromozionen mit Datum oder Anlagennummer, z. B. 2026-06-02-Demo-Kampagne oder PROMO-999-Schulung.
Nächste Schritte
- Führen Sie
npm run seed:demoaus, um eine Demo-Umgebung zu laden. - Öffnen Sie den Simulator und testen Sie eine der eingespielten Promotions gegen einen Beispiel-Warenkorb.
- Wenn Sie das ROI-Dashboard demonstrieren möchten:
npm run seed:kfroi-demoausführen und dann im Launchpad die Analyse-App öffnen. - Vor dem nächsten Test oder der nächsten Demo:
npm run db:clean(Dry-Run) ausführen, um Altlasten zu erkennen, und ggf. mit--applyaufräumen.
7.4 Externe Benachrichtigungen — Webhook-Abonnements und fehlgeschlagene Auslieferungen
Letzte Aktualisierung: 2026-06-10
Webhooks sind externe Benachrichtigungen, die das DRE an Partnersysteme sendet — beispielsweise wenn eine Promotion aktiviert wird oder ein Kassenbon ein Budget erreicht. Manchmal schlagen diese Auslieferungen fehl: Das Empfänger-System antwortet nicht, das Netzwerk bricht ab, oder eine temporäre Überlastung verursacht einen Timeout.
Voraussetzung — Redis und Webhook-Worker
Webhooks erfordern zwei technische Komponenten:
- Redis-Cache — zur Verwaltung der Auslieferungswarteschlange und des Retry-Zustands.
- Webhook-Auslieferungs-Worker — ein kontinuierlich laufender Prozess, der ausstehende Auslieferungen (Status PENDING) verarbeitet und an die Empfänger-URLs sendet.
Ohne diese Komponenten können Sie ein Webhook-Abonnement anlegen und speichern, und das DRE erstellt auch Auslieferungs-Einträge im Outbox. Jedoch: Die Einträge bleiben im Status PENDING — es findet keine aktive Zustellung statt. Das DRE gibt eine Warnung in den Startup-Logs aus ("Webhook delivery worker not started (REDIS_URL unset)…") und der Health-Endpoint (/health) meldet den Status webhookDelivery: inactive.
Fragen Sie Ihren Systemadministrator:
- Ist Redis verfügbar und konfiguriert?
- Läuft der Webhook-Delivery-Worker?
Wenn Sie unsicher sind, prüfen Sie die Startup-Logs des DRE oder fragen Sie den Betreiber.
Webhook-Abonnement anlegen
Sie konfigurieren Webhooks über die Webhook-Abonnements-App in der Admin-Oberfläche. Jedes Abonnement definiert, an welche externe URL das DRE Benachrichtigungen sendet und bei welchen Ereignissen.
Schritte zum Anlegen eines Webhook-Abonnements:
- Öffnen Sie das Launchpad und navigieren Sie zur Gruppe Verwaltung (Administration).
- Klicken Sie auf die Tile Webhook-Abonnements (Webhook Subscriptions).
- Wählen Sie Anlegen (Create) in der Symbolleiste.
- Füllen Sie das Anlage-Formular:
- Callback-URL (erforderlich): Die HTTPS-Adresse des Empfänger-Systems, an das das DRE die Benachrichtigungen sendet. Beispiel:
https://api.example.com/webhooks/promotions. - Event Filter (erforderlich): Legt fest, welche Ereignisse einen Webhook auslösen. Drei Formen sind möglich:
*(alle Ereignisse), ein exakter Ereignis-Name (z. B.PROMOTION_ACTIVATED), oder ein Präfix-Muster<Präfix>.*(z. B.ImportJobs.*). Wichtig: Die Promotions-, Budget-, Transaktions- und Coupon-Ereignisse enthalten keinen Punkt im Namen (siehe Event-Katalog unten). Ein Muster wiePromotions.*odercoupon.*trifft daher nichts — um diese Ereignisse zu empfangen, verwenden Sie*oder den exakten Namen. - Secret (erforderlich): Ein gemeinsames Geheimnis zum Signieren der Webhook-Anfragen. Mindestens 16 Zeichen. Das DRE verwendet diesen Secret, um HMAC-SHA256-Signaturen zu berechnen, die der Empfänger zur Validierung nutzt.
- Callback-URL (erforderlich): Die HTTPS-Adresse des Empfänger-Systems, an das das DRE die Benachrichtigungen sendet. Beispiel:
- Optional — passen Sie die Wiederholungs-Parameter an:
- Aktiv: Schalten Sie das Abonnement ein/aus (Standardwert: An).
- Max. Versuche: Maximale Anzahl automatischer Wiederholungsversuche bei fehlgeschlagener Zustellung (Standardwert: 5).
- Backoff-Strategie: Verzögerungsmodell für Wiederholungen (EXPONENTIAL — Standard — oder FIXED).
- Retry-Intervall: Wartezeit zwischen Wiederholungsversuchen (in Millisekunden; nur bei Backoff-Strategie FIXED wirksam).
- Klicken Sie Anlegen im Dialogfuß, um das Abonnement zu speichern.
Verfügbare Ereignisse (Event-Katalog):
Diese Ereignisse können Sie abonnieren. Achten Sie auf die Schreibweise: Die Lifecycle-Ereignisse enthalten keinen Punkt und sind daher nur über * oder ihren exakten Namen erreichbar, nicht über ein .*-Muster.
| Ereignis | Wann es ausgelöst wird | Erreichbar über |
|---|---|---|
PROMOTION_ACTIVATED | Eine Promotion wird aktiviert | * oder exakt |
PROMOTION_DEACTIVATED | Eine Promotion wird deaktiviert | * oder exakt |
PROMOTION_EXPIRED | Eine Promotion wird automatisch deaktiviert, weil ihr Gültigkeitszeitraum abgelaufen ist | * oder exakt |
PROMOTION_SUBMITTED | Eine Promotion wird zur Freigabe eingereicht | * oder exakt |
PROMOTION_APPROVED | Eine Promotion wird genehmigt | * oder exakt |
PROMOTION_REJECTED | Eine Promotion wird abgelehnt | * oder exakt |
PROMOTION_ARCHIVED | Eine Promotion wird archiviert | * oder exakt |
CAMPAIGN_ACTIVATED | Eine Kampagne wird aktiviert | * oder exakt |
CAMPAIGN_COMPLETED | Eine Kampagne wird abgeschlossen | * oder exakt |
TRANSACTION_CONFIRMED | Eine Kassentransaktion wird bestätigt | * oder exakt |
LOYALTY_POINTS_AWARDED | Eine bestätigte Transaktion hat Treuepunkte vergeben (nur wenn Punkte > 0; wird zusätzlich zu TRANSACTION_CONFIRMED ausgelöst) | * oder exakt |
TRANSACTION_RETURNED | Eine bestätigte Transaktion enthielt Retourenpositionen (nur bei Retouren; wird zusätzlich zu TRANSACTION_CONFIRMED ausgelöst) | * oder exakt |
PROMOTION_UPDATED | Eine Bearbeitung hat ein wesentliches Feld einer Promotion geändert (Rabattwert, Gültigkeitszeitraum, Exklusivität) — rein kosmetische Änderungen wie Name oder Beschreibung lösen es nicht aus | * oder exakt |
BUDGET_THRESHOLD_REACHED | Ein Budget erreicht seinen Schwellenwert | * oder exakt |
BUDGET_EXHAUSTED | Ein Budget ist vollständig verbraucht (zusätzlich zu BUDGET_THRESHOLD_REACHED) | * oder exakt |
COUPON_ISSUED, COUPON_REDEEMED, COUPON_CANCELLED | Coupon-Lebenszyklus (ausgestellt / eingelöst / Reservierung storniert) | * oder exakt |
COUPON_EXPIRED | Ein Couponcode erreicht den Status ABGELAUFEN | * oder exakt |
COUPON_BATCH_COMPLETED | Ein Coupon-Auffüllungs-Batch ist abgeschlossen | * oder exakt |
COUPON_POOL_LOW | Der verfügbare Couponbestand fällt unter den konfigurierten Schwellenwert | * oder exakt |
ImportJobs.SUCCEEDED, ImportJobs.FAILED | Stammdaten-Import abgeschlossen | *, ImportJobs.* oder exakt |
ArticleImportJobs.SUCCEEDED, ArticleImportJobs.FAILED | Artikelimport-Job erfolgreich abgeschlossen oder fehlgeschlagen | *, ArticleImportJobs.* oder exakt |
Beispiel: Um über alle Promotions-Statuswechsel benachrichtigt zu werden, legen Sie entweder mehrere Abonnements mit den exakten Namen an (PROMOTION_ACTIVATED, PROMOTION_DEACTIVATED, …) oder ein einzelnes Abonnement mit * (alle Ereignisse).
Für Entwickler: Die genauen JSON-Datenmodelle, Signatur-Prüfung und Zustellgarantien je Ereignis stehen in der API-Referenz unter „Webhook Events“.
Wichtig — Sicherheit des Secret:
Das Secret wird nur während der Anlage angezeigt. Nach dem Speichern wird es nicht mehr in der Liste oder auf der Detail-Seite gezeigt — es ist nur als sichere Hash gespeichert. Wenn Sie den Secret verlieren, wählen Sie Bearbeiten, tragen im Feld Secret einen neuen Wert ein und speichern; das Feld erscheint beim Bearbeiten leer und überschreibt beim Speichern den alten Secret. Einen "Secret anzeigen"-Wizard gibt es nicht — der alte Wert wird nie wieder angezeigt. Wichtig: Sobald Sie den Secret ändern, signiert das DRE alle folgenden Webhooks mit dem neuen Wert. Aktualisieren Sie den Secret gleichzeitig im Empfänger-System, sonst schlägt dort die Signatur-Prüfung fehl und die Auslieferungen landen als DEAD_LETTER.
Nächste Schritte nach der Anlage:
Nach dem Speichern ist das Webhook-Abonnement aktiv. Das DRE sendet nun Benachrichtigungen an die Callback-URL für alle Ereignisse, die dem Event Filter entsprechen. Sie können die App Externe Benachrichtigungen öffnen, um zu prüfen, ob Zustellungen erfolgreich sind (Status: DELIVERED, PENDING, oder DEAD_LETTER).
Um zu überprüfen, dass Ihr Empfänger-System die Benachrichtigungen verarbeitet, verwenden Sie die Aktion Test-Zustellung. Diese Schaltfläche finden Sie auf dem Webhook-Abonnement (Liste oder Detail-Seite). Sie sendet ein synthetisches Test-Ereignis an die Callback-URL, ohne dass dafür ein echtes Promotion- oder Coupon-Ereignis eintreten muss. Die Test-Zustellung ist eine eigenständige Funktion und unterscheidet sich von der Replay-Funktion, die eine bereits fehlgeschlagene Auslieferung erneut in die Warteschlange stellt.
Lifecycle-Webhooks (Aktivierung/Deaktivierung): Wenn Sie eine Promotion aktivieren oder deaktivieren und eine aktive Webhook-Abonnement passt, erstellt das DRE zuverlässig einen Outbox-Eintrag (Status: PENDING). Diesen Eintrag finden Sie in der Webhook-Auslieferungsliste zur Überwachung.
Das DRE macht mehrfache Versuche automatisch, aber nach 5 automatischen Versuchen wird eine Auslieferung als DEAD_LETTER (endgültig fehlgeschlagen) markiert. Die Replay-Funktion ermöglicht es Ihnen, eine fehlgeschlagene oder ausstehende Auslieferung manuell erneut in die Warteschlange einzureihen, ohne Datenbankzugriff.
Wann benötige ich die Replay-Funktion?
- Ein Webhook ist hängengeblieben (Status: PENDING), und das Empfänger-System wurde inzwischen repariert.
- Ein Webhook ist endgültig fehlgeschlagen (Status: DEAD_LETTER), und Sie möchten es nach der Problemlösung erneut versuchen.
- Sie möchten schnell reagieren, ohne IT-Personal um Datenbankzugriff zu bitten.
Workflow: Fehlgeschlagene Webhook-Auslieferungen erneut senden
-
Öffnen Sie über das Launchpad die App Externe Benachrichtigungen.
-
Die Liste zeigt alle Webhook-Auslieferungen mit ihren Status-Werten:
- PENDING — ausstehend, wird gerade verarbeitet oder wartet auf nächsten Versuch.
- DELIVERED — erfolgreich zugestellt.
- DEAD_LETTER — nach 5 Versuchen fehlgeschlagen.
-
Suchen Sie die Zeile mit dem fehlgeschlagenen Webhook. Klicken Sie darauf, um sie auszuwählen.
-
In der Symbolleiste der Tabelle (oben) können Sie die Schaltfläche Wiederholen sehen:
- Aktiviert — wenn die Zeile Status DEAD_LETTER oder PENDING hat.
- Deaktiviert — wenn die Zeile Status DELIVERED hat (diese Webhooks brauchen keine Wiederholung).
-
Klicken Sie auf Wiederholen. Das DRE setzt den Status zurück auf PENDING und reiht die Auslieferung erneut in die Verarbeitungswarteschlange ein.
-
Der Webhook-Worker verarbeitet ihn asynchron. Die Listendarstellung aktualisiert sich automatisch und zeigt den neuen Status.
Limits und Sicherheit
Max-Replay-Limit = 5: Jedes Mal, wenn Sie auf Wiederholen klicken, wird ein manueller Replay gezählt. Nach 5 manuellen Replays derselben Auslieferung wird die Schaltfläche deaktiviert und eine Fehlermeldung angezeigt: "Max replay limit (5) reached for this webhook." Das schützt vor Endlosschleifen.
Hinweis: Die 5 manuellen Replays sind separat von den 5 automatischen Versuchen gezählt. Eine Auslieferung mit 5 automatischen Versuchen und 0 Replays kann also 5 Mal manuell wiederholt werden.
Audit-Trail: Jedes manuelle Replay wird im Audit-Log (Abschnitt 6.1 Audit-Log und Compliance) aufgezeichnet mit der Aktion WEBHOOK_REPLAY_TRIGGERED. Das stellt sicher, dass Compliance-Prüfer nachvollziehen können, wer das Replay ausgelöst hat.
Häufige Fragen
Warum ist die Schaltfläche "Wiederholen" deaktiviert? Die Schaltfläche ist nur aktiv für Status DEAD_LETTER oder PENDING. Bei Status DELIVERED bedeutet das, der Webhook war bereits erfolgreich zugestellt — eine Wiederholung ist nicht nötig. Wenn Sie versuchen, eine DELIVERED-Zeile erneut zu senden, zeigt das System die Meldung: "Cannot replay a DELIVERED webhook."
Was passiert, wenn das Empfänger-System immer noch nicht antwortet? Der Worker macht einen neuen Versuch. Wenn er fehlschlägt, wird die Auslieferung wieder zu DEAD_LETTER gesetzt. Sie können dann erneut eine Wiederholung auslösen — bis zu 5 Mal. Falls alle 5 Replays fehlschlagen, wenden Sie sich an Ihren Systemadministrator, um das Empfänger-System zu überprüfen.
Kann ich mehrere Webhooks auf einmal replays? Diese Version unterstützt nur Einzel-Wiederholungen: Sie wählen eine Zeile aus und senden sie erneut.
Nächste Schritte
- Öffnen Sie die Externe Benachrichtigungen-App und suchen Sie nach Auslieferungen mit Status DEAD_LETTER.
- Wenden Sie sich an den Betreiber des Empfänger-Systems, um das Problem zu diagnostizieren.
- Wenn das Problem gelöst ist, senden Sie die Auslieferung erneut und beobachten Sie den neuen Status.
- Im Audit-Log können Sie das Replay-Ereignis später nachschlagen.
Phase 8 — Anhang
8.1 Troubleshooting
1. Lokaler Verbindungsstatus zeigt dauerhaft "Offline"
Symptome: Der Verbindungsstatus in der Lokalen Admin-App zeigt dauerhaft Rot (Offline). Kassierungen laufen lokal, aber keine Synchronisation.
Mögliche Ursachen:
- BTP-URL ist falsch oder vom Filialnetzwerk aus nicht erreichbar.
- OAuth2-Zugangsdaten (Client-ID / Client-Secret) sind abgelaufen oder ungültig.
- Firewall-Regeln blockieren ausgehende HTTPS-Verbindungen vom lokalen Server zur Cloud.
Lösung:
- Öffnen Sie Lokale Admin → Kommunikationssystem → klicken Sie auf Verbindung testen.
- Prüfen Sie die Fehlermeldung. Wenn sie "Auth OK, aber fehlende SyncService-Berechtigung" lautet, lassen Sie den XSUAA-Service-Schlüssel mit den richtigen Berechtigungen neu erstellen.
- Stellen Sie sicher, dass die BTP-URL korrekt ist (muss mit
https://beginnen). - Prüfen Sie die Netzwerkkonnektivität vom Server.
2. Promotionsdaten wirken veraltet — neue Aktionen erscheinen nicht
Symptome: Das Feld "Datenalter" in der Lokalen Admin-App ist Stunden oder Tage alt. Neue Promotions aus der Cloud erscheinen nicht.
Mögliche Ursachen:
- Der Sync-Dienst läuft nicht (BTP-Zugangsdaten nicht konfiguriert).
- Der Verbindungsstatus ist Offline und Delta-Sync kann BTP nicht erreichen.
Lösung:
- Öffnen Sie die Lokale Admin-App → Kommunikationssystem. Prüfen Sie Letzter Sync und Letzter Sync-Status.
- Klicken Sie auf Jetzt synchronisieren, um einen sofortigen Sync auszulösen, und beobachten Sie das Ergebnis.
- Wenn der Sync fehlschlägt, zeigt die App eine detaillierte Fehlermeldung (Erfolg oder Fehlergrund).
3. Ausstehende Transaktionen wachsen — keine Übertragung zur Cloud
Symptome: Der Zähler Ausstehende Transaktionen in der Admin-App wächst. Transaktionen erreichen die Cloud nicht.
Mögliche Ursachen:
- Cloud ist nicht erreichbar (Offline-Modus aktiv).
- Alle Transaktionen haben ihre 5 Wiederholungsversuche ausgeschöpft und sind als
FEHLGESCHLAGENmarkiert.
Lösung:
- Prüfen Sie den Verbindungsstatus. Wenn Offline, muss zuerst die Verbindung wiederhergestellt werden.
- Warten Sie, bis die Backoff-Timer ablaufen (max. 8 Minuten).
- Klicken Sie auf Jetzt synchronisieren in der Admin-App.
- Wenn Transaktionen
FEHLGESCHLAGENsind, prüfen Sie die Fehlermeldungen in den Docker-Logs. Fehlgeschlagene Transaktionen werden nach 30 Tagen automatisch bereinigt.
4. Promotion greift nicht, obwohl sie aktiv ist
Symptome: Im Simulator oder an der Kasse erscheint eine erwartete Promotion nicht.
Lösung:
- Öffnen Sie den Simulator und führen Sie denselben Warenkorb aus.
- Prüfen Sie den Block Verpasste Promotions — er erklärt genau, warum jede Promotion nicht gegriffen hat (Phase und Ablehnungsgrund).
- Häufige Gründe:
- Promotion ist inaktiv oder außerhalb des Gültigkeitsfensters (Vorfilter).
- POS-Gruppe passt nicht — die Kassierstation ist nicht in den zugelassenen POS-Gruppen der Promotion.
- Budget erschöpft (Budget erschöpft).
- Bedingungen nicht erfüllt — z. B. Mindestmenge nicht erreicht (Bedingungen nicht erfüllt).
5. Fehler "Ungültige EAN" beim Artikel-Import
Symptome: Der CSV-Import zeigt Fehler für bestimmte Zeilen mit der Meldung "Ungültige EAN".
Lösung:
- Prüfen Sie die EAN-Nummern der betroffenen Artikel.
- Beim CSV-Import wird nur das Format geprüft: Eine EAN muss aus genau 8 Ziffern (EAN-8) oder genau 13 Ziffern (EAN-13) bestehen.
- Der Import führt keine Prüfziffer-Prüfung durch und lehnt auch Platzhalternummern nicht ab. Werte mit falscher Ziffernanzahl oder mit Nicht-Ziffern werden zurückgewiesen.
- Korrigieren Sie die betroffenen Zeilen in der CSV und starten Sie einen neuen Import nur mit den fehlerhaften Zeilen.
6. Webhook nicht zugestellt oder bleibt ausstehend
Symptome: Eine externe Benachrichtigung (Webhook) zeigt Status DEAD_LETTER (endgültig fehlgeschlagen) oder PENDING (ausstehend/hängend).
Lösung: Siehe Abschnitt 7.4 Externe Benachrichtigungen — fehlgeschlagene Auslieferungen erneut senden. Sie können fehlgeschlagene Webhooks manuell über die Admin-UI erneut in die Warteschlange einreihen.
Hilfe bekommen
Wenn Sie das Problem nicht selbst lösen können:
- Notieren Sie die genaue Fehlermeldung und den Zeitstempel.
- Notieren Sie, welche Schritte Sie unternommen haben.
- Wenden Sie sich an Ihren Systemadministrator oder den DRE-Support mit diesen Informationen.
8.2 Glossar
-
Approval Workflow (Genehmigungs-Workflow): Der vierstufige Lebenszyklus, den eine Promotion durchläuft, bevor sie Kundenwarenkörbe beeinflussen kann: ENTWURF (Autor bearbeitet) → GENEHMIGUNG_AUSSTEHEND (wartet auf Prüfer) → GENEHMIGT oder ABGELEHNT. Ein Prüfer (typischerweise ein Marketingmanager mit der Rolle
PromotionApprover) entscheidet zwischen Genehmigen und Ablehnen. Abgelehnte Promotions können über die Aktion Erneut zur Genehmigung einreichen zurück in den ENTWURF-Status versetzt werden — nichts wird jemals gelöscht. -
Ausschlussgruppe (MutualExclusionGroup): Eine benannte Gruppe von Promotions, von denen nur die eine mit dem höchsten Rabatt für den konkreten Warenkorb angewendet wird. Andere Promotions in der Gruppe werden als durch die Ausschlussgruppe blockiert abgelehnt.
-
Auto-Refill: Automatische Nachfüllung eines Coupon-Code-Pools, wenn der Vorrat unter einen konfigurierten Schwellwert fällt.
-
Budget: Ein Kostenlimit für eine oder mehrere Promotions. Das Budget verfolgt, wie viel von einem vordefinierten Betrag durch Promotions verbraucht wurde.
-
Entwurf aktivieren (Draft Activation): Der direkte Pfad
ENTWURF → AKTIV. Nur verfügbar, wenn das Mandanten-FlagGenehmigung vor Aktivierung erforderlichauffalsegesetzt ist. -
Exklusivitätsstufe (ExclusivityLevel): Legt fest, wie eine Promotion mit anderen gleichzeitig aktiven Promotions interagiert. Werte:
NONE(stapelt mit allem),PROMOTION(nur die beste im gleichen Prioritätsrang),GROUP(nur die beste innerhalb der Ausschlussgruppe),GLOBAL(keine andere Promotion darf gleichzeitig gelten). -
Kampagne: Eine Gruppe thematisch zusammengehöriger Promotions (z. B. "Grillsaison 2026"). Ermöglicht gemeinsame Datums-Verschiebung und kalendarische Gruppenansicht.
-
Kassenbon-Promotion (Receipt Promotion): Eine Promotion, die auf den Gesamtbetrag des Kassenbons angewendet wird (z. B. "5 % auf alles ab 50 €"), nicht auf einzelne Artikel.
-
Mandant (Tenant): Eine logisch getrennte Organisationseinheit im DRE. Promotions, Budgets und Konfigurationen eines Mandanten sind für andere Mandanten nicht sichtbar.
-
Near-Miss: Eine Situation, in der ein Warenkorb eine Promotion knapp nicht erfüllt hat (z. B. 85 % der erforderlichen Menge). Das System kann einen Hinweis am POS ausgeben.
-
Pilot-Modus: Testbetrieb einer Promotion in ausgewählten Filialen mit statistischer Auswertung gegenüber einer Kontrollgruppe.
-
POS-Gruppe: Eine benannte Gruppe von Kassenterminals (z. B. "Filialen Süd"). Promotions können auf bestimmte POS-Gruppen eingeschränkt werden.
-
Priorität: Eine Zahl, die bestimmt, welche Promotions zuerst ausgewertet werden, wenn mehrere gleichzeitig zutreffen. Je höher die Zahl, desto höher die Priorität. Default-Wert ist
0für Promotions ohne Prioritätsgruppe. -
Simulator: Eine Testwerkzeug-App im Fiori Launchpad, mit der Marketing-Planer Promotions gegen Testkörbe prüfen können, ohne echte Transaktionen auszulösen.
-
Stakeholder: Eine Person oder Organisation, die ein Promotion-Budget (ganz oder teilweise) finanziert. Typen:
INTERNAL,BRAND,SUPPLIER,EXTERNAL_SUPPLIER. -
Tab-Übergriff (Tab-Hijacking): Das Symptom, bei dem zwei FLP-Tabs im gleichen Browserfenster versehentlich URL-Zustand über das
storage-Ereignis teilen. Behoben durch eine Tab-Instanz-ID. -
Vorlage materialisieren (Template Materialize): Das Klicken auf Promotion aus Vorlage erstellen bei einer
PromotionTemplateklont die Vorlage in eine frische, editierbarePromotionim ENTWURF-Status. -
WKZ (Werbekostenzuschuss): Eine finanzielle Beteiligung eines externen Lieferanten oder Markenpartners an Ihren Promotion-Kosten. Im DRE wird WKZ über den Stakeholder-Typ
EXTERNAL_SUPPLIERverwaltet. -
Wiederkehrendes Muster (Recurring Pattern): Diese Funktion ist eingestellt. Die Launchpad-Kachel ist nicht mehr im Launchpad sichtbar (ausgeblendet). Tagesbasierte Aktivierung pflegen Sie jetzt über die Einstellung Wochentage auf der Promotion (siehe nächster Eintrag).
-
Wochentage: Eine Einstellung auf der Promotion, die die Aktivierung auf bestimmte Wochentage beschränkt (leer = jeden Tag). Ersetzt die frühere Funktion „Wiederkehrende Muster".
Anhang — Technische Integration
Die technischen Schnittstellen — POS-API, Public API, Webhooks, Artikelimport per DRFOUT, Wire-Formate und Authentifizierung — richten sich an Entwickler, die ihre Systeme an die Digital Retail Engine anbinden. Diese Themen finden Sie vollständig im Developer Integration Guide mit Referenz zu Endpunkten, Feldern und Beispielen.