Sorry - Order Paid. I realize that it is a zero dollar order, but it is paid (meaning there is nothing due), which is also the status of a $0 order in Nop (it's status is PAID).
We use this when a customer either has enough rewards points, or gets a warranty, or promotional order.
It makes sense that the OrderPaid event is not triggered if no payment is processed.
I'd suggest adding an IConsumer for the order placed event, and if the order total is 0, manually trigger the email.
Something similar to:
public class OrderPlacedEventConsumer : IConsumer<OrderPlacedEvent>
private readonly IWorkflowMessageService _workflowMessageService;
public OrderPlacedEventConsumer(IWorkflowMessageService workflowMessageService)
_workflowMessageService = workflowMessageService;
public void HandleEvent(OrderPlacedEvent eventMessage)
if(eventMessage.Order.OrderTotal <= decimal.Zero)