Events
All event types are defined as cases on the EventType enum at johnhenry\orderlifecycle\enums\EventType. The enum's value is the string stored in the database type column.
All Event Types
Cart
| Enum case | Value | Commerce trigger |
|---|---|---|
EventType::CART_CREATED |
cartCreated | First save of a new order element |
EventType::CART_UPDATED |
cartUpdated | Subsequent saves before completion |
Line Items
| Enum case | Value | Commerce trigger |
|---|---|---|
EventType::LINE_ITEM_ADDED |
lineItemAdded |
Order::EVENT_AFTER_ADD_LINE_ITEM |
EventType::LINE_ITEM_REMOVED |
lineItemRemoved |
Order::EVENT_AFTER_REMOVE_LINE_ITEM |
EventType::LINE_ITEM_UPDATED |
lineItemUpdated |
Order::EVENT_AFTER_APPLY_CART_PRICE_RULES (qty/options changed) |
Coupons
| Enum case | Value | Commerce trigger |
|---|---|---|
EventType::COUPON_APPLIED |
couponApplied | Coupon code set on cart sav |
EventType::COUPON_REMOVED |
couponRemoved | Coupon code cleared on cart save |
Addresses
| Enum case | Value | Commerce trigger |
|---|---|---|
EventType::SHIPPING_ADDRESS_SET |
shippingAddressSet | Shipping address added/updated on sav |
EventType::SHIPPING_ADDRESS_REMOVED |
shippingAddressRemoved | Shipping address removed on save |
EventType::BILLING_ADDRESS_SET |
billingAddressSet | Billing address added/updated on save |
EventType::BILLING_ADDRESS_REMOVED |
billingAddressRemoved | Billing address removed on sav |
Customer
| Enum case | Value | Commerce trigger |
|---|---|---|
EventType::CUSTOMER_SET |
customerSet | Customer email assigned on cart sav |
EventType::CUSTOMER_REMOVED |
customerRemoved | Customer email removed on cart save |
Shipping
| Enum case | Value | Commerce trigger |
|---|---|---|
EventType::SHIPPING_METHOD_SET |
shippingMethodSet | Shipping method set or changed on save |
Order
| Enum case | Value | Commerce trigger |
|---|---|---|
EventType::STATUS_CHANGED |
statusChanged |
OrderHistories after status change |
EventType::ORDER_COMPLETED |
orderCompleted |
Order::EVENT_AFTER_COMPLETE_ORDER |
EventType::ORDER_PAID |
orderPaid |
Payments::EVENT_AFTER_PAYMENT_SUCCESS (fully paid) |
Payment
| Enum case | Value | Commerce trigger |
|---|---|---|
EventType::PAYMENT_ATTEMPT |
paymentAttempt |
Payments::EVENT_BEFORE_PROCESS_PAYMENT |
EventType::PAYMENT_PROCESSED |
paymentProcessed |
Payments::EVENT_AFTER_PROCESS_PAYMENT |
EventType::PAYMENT_AUTHORIZED |
paymentAuthorized |
Transactions authorize event |
EventType::PAYMENT_CAPTURED |
paymentCaptured |
Transactions capture event |
EventType::PAYMENT_REFUNDED |
paymentRefunded |
Transactions::EVENT_AFTER_REFUND_TRANSACTION |
EventType::PAYMENT_TRANSACTION |
paymentTransaction | Any transaction save (requires setting enabled) |
| Enum case | Value | Commerce trigger |
|---|---|---|
EventType::EMAIL_SENT |
emailSent |
Emails::EVENT_AFTER_SEND_MAIL |
EventType::EMAIL_FAILED |
emailFailed |
Emails send failure |
Checkout
| Enum case | Value | Commerce trigger |
|---|---|---|
EventType::CHECKOUT_STARTED |
checkoutStarted |
Manual only - call logCheckoutStarted() from your checkout template |
AI
| Enum case | Value | Trigger |
|---|---|---|
EventType::AI_INSIGHTS |
aiInsights | Saved automatically when AI Insights are generated for an order. Never appears in the timeline display. |
Using EventType in Code
use johnhenry\orderlifecycle\enums\EventType;
// Get the string value
$value = EventType::ORDER_COMPLETED->value; // 'orderCompleted'
// Get a human-readable label (requires Craft application)
$label = EventType::ORDER_COMPLETED->getLabel(); // 'Order Completed'
// Get the category
$category = EventType::ORDER_COMPLETED->getCategory(); // 'order'
// Get the timeline filter pill this event type shows under - mirrors
// getCategory() one-to-one, except checkout events fold into the Cart pill
$pill = EventType::CHECKOUT_STARTED->getFilterPill(); // 'cart'
$pill = EventType::ORDER_COMPLETED->getFilterPill(); // 'order'
// Boolean helpers
EventType::CART_CREATED->isCartEvent(); // true
EventType::PAYMENT_REFUNDED->isPaymentEvent(); // true
EventType::EMAIL_SENT->isEmailEvent(); // trueLogging a Custom Event
To record an event against an order use the logger service:
use johnhenry\orderlifecycle\OrderLifecycle;
use johnhenry\orderlifecycle\enums\EventType;
OrderLifecycle::getInstance()->getLogger()->log(
$order,
EventType::STATUS_CHANGED,
['note' => 'Manually overridden by support agent'],
'Status manually updated'
);Querying Logs by Type
use johnhenry\orderlifecycle\OrderLifecycle;
use johnhenry\orderlifecycle\enums\EventType;
// Get the most recent log of a specific type
$lastPayment = OrderLifecycle::getInstance()->getLogger()->getLastLogForOrderAndType(
$order->id,
EventType::PAYMENT_PROCESSED
);
// Get all logs and filter in PHP
$logs = OrderLifecycle::getInstance()->getLogger()->getLogsForOrder($order->id);
$paymentLogs = array_filter($logs, fn($log) => $log['type'] === EventType::PAYMENT_PROCESSED->value);See Also
- Services API - Full method reference
- Event Tracking Guide - What is tracked automatically and how to add custom events