---
title: Events
date: 2026-06-13T16:17:00+01:00
author: John Henry Donovan
canonical_url: "https://johnhenry.ie/plugins/order-lifecycle/docs/api/events"
section: Plugins
---
esc

↑↓ to navigate↵ to selectesc to close

Menu On this page 

- [Return to top](#)

Documentation

Documentation

# 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 caseValueCommerce trigger`EventType::CART_CREATED``cartCreated`First save of a new order element`EventType::CART_UPDATED``cartUpdated`Subsequent saves before completion

### Line Items

Enum caseValueCommerce 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 caseValueCommerce trigger`EventType::COUPON_APPLIED``couponApplied`Coupon code set on cart sav`EventType::COUPON_REMOVED``couponRemoved`Coupon code cleared on cart save

### Addresses

Enum caseValueCommerce 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 caseValueCommerce trigger`EventType::CUSTOMER_SET``customerSet`Customer email assigned on cart sav`EventType::CUSTOMER_REMOVED``customerRemoved`Customer email removed on cart save

### Shipping

Enum caseValueCommerce trigger`EventType::SHIPPING_METHOD_SET``shippingMethodSet`Shipping method set or changed on save

### Order

Enum caseValueCommerce 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 caseValueCommerce 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)

### Email

Enum caseValueCommerce trigger`EventType::EMAIL_SENT``emailSent``Emails::EVENT_AFTER_SEND_MAIL``EventType::EMAIL_FAILED``emailFailed``Emails` send failure

### Checkout

Enum caseValueCommerce trigger`EventType::CHECKOUT_STARTED``checkoutStarted`**Manual only** - call `logCheckoutStarted()` from your checkout template

### AI

Enum caseValueTrigger`EventType::AI_INSIGHTS``aiInsights`Saved automatically when AI Insights are generated for an order. Never appears in the timeline display.

## Using EventType in Code

```php
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();    // true
```

## Logging a Custom Event

To record an event against an order use the logger service:

```php
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

```php
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](https://johnhenry.ie/plugins/order-lifecycle/docs/api/services) - Full method reference
- [Event Tracking Guide](https://johnhenry.ie/plugins/order-lifecycle/docs/guide/event-tracking) - What is tracked automatically and how to add custom events

On this page
