For Laravel 13 · Filament v5
Filament Outbox turns your app's Discord, Slack, Microsoft Teams and webhook notifications into something you can
see and manage: endpoints live in your Filament panel instead of
.env files,
every send is recorded, and failures retry with one click.
Outbox
Endpoints
Send history
Endpoints
New endpoint| Name | Channel | Environments | |
|---|---|---|---|
| team-alerts | Discord | all | Send test |
| ops-slack | Slack | production | Send test |
| billing-webhook | Webhook | production, staging | Send test |
No parallel notification system to learn. Write a normal Notification
class, return a message object, and reference a panel-managed endpoint by name.
class DeployFinished extends Notification
{
public function via(object $notifiable): array
{
return ['discord'];
}
public function toDiscord(object $notifiable): DiscordMessage
{
return DiscordMessage::make()
->embed(fn (DiscordEmbed $embed) => $embed
->title('Deploy finished ✅')
->description('v2.14.0 → production')
->timestamp())
->endpoint('team-alerts'); // managed in the panel
}
}
Real recording — a panel test-send arriving in Discord. Your team sees this; you see it in the send history.
Free packages give you a sending channel. Filament Outbox Pro gives you the management UX around it.
Webhook URLs live in your panel, not your .env. Named endpoints with per-environment scoping, enable toggles, and channel defaults like bot username or extra headers.
Every attempt recorded with status, HTTP code, and full payload preview — including error bodies on failure. Old rows prune themselves.
Retry failed sends from the panel. Each retry is a new, linked history row — auditable, never overwritten. Webhook bodies are re-signed automatically.
Verify any endpoint end to end before you rely on it — from the panel, or with php artisan outbox:test.
Notify on created/updated/deleted straight from config, with placeholder templates. No notification class needed.
Payloads signed with HMAC-SHA256 over the exact bytes on the wire. Receivers verify authenticity with one hash_equals() line.
Also in the box: queued sending with exponential backoff (3 tries), automatic retries for rate limits and 5xx responses, honest exceptions on permanent failures — and it all runs fine on shared hosting.
Rate-limited by Slack at 2 a.m.? The send history shows the failed attempt with the exact response body. Hit Retry and the message goes out again — recorded as a new attempt linked to the original, so your audit trail stays honest.
Real recording — a rate-limited Slack send retried from the panel.
For the routine stuff — "tell the team when an order comes in" — skip the boilerplate entirely.
Declare triggers in config: pick the model events, the channels, a message template with
{placeholder} attributes, done.
Flip queue => true and sends happen
on your queue with three tries and exponential backoff.
// config/filament-outbox.php
'triggers' => [
Order::class => [
'events' => ['created'],
'channels' => ['discord', 'webhook'],
'endpoints' => ['discord' => 'team-alerts'],
'template' => 'Order #{id} placed — {total} EUR',
'queue' => true,
],
],
The channels are free and MIT-licensed. The admin layer is a one-time purchase.
The notification channels, open source
$0
outbox:test commandThe Filament admin layer
$59 one-time, per project
Secure checkout & EU VAT handled by Polar · 14-day refund
If you're happy configuring webhook URLs in config files and don't need history or an admin UI — yes, and it's MIT-licensed. Pro is for when notifications become something your team depends on: managed endpoints, an audit trail, retries, and triggers.
A license key and the filament-outbox-pro Composer package with an installation guide. You install it alongside the free package; your existing notification code doesn't change. Updates for one year are included — re-download anytime from your Polar account.
Nothing breaks. You keep using the version you have forever — the license never expires, only the update window does. Renewing for further updates is optional.
PHP 8.3+, Laravel 13. The Pro admin layer additionally needs Filament v5. The free channels work in any Laravel app — no Filament required. Runs fine on typical shared hosting.
Yes — 14 days, no questions asked. Email with your order number and you'll get your money back.
Checkout runs through Polar as merchant of record: they charge the correct VAT for your country, and you get a compliant invoice you can pass straight to your accountant.