tomatophp/filament-alerts
Send notifications to users with reusable templates, multiple channels, and full logs. Built for Filament with native notifications, database and email drivers, FCM support, and custom drivers, types, and actions.
Notifiable plumbing. The decision is framed as: buy the plumbing, build the product-specific message logic on top.notifications table, CRUD screens, and per-channel jobs, the epic collapses into template authoring, channel selection, and a facade call. Good candidate for a phase-1 release that ships user-visible notifications early and defers segmentation, scheduling, and campaign analytics to a later phase.hideNotificationsResources() allows the admin resources to be suppressed, so the same package can back a fully custom in-product notification center without leaking a generic CRUD UI into the panel.Consider it when:
queue:work, notifications will silently sit in the queue and the logs will make that look like a delivery problem.Look elsewhere when:
For executives (one paragraph): We can ship an admin-managed user notification system — reusable message templates, email and in-app delivery, push-ready, with a full delivery history — in days instead of a multi-week build. It's an MIT-licensed package that plugs into the Filament admin panel we already run, so the cost is integration and a security review, not new headcount or a vendor contract. The trade-off is maturity: it's a small open-source project with essentially no other production users, so we should treat it as code we're adopting and be prepared to fork and maintain it. My recommendation is to adopt it behind our own abstraction layer, pilot it on internal/staff notifications first, and only extend it to customer-facing channels once it has a clean quarter of operational history.
For engineering (the asks): Integrate via the FilamentAlertsPlugin, add InteractsWithNotifications to the relevant models, and guarantee a supervised queue worker — sends are queued, and an unsupervised worker means notifications that look sent but aren't. Do not call the FilamentAlerts facade directly from domain code; put our own NotificationService in front of it so the package is replaceable. Pin the version, fork it into our VCS so we control patches, and log an ADR recording that we accepted single-maintainer risk deliberately. Register any custom drivers/types from AppServiceProvider::boot() — the extension points are clean and well-documented. Flag two items for review before rollout: the Settings Hub writes SMTP credentials to the database (needs a security sign-off or we don't enable it), and the template builder is the primary thing ops will touch, so it needs a short enablement doc rather than a support queue.
How can I help you explore Laravel packages today?