Événements
Référence des événements internes
Dernière mise à jour : 5 September 2026
STOAR émet un événement métier à chaque action commerciale significative : une commande est passée, le stock devient faible, un avis est approuvé. Ces événements constituent la surface d'extension de la plateforme : les signaux qui alimentent les webhooks sortants sont également disponibles en interne pour les modules personnalisés, si bien qu'un déploiement auto-hébergé ou SaaS peut greffer des comportements sans toucher au code du cœur.
Chaque événement suit la convention de nommage stoar.shop.<domain>.<action> et
transporte un payload réduit (l'enregistrement concerné, plus le contexte utile).
Écouter depuis un module personnalisé #
Un module personnalisé enregistre un écouteur dans son service provider. Lorsque l'événement se déclenche, ton écouteur s'exécute : mettre un e-mail en file d'attente, synchroniser avec un système externe, écrire une ligne d'audit, etc.
use Illuminate\Support\Facades\Event;
// In your module's ServiceProvider::boot()
Event::listen('stoar.shop.order.created', function ($order) {
// React to the new order.
});
Comme les écouteurs s'exécutent en interne, ils voient les enregistrements de modèle à jour et peuvent agir avant les gestionnaires intégrés ou en parallèle. C'est ainsi que se branchent le journal de stock faible fourni, les passerelles de paiement et les e-mails de notification : rien n'est câblé en dur.
Événements de cycle de vie des entités #
Les enregistrements du cœur (produits, catégories, clients, codes promo,
adresses) émettent des événements created, updated et deleted depuis un
point unique : un écouteur capte donc la modification quelle que soit son
origine — l'administration, l'API REST, la boutique ou une tâche de fond. Les
opérations en masse, comme la restauration d'une sauvegarde, restent
volontairement silencieuses afin de ne pas inonder les écouteurs pendant un
import.
Référence des événements #
Commandes
| Événement | Déclenché quand |
|---|---|
order.created |
Une commande est passée (quel que soit le moyen de paiement) |
order.completed |
Une commande est payée |
order.statusChanged |
Le statut de la commande change |
order.cancelled |
Une commande est annulée |
order.refunded |
Une commande est remboursée (totalement ou partiellement) |
order.paymentFailed |
Un paiement échoue ou la session expire |
order.disputeCreated |
Une rétrofacturation est ouverte |
order.offline_pending |
Une commande hors ligne/manuelle attend son paiement |
order.bank_transfer_pending |
Une commande par virement attend son paiement |
Clients
| Événement | Déclenché quand |
|---|---|
customer.created |
Un enregistrement client est créé |
customer.updated |
Un enregistrement client est mis à jour |
customer.deleted |
Un client est supprimé |
customer.registered |
Un acheteur s'inscrit lui-même (porte le lien de vérification) |
customer.passwordReset |
Une réinitialisation de mot de passe est demandée |
customer.emailChangeRequested |
Un changement d'adresse e-mail est demandé |
customer.wishlist.added |
Un produit est ajouté à une liste d'envies |
customer.address.created / .updated / .deleted |
Une adresse client change |
Produits et catalogue
| Événement | Déclenché quand |
|---|---|
product.created / .updated / .deleted |
Un produit change |
category.created / .updated / .deleted |
Une catégorie change |
Avis
| Événement | Déclenché quand |
|---|---|
review.submitted |
Un acheteur soumet un avis |
review.approved |
Un avis est rendu visible |
review.rejected |
Un avis est masqué |
review.deleted |
Un avis est supprimé |
Stock
| Événement | Déclenché quand |
|---|---|
inventory.reserved |
Du stock est réservé lors de la commande |
inventory.released |
Une réservation est libérée |
inventory.adjusted |
Le stock change via le journal d'ajustement audité |
inventory.low |
Le stock atteint ou passe sous le seuil d'alerte |
inventory.backInStock |
Le stock repasse au-dessus du seuil |
Codes promo et cartes cadeaux
| Événement | Déclenché quand |
|---|---|
coupon.created / .updated / .deleted |
Un code promo change |
coupon.applied |
Un code promo est appliqué à un panier |
coupon.redeemed |
L'utilisation d'un code promo est enregistrée sur une commande |
giftcard.issued |
Une carte cadeau est émise |
giftcard.redeemed |
Un montant est débité d'une carte cadeau |
Abonnements
| Événement | Déclenché quand |
|---|---|
subscription.created |
Un abonnement est créé |
subscription.cancelled |
Un abonnement est résilié |
subscription.paymentFailed |
Un paiement de renouvellement échoue |
Autres
| Événement | Déclenché quand |
|---|---|
newsletter.subscribed |
Quelqu'un s'abonne à la newsletter |
contact.submitted |
Le formulaire de contact est envoyé |
Chaque nom ci-dessus est préfixé par
stoar.shop.au moment de l'abonnement — p. ex.stoar.shop.inventory.low.
Événements et webhooks #
Les deux sont pilotés par les mêmes signaux. Optez pour les webhooks lorsqu'un système externe doit être notifié en HTTP. Optez pour les écouteurs d'événements lorsqu'un module personnalisé doit exécuter de la logique à l'intérieur de la boutique.