Skip to content
  1. Extras
  2. MiniShop3
  3. Development
  4. Events

Events and plugins ​

MiniShop3 uses the MODX event system to extend functionality. Plugins let you hook into cart, order, product and customer processing without changing the source code.

Getting started ​

  • Working with plugins — how to get parameters, abort an operation, modify data, pass data between plugins

Events by category ​

Cart ​

EventDescription
msOnBeforeGetCartBefore getting cart
msOnGetCartAfter getting cart
msOnBeforeAddToCartBefore adding product
msOnAddToCartAfter adding product
msOnBeforeChangeInCartBefore changing quantity
msOnChangeInCartAfter changing quantity
msOnBeforeChangeOptionsInCartBefore changing options
msOnChangeOptionInCartAfter changing options
msOnBeforeRemoveFromCartBefore removing product
msOnRemoveFromCartAfter removing product
msOnBeforeEmptyCartBefore clearing cart
msOnEmptyCartAfter clearing cart
msOnGetStatusCartGetting cart status

Order ​

EventDescription
msOnBeforeAddToOrderBefore adding field to order
msOnAddToOrderAfter adding field
msOnBeforeValidateOrderValueBefore field validation
msOnValidateOrderValueAfter field validation
msOnErrorValidateOrderValueValidation error
msOnBeforeRemoveFromOrderBefore removing field
msOnRemoveFromOrderAfter removing field
msOnBeforeEmptyOrderBefore clearing order draft
msOnEmptyOrderAfter clearing order draft
msOnSubmitOrderStorefront order submit
msOnBeforeMgrCreateOrderBefore manager finalization
msOnMgrCreateOrderAfter manager finalization
msOnBeforeCreateOrderBefore creating order
msOnCreateOrderAfter creating order

Cost ​

EventDescription
msOnBeforeGetCartCostBefore cart cost calculation
msOnGetCartCostAfter cart cost calculation
msOnBeforeGetDeliveryCostBefore delivery cost calculation
msOnGetDeliveryCostAfter delivery cost calculation
msOnBeforeGetPaymentCostBefore payment fee calculation
msOnGetPaymentCostAfter payment fee calculation
msOnBeforeGetOrderCostBefore order total (cart + delivery + payment)
msOnGetOrderCostAfter total: override cost / cart_cost / delivery_cost / payment_cost

Order status ​

EventDescription
msOnBeforeChangeOrderStatusBefore status change
msOnChangeOrderStatusAfter status change

Customer ​

EventDescription
msOnBeforeGetOrderCustomerBefore getting customer
msOnGetOrderCustomerAfter getting customer
msOnBeforeGetOrderUserBefore resolving modUser on submit
msOnGetOrderUserAfter resolving modUser
msOnBeforeAddToCustomerBefore adding field
msOnAddToCustomerAfter adding field
msOnBeforeValidateCustomerValueBefore field validation
msOnValidateCustomerValueAfter field validation
msOnErrorValidateCustomerValueValidation error
msOnBeforeCreateCustomerBefore creating customer
msOnCreateCustomerAfter creating customer
msOnBeforeAddCustomerAddressBefore adding address
msOnAddCustomerAddressAfter adding address

Products (catalog) ​

EventDescription
msOnGetProductPriceProduct price modification
msOnGetProductWeightProduct weight modification
msOnGetProductFieldsProduct fields modification

msProducts snippet ​

Events for integrating third-party packages (ms3Variants, msBrands, etc.) without modifying core code.

EventDescription
msOnProductsLoadAfter product list is loaded (bulk loading)
msOnProductPreparePreparing each product's data

usePackages parameter

To enable data loading, pass the package name in the snippet parameter: &usePackages='ms3Variants,msBrands'

Order products ​

EventDescription
msOnBeforeCreateOrderProductBefore adding product to order
msOnCreateOrderProductAfter adding product
msOnBeforeUpdateOrderProductBefore updating product
msOnUpdateOrderProductAfter updating product
msOnBeforeRemoveOrderProductBefore removing product
msOnRemoveOrderProductAfter removing product

Order model (xPDO) ​

EventDescription
msOnBeforeSaveOrderBefore save (xPDO)
msOnSaveOrderAfter save (xPDO)
msOnBeforeRemoveOrderBefore remove (xPDO)
msOnRemoveOrderAfter remove (xPDO)
msOnBeforeUpdateOrderBefore update (manager)
msOnUpdateOrderAfter update (manager)

Notifications ​

EventDescription
msOnBeforeSendNotificationBefore sending notification
msOnAfterSendNotificationAfter sending notification
msOnRegisterNotificationChannelsChannel registration

Vendors ​

EventDescription
msOnBeforeVendorCreateBefore creating vendor
msOnVendorCreateAfter creating
msOnBeforeVendorUpdateBefore updating
msOnVendorUpdateAfter updating
msOnBeforeVendorDeleteBefore deleting
msOnVendorDeleteAfter deleting

Import ​

EventDescription
msOnBeforeImportBefore import start
msOnAfterImportAfter import complete
msOnImportRowWhen processing a row

Manager ​

EventDescription
msOnManagerCustomCssJsLoading scripts and styles

Changes from miniShop2 ​

miniShop2MiniShop3Changes
productmsProductParameter renamed
msOnGetOrderCostKept + 3 partialsAlso msOnGetCartCost, msOnGetDeliveryCost, msOnGetPaymentCost. Override the total in msOnGetOrderCost
—controllerParameter on many controller events
—msOnBeforeEmptyOrder / msOnEmptyOrderDraft cleanup
—msOnBeforeMgrCreateOrder / msOnMgrCreateOrderManager finalization
—msOnBeforeGetOrderUser / msOnGetOrderUsermodUser on submit
—msOnBeforeValidateCustomerValueNew event
—msOnCreateCustomerNew event
—msOnAddCustomerAddressNew event
—msOnBeforeSendNotificationNew event
—msOnImportRowNew event
—msOnProductsLoadThird-party package integration
—msOnProductPrepareThird-party package integration

Call chains (where to look in code) ​

ActionEvents in order
Clear draft (order/clean)msOnBeforeEmptyOrder → field reset → msOnEmptyOrder
Storefront totalcart/delivery/payment cost → msOnBeforeGetOrderCost → compose → msOnGetOrderCost (return any of the 4 amounts)
Storefront submitmsOnSubmitOrder → … → msOnBeforeCreateOrder → msOnCreateOrder
Manager finalizemsOnBeforeMgrCreateOrder → msOnBeforeCreateOrder → msOnCreateOrder → msOnMgrCreateOrder

Registry source: _build/elements/events.php (all names above are registered in MODX).