Skip to content

Events

All events use Laravel's Dispatchable and SerializesModels traits.

Integration lifecycle

EventPayloadWhen
IntegrationCreated$integrationAn integration is created
IntegrationSynced$integrationmarkSynced() is called
IntegrationHealthChanged$integration, $previousStatus, $newStatusHealth status transitions
IntegrationDisabled$integrationIntegration auto-disabled after threshold

Requests

EventPayloadWhen
RequestCompleted$integration, $requestAn API request succeeds
RequestFailed$integration, $requestAn API request fails

Operations

EventPayloadWhen
OperationStarted$integration, $logAn operation is logged with status processing
OperationCompleted$integration, $logAn operation is logged with status success
OperationFailed$integration, $logAn operation is logged with status failed

Sync

EventPayloadWhen
SyncCompleted$integration, $resultA sync run finishes reconciling, with every per-item job in a terminal state. $result->hasFailures() distinguishes a clean run from a partial one.
SyncItemFailed$integration, $item, $exceptionA per-item ProcessSyncItem job exhausts its retries. The IntegrationSyncItem row is already marked failed.

These are the canonical sync events; adapters no longer ship their own per-completion or per-failure events. The per-item "synced" event (e.g. ZendeskTicketSynced) is still the adapter's own; it extends SyncItemEvent and its listeners run synchronously inside ProcessSyncItem. See Scheduled syncs.

OAuth

EventPayloadWhen
OAuthCompleted$integrationOAuth2 authorization completes
OAuthRevoked$integrationOAuth2 authorization is revoked

Webhooks

EventPayloadWhen
WebhookReceived$integration, $providerA webhook arrives

Listening for events

Listen with attribute-based listeners or in your EventServiceProvider. See Health Monitoring for a listener example.