Laravel integration

Send Laravel exceptions and failed jobs to on-call escalation

Use the standard Notification channel or a Monolog handler to escalate production exceptions, failed jobs and custom incident events to phone calls and Telegram.

Pattern
Notification
Alternative
Monolog
Auth
API key

Anatomy of a Laravel alert

LIVE
Laravel → notify
App\Notifications\CheckoutDown
WardenPoint
route via API key · escalate · ack
Telegram
Voice call
Email

Setup

Two patterns, one contract

For exceptions, use a Monolog handler. For business events, write a Notification class. Both POST the same JSON to /api/v1/notifications/send.

  1. 1Step 1

    Add the API key

    Put your WardenPoint key in services.php under wardenpoint.key, source it from env() so it stays out of git.

    $ config/services.php › 'wardenpoint' => ['key' => env('WARDENPOINT_API_KEY')]
  2. 2Step 2

    Write a Notification class

    Create a Notification with via() returning ['wardenpoint'] and a toWardenpoint() method that returns the alert payload.

    $ php artisan make:notification CheckoutDown
  3. 3Step 3

    Dispatch with $user->notify()

    Pass the recipient UUID via the notifiable model, then call $user->notify(new CheckoutDown(...)). WardenPoint takes it from there.

    $ $user->notify(new CheckoutDown($context))

Wire format

Laravel Notification class — full example

This is exactly what we use in our own services. The toWardenpoint() return value becomes the POST body to /api/v1/notifications/send.

Notification class
CheckoutDown.phpPHP
use Illuminate\Support\Facades\Notification;
 
class CheckoutDown extends Notification
{
public function via($notifiable): array
{
return ['wardenpoint'];
}
 
public function toWardenpoint($notifiable): array
{
return [
'recipient_uuid' => $notifiable->oncall_uuid,
'message' => 'Checkout latency above SLO for 5 minutes',
'priority' => 'critical',
'source' => 'laravel',
];
}
}
WardenPoint fan-out
WardenPoint response202
{
"status": "queued",
"notification_uuid": "notif_8h2k7yQrxJp",
"channels_planned": [
"telegram_voice",
"voice_call",
"email"
],
"escalation_chain_id": "esc_4j2k9bMcvL"
}

Routing recipes

Three Laravel patterns we use ourselves

Production exceptions, failed jobs, business events — each gets a thin Notification class and a recipient group.

Exceptions

Production exceptions via Monolog

Register a Monolog handler in the production logging channel. It posts to WardenPoint only when log level reaches critical or higher.

match
log.level >= critical
→ route
policy: prod_exception
Jobs

Failed jobs

Listen for JobFailed events. Dispatch a Notification with the job class and exception message. Operators triage from the on-call channel.

match
Queue::failing(...)
→ route
group: queue_oncall
Business

Business-critical events

Write a Notification per business event (payment processor outage, fraud spike). Each maps to a different recipient group.

match
event: PaymentProcessorDown
→ route
group: payments_oncall

Laravel FAQ

Common Laravel integration questions

No. WardenPoint is a small HTTP API. Use Laravel's HTTP client (Http::withHeaders()) and a Notification class — there is no SDK to keep up to date.
Free plan

Wire your first Laravel alert today

Start on the free plan, add a Notification class for one critical event, dispatch it and watch the escalation chain render.

  • No SDK to maintain
  • Standard Notification API
  • Octane-friendly