Siren

OpportunityInvalidated

Fires when an existing opportunity is determined to be invalid due to duplication, expiration, or failed validation.

Last updated: April 8, 2026

OpportunityInvalidated

Not every opportunity makes it through the pipeline. When the system determines that an opportunity is invalid, it fires OpportunityInvalidated to clean up the attribution state. This can happen when a duplicate opportunity is detected, when a referral link turns out to be expired, or when any other validation check rejects the opportunity.

The event is identified as opportunity_invalidated and lives in the Siren\Opportunities\Core\Events namespace.

What does this event carry?

The event carries the Opportunity model that was invalidated.

use Siren\Opportunities\Core\Events\OpportunityInvalidated;

$opportunity = $event->getOpportunity();

The opportunity model gives listeners everything they need to identify and clean up related records, including the collaborator, program associations, and the original trigger context.

What happens when it fires?

The InvalidateOpportunityEngagements listener marks any engagements that were created for this opportunity as invalid. This prevents those engagements from contributing to conversions, ensuring that invalid referrals never generate obligations or payouts.

Invalidation is a terminal state. Once an opportunity is invalidated, its engagements cannot be re-activated. If the same customer interaction turns out to be legitimate, the system creates a new opportunity rather than restoring the invalidated one.

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