Events
Referenz der internen Events
Zuletzt aktualisiert: 5. September 2026
STOAR gibt bei jeder relevanten Geschäftsaktion ein Domain-Event aus — eine Bestellung wird aufgegeben, der Bestand wird knapp, eine Bewertung wird freigegeben. Diese Events sind die Erweiterungsfläche der Plattform: dieselben Signale, die die ausgehenden Webhooks antreiben, stehen im Prozess auch eigenen Modulen zur Verfügung. So kann eine selbst gehostete oder SaaS-Installation Verhalten ergänzen, ohne den Kern anzufassen.
Jedes Event folgt der Namenskonvention stoar.shop.<domain>.<action> und trägt
eine kleine Payload (den betreffenden Datensatz plus etwaigen Kontext).
Aus einem eigenen Modul mithören #
Ein eigenes Modul registriert einen Listener in seinem Service Provider. Wenn das Event ausgelöst wird, läuft dein Listener — eine E-Mail einreihen, mit einem externen System synchronisieren, eine Audit-Zeile schreiben, was auch immer:
use Illuminate\Support\Facades\Event;
// In your module's ServiceProvider::boot()
Event::listen('stoar.shop.order.created', function ($order) {
// React to the new order.
});
Da Listener im Prozess laufen, sehen sie die aktuellen Model-Datensätze und können vor oder parallel zu den eingebauten Handlern agieren. Genau so hängen der mitgelieferte Low-Stock-Logger, die Zahlungsanbieter und die Benachrichtigungs- E-Mails an — nichts ist fest verdrahtet.
Lifecycle-Events von Entitäten #
Kern-Datensätze (Produkte, Kategorien, Kunden, Gutscheincodes, Adressen) geben
created-, updated- und deleted-Events an einer einzigen Nahtstelle aus.
Ein Listener bekommt die Änderung also mit, egal woher sie stammt — aus dem
Adminbereich, der REST-API, der Storefront oder einem Hintergrundjob.
Massenoperationen wie das Zurückspielen eines Backups bleiben bewusst still,
damit Listener während eines Imports nicht überflutet werden.
Event-Referenz #
Bestellungen
| Event | Wird ausgelöst, wenn |
|---|---|
order.created |
Eine Bestellung aufgegeben wird (beliebige Zahlart) |
order.completed |
Eine Bestellung bezahlt wird |
order.statusChanged |
Sich der Bestellstatus ändert |
order.cancelled |
Eine Bestellung storniert wird |
order.refunded |
Eine Bestellung erstattet wird (voll oder teilweise) |
order.paymentFailed |
Eine Zahlung fehlschlägt oder die Session abläuft |
order.disputeCreated |
Eine Rückbuchung eröffnet wird |
order.offline_pending |
Eine Offline-/manuelle Bestellung auf Zahlung wartet |
order.bank_transfer_pending |
Eine Überweisungsbestellung auf Zahlung wartet |
Kunden
| Event | Wird ausgelöst, wenn |
|---|---|
customer.created |
Ein beliebiger Kundendatensatz angelegt wird |
customer.updated |
Ein Kundendatensatz aktualisiert wird |
customer.deleted |
Ein Kunde gelöscht wird |
customer.registered |
Sich ein Käufer selbst registriert (enthält den Verifizierungslink) |
customer.passwordReset |
Ein Passwort-Reset angefordert wird |
customer.emailChangeRequested |
Eine Änderung der E-Mail-Adresse angefordert wird |
customer.wishlist.added |
Ein Produkt auf eine Wunschliste gesetzt wird |
customer.address.created / .updated / .deleted |
Sich eine Kundenadresse ändert |
Produkte & Katalog
| Event | Wird ausgelöst, wenn |
|---|---|
product.created / .updated / .deleted |
Sich ein Produkt ändert |
category.created / .updated / .deleted |
Sich eine Kategorie ändert |
Bewertungen
| Event | Wird ausgelöst, wenn |
|---|---|
review.submitted |
Ein Käufer eine Bewertung abgibt |
review.approved |
Eine Bewertung sichtbar geschaltet wird |
review.rejected |
Eine Bewertung ausgeblendet wird |
review.deleted |
Eine Bewertung gelöscht wird |
Lagerbestand
| Event | Wird ausgelöst, wenn |
|---|---|
inventory.reserved |
Bestand im Checkout reserviert wird |
inventory.released |
Eine Reservierung freigegeben wird |
inventory.adjusted |
Sich der Bestand über das auditierte Korrekturprotokoll ändert |
inventory.low |
Der Bestand auf oder unter die Meldeschwelle fällt |
inventory.backInStock |
Der Bestand wieder über die Schwelle steigt |
Gutscheincodes & Geschenkkarten
| Event | Wird ausgelöst, wenn |
|---|---|
coupon.created / .updated / .deleted |
Sich ein Gutscheincode ändert |
coupon.applied |
Ein Gutscheincode auf einen Warenkorb angewendet wird |
coupon.redeemed |
Die Nutzung eines Gutscheincodes auf eine Bestellung gebucht wird |
giftcard.issued |
Eine Geschenkkarte ausgestellt wird |
giftcard.redeemed |
Ein Betrag von einer Geschenkkarte eingelöst wird |
Abonnements
| Event | Wird ausgelöst, wenn |
|---|---|
subscription.created |
Ein Abonnement angelegt wird |
subscription.cancelled |
Ein Abonnement gekündigt wird |
subscription.paymentFailed |
Eine Verlängerungszahlung fehlschlägt |
Sonstiges
| Event | Wird ausgelöst, wenn |
|---|---|
newsletter.subscribed |
Sich jemand für den Newsletter anmeldet |
contact.submitted |
Das Kontaktformular abgeschickt wird |
Jedem Namen oben wird beim Abonnieren
stoar.shop.vorangestellt — z. B.stoar.shop.inventory.low.
Events vs. Webhooks #
Beide werden von denselben Signalen getrieben. Greif zu Webhooks, wenn ein externes System per HTTP benachrichtigt werden muss. Greif zu Event-Listenern, wenn ein eigenes Modul Logik innerhalb des Shops ausführen soll.