DistributionCompleted
Fires when a distribution period is processed. Carries the Distribution model.
Last updated: April 8, 2026
DistributionCompleted
DistributionCompleted fires when a distribution period is processed. This is the event that does the heavy lifting in the distribution pipeline: it calculates the reward pool, determines each collaborator’s share from accumulated metrics, and creates allocation records that feed into the standard fulfillment pipeline.
The event ID is distribution_initialized. The mismatch between the class name and the event ID is a historical artifact from an earlier version of the system where distributions were initialized and completed in separate steps. The class lives at Siren\Distributions\Core\Events\DistributionCompleted.
What does this event carry?
The event carries the Distribution model, which contains the distribution’s configuration: its reward pool, the programs it covers, the metric strategy it uses to rank collaborators, and the schedule that determines when the next period begins.
use Siren\Distributions\Core\Events\DistributionCompleted;
public function handle(Event $event): void
{
$distribution = $event->getDistribution();
// The distribution model provides access to the reward pool,
// covered programs, metric strategy, and schedule configuration
}
What happens during processing?
When the heartbeat trigger detects a distribution whose period has elapsed, this event fires with the distribution model. Listeners evaluate the accumulated metrics for each collaborator enrolled in the distribution’s programs, calculate their proportional share of the reward pool, and create Allocation records. Each allocation represents one collaborator’s share of the distribution.
Once an allocation is created, the system fires AllocationCompleted for that collaborator, which feeds their share into the standard obligation and fulfillment pipeline.
For the full lifecycle of distribution events and how they connect to the fulfillment pipeline, see the Distribution Events overview.