Webhooks

View as Markdown

Queuety can send HTTP POST notifications to external URLs when specific events occur. Use webhooks to integrate with monitoring systems, Slack, or custom dashboards.

Supported events

Event Fired when
job.completed A job finishes successfully
job.failed A job throws an exception
job.buried A job exhausts all retry attempts
workflow.failed A workflow step fails permanently

Registering webhooks

Via PHP:

PHP
$id = Queuety::webhook_notifier()->register( 'job.buried', 'https://hooks.slack.com/services/...' );

Via CLI:

Shell
wp queuety webhook add job.buried https://hooks.slack.com/services/...
wp queuety webhook add workflow.failed https://monitoring.example.com/queuety

Listing webhooks

PHP
$webhooks = Queuety::webhook_notifier()->list();
Shell
wp queuety webhook list

Removing webhooks

PHP
Queuety::webhook_notifier()->remove( $webhook_id );
Shell
wp queuety webhook remove 3

Payload format

When an event fires, Queuety sends an HTTP POST request with a JSON body. The payload always has the shape:

JSON
{
    "event": "job.buried",
    "data": {
        "job_id": 42,
        "handler": "send_email",
        "queue": "emails",
        "error_message": "Connection timed out"
    },
    "timestamp": "2025-03-15T14:30:00Z"
}

For workflow failures:

JSON
{
    "event": "workflow.failed",
    "data": {
        "workflow_id": 7,
        "job_id": 42,
        "handler": "CallLlmStep",
        "error_message": "API rate limit exceeded"
    },
    "timestamp": "2025-03-15T14:30:00Z"
}

Webhook delivery is fire-and-forget. Queuety uses a very short timeout and ignores delivery failures so workers are not blocked by slow or unavailable webhook endpoints.

Use cases

  • Slack alerts. Get notified when jobs are buried or workflows fail.
  • PagerDuty integration. Trigger incidents for critical job failures.
  • Custom dashboards. Stream events to your own monitoring infrastructure.
  • Audit trail. Forward events to an external logging service.