---
title: Order events
slug: commerce-connect-15/docs/order-events
docTags: 
createdAt: 2026-07-30T20:34:42.000Z
---

## IOrderEvents

`IOrderEvents` is available in the `EPiServer.Commerce.Order` namespace and handles events for orders processed by `IOrderRepository`.

`IOrderEvents` contains the order events `SavingOrder`, `SavedOrder`, `DeletingOrder`, and `DeletedOrder`. These events are triggered when an order is created, updated, or deleted. See [Order manipulation](docId\:l7BMVAuVvca9lqVuuJl07).

```csharp
public class OrderEventListener {
  private readonly IOrderRepository _orderRepository;
  private readonly IOrderEvents _orderEvents;
  private readonly ILogger _logger = LogManager.GetLogger(typeof (OrderEventListener));

  public OrderEventListener(IOrderRepository orderRepository, IOrderEvents orderEvents) {
    _orderRepository = orderRepository;
    _orderEvents = orderEvents;
  }

  public void AddEvents() {
    _orderEvents.SavedOrder += OrderEventsOnSavedOrder;
    _orderEvents.DeletingOrder += OrderEventsOnDeletingOrder;
  }

  private void OrderEventsOnSavedOrder(object sender, OrderEventArgs orderEventArgs) {
    var po = orderEventArgs.OrderGroup as IPurchaseOrder;
    if (po != null) {
      _logger.Information($"Order {po.OrderNumber} was saved");
    }
  }

  private void OrderEventsOnDeletingOrder(object sender, OrderEventArgs orderEventArgs) {
    var po = _orderRepository.Load<IPurchaseOrder>(orderEventArgs.OrderLink.OrderGroupId);
    _logger.Information($"Order {po.OrderNumber} is being deleted.");
  }

  public void RemoveEvents() {
    _orderEvents.DeletingOrder -= OrderEventsOnDeletingOrder;
    _orderEvents.SavedOrder -= OrderEventsOnSavedOrder;
  }
}
```

## OrderContext events (legacy)

`OrderContext` provides two events for integration scenarios. Because these events are synchronous, keep the event handlers fast or run the work asynchronously so the event can return while the action continues.

```csharp
[ModuleDependency(typeof (EPiServer.Commerce.Initialization.InitializationModule))]
public class OrderEventInitialization: IConfigurableModule {
  public void Initialize(InitializationEngine context) {
    OrderContext.Current.OrderGroupUpdated += Current_OrderGroupUpdated;
    OrderContext.Current.OrderGroupDeleted += Current_OrderGroupUpdated;
  }

  private void Current_OrderGroupUpdated(object sender, OrderGroupEventArgs e) {
    Task.Run(() => DoSomething(sender as OrderGroup, e));
  }

  private void DoSomething(OrderGroup order, OrderGroupEventArgs e) {}
}
```
