Siren

EngagementCompleted

Fires when engagements for an opportunity finish the conversion process.

Last updated: April 8, 2026

EngagementCompleted

Once the conversion system has finished evaluating and awarding credit for all engagements tied to an opportunity, the system fires EngagementCompleted to signal that attribution processing is done. This is the final event in the engagement lifecycle, transitioning engagements from active to completed status.

The event is identified as engagement_completed and lives in the Siren\Engagements\Core\Events namespace.

What does this event carry?

The event carries an opportunityId and a conversionType string that describes what kind of conversion occurred.

use Siren\Engagements\Core\Events\EngagementCompleted;

$opportunityId = $event->getOpportunityId();
$conversionType = $event->getConversionType();

Rather than carrying individual engagement models, this event works at the opportunity level. All engagements associated with the opportunity are affected when this event fires, which reflects how the conversion system processes engagements in batches rather than one at a time.

What happens when it fires?

The EndOpportunityEngagements listener marks all engagements for the opportunity as completed. Completed engagements no longer participate in future conversion evaluations, which prevents double-counting if the same customer makes additional purchases.

Coordination events that bridge into conversions

Two related events handle the internal handoff between the attribution and conversion layers. These are coordination events rather than lifecycle events, and most integrations will not need to listen to them directly.

EngagementInitialized (event ID: Engagement_initialized, namespace Siren\Engagements\Core\Events) fires when the system begins processing a sale or lead for conversion. It carries an opportunityId, an array of transactionDetails containing line items from the commerce event, and a type string identifying the engagement type. This event signals the conversion system to prepare for building conversion records.

TransactionTriggered (event ID: transaction_triggered, namespace Siren\Engagements\Core\Events) fires when the attribution system produces the data needed for a transaction record. It carries an opportunityId and the transactionDetails array. This is the handoff point where line item data flows from the commerce layer into the engagement system. When it fires, InitializeSaleEngagement picks it up and begins evaluating which engagement trigger strategies apply.

These two events exist to decouple the commerce layer from the attribution layer. Commerce events produce raw sale data; TransactionTriggered and EngagementInitialized translate that data into the format the engagement system expects, keeping each layer focused on its own concerns.

See the Attribution Events overview for how this event fits into the full attribution pipeline.