Webhook Events

Events are the triggers that cause webhook deliveries. Each event represents a significant action within an organization's workspace.

Core Events

These events are built into the system:

  • api_key.created — a new API key was generated
  • api_key.revoked — an API key was deleted
  • member.invited — a new member was invited to the organization
  • member.joined — an invited user accepted and joined
  • member.removed — a member was removed from the organization
  • member.role_changed — a member's role was updated

Custom Events

Custom events are defined in the webhook_events array in config/custom.php:

// config/custom.php
'webhook_events' => [
    'project.created',
    'project.updated',
    'project.deleted',
    'comment.added',
    'comment.deleted',
],

Dispatch custom events from your application code using the WebhookDispatcher:

WebhookDispatcher::dispatch($organizationId, 'project.created', [
    'project_id' => $project->id,
    'name' => $project->name,
]);

Wildcard Subscription

Use * to subscribe a webhook to all events, including any custom events added in the future:

{
    "events": ["*"]
}

Payload Format

Every webhook delivery sends a JSON payload with a consistent structure:

{
    "event": "member.joined",
    "occurred_at": "2026-03-21T14:30:00Z",
    "organization_id": 42,
    "data": {
        "user_id": 15,
        "name": "Jane Smith",
        "email": "jane@example.com",
        "role": "member"
    }
}
  • event — the event name that triggered this delivery
  • occurred_at — ISO 8601 timestamp of when the event occurred
  • organization_id — the organization where the event happened
  • data — event-specific payload with relevant details