Ops Notify by spoko.space
CommunityOperational notifications (inquiries, errors, builds) for Laravel + Filament panels, delivered to Telegram forum topics.
Author:
spoko.space
Package health
Automated checks of this plugin's Composer package
15 checks
- Passed: GitHub Actions pinned to SHA
- Skipped: GitLab CI includes pinned to SHA
- Passed: Open security advisories
- Passed: Dependabot PR responsiveness — No open Dependabot PRs.
- Skipped: Renovate MR responsiveness
- Passed: Dependabot or Renovate configured
- Passed: Dependency update cooldown configured
- Passed: Provides a security policy
- Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
- Passed: Commit and release recency — Active: last commit 0 days ago; last release 1 days ago.
-
Passed:
composer.lock not committed by library
—
composer.lockis absent from the released dist archive. - Passed: Dist archive is lean
-
Passed:
Current Laravel version supported
—
Package dependencies resolve together with current Laravel
13.0. -
Passed:
Current PHP version supported
—
Constraint
^8.3supports current PHP8.5. - Skipped: Current Symfony version supported
filament/
namespace. Review the source and install at your own risk. Found
malware or an unresolved security issue the author won't
address?
Report it
.
Documentation
Operational notifications for Laravel + Filament panels: inquiries, errors and builds, delivered to Telegram forum topics. Built on Laravel notifications, so existing Filament database notifications reach Telegram with no code changes.
#Features
- Bell notifications → Telegram, no code. Every
sendToDatabase()notification is forwarded once, however many users receive it (with a shared cache). - Any Laravel notification, too. Apps without the bell can forward mail, SMS or push notifications, once each and without secrets such as password reset links.
- Topics and routing. Create forum topics from the panel and route events to them by pattern
(
inquiry.*→ Inquiries). Filament notifications are routed by title. - Settings in the panel. Token (encrypted), chat id, service name, topics and rules, all without
touching
.env. - Message templates. Change an event's title, body, fields and hashtag by pattern in config
(
inquiry.*→ New inquiry from :field.Name); the panel switches the[service]prefix and the#eventline (Message templates). - Reliable delivery. Queued, retried, rate-limit aware, and never breaks the request that sent it.
- Bot profile. Pick an avatar (a preset or your own) and set the display name and descriptions from the panel.
- Translated. The panel ships in 25 languages, and a separate setting controls the language of the messages.
- History. Every message is logged with its status and Telegram error, and failed ones can be resent.
opsnotification channel and a fluentOpsMessagefor events that are not bell notifications.
#Screenshots
In Telegram: a build as the bot reports it to the Builds topic, started and then completed,
with the [service] prefix, bold field labels, the #event hashtag and a button on each message.
The Ops Notify page: the Telegram connection, where messages are delivered (queue and Horizon state), and the history of every message sent, with failed ones ready to resend.
Settings: bot token, chat id and message language, forum topics that can be created in Telegram or imported from it, routing rules and forwarding rules. Filled lists collapse to a one-line summary.
Bot profile: pick a preset avatar or upload your own, and set the name and descriptions Telegram shows.
#Requirements
- PHP 8.3 / 8.4 / 8.5
- Laravel 12 / 13
- Filament 5
#Installation
composer require spokospace/filament-ops-notify
php artisan migrate
use Spokospace\OpsNotify\Filament\OpsNotifyPlugin;
$panel->plugin(OpsNotifyPlugin::make()->navigationGroup('System'));
Then say who may use it. Until you do, the page opens only in the local environment:
// In a service provider's boot(), with your app's own admin check:
Gate::define('viewOpsNotify', fn (User $user): bool => $user->is_admin);
manageOpsNotify can limit Settings, Bot profile, Send test and Resend further. See
Who may use it.
Delivery runs on the queue, so the app needs a worker (Horizon or queue:work) and the scheduler.
#Quick start
- Create a bot with @BotFather and a Telegram group with Topics turned on. Add the bot and promote it to admin.
- In the panel, open Ops Notify → Settings and enter the bot token and chat id.
- Press Send test.
The setup checklist has every step in order. Installing with an AI coding agent? Give it Installing with an AI agent.
Your existing Filament notifications now reach Telegram. To send something yourself:
use Spokospace\OpsNotify\OpsMessage;
OpsMessage::make('build.completed')
->success()
->title('Frontend build completed')
->field('Duration', '4m 12s')
->button('Open site', 'https://shop.example')
->send();
In Telegram it reads:
✅ [shop.example.com] Frontend build completed
Duration: 4m 12s
#build_completed
with an Open site button below. The title and field labels are bold.
#Documentation
- Setup checklist: what to set up, in order, the rights the bot needs, and instructions for AI agents
- Installation: requirements, migrations, plugin options
- Telegram setup: bot, group, topics, finding the chat id, bot profile
- Settings: panel vs
.env, every option, languages, the Ops Notify page - Routing and topics: topics, event rules, forwarding Filament notifications
- Sending messages: the
opschannel, theOpsMessageAPI, message templates, delivery, tests - Drivers: writing your own channel driver
- Troubleshooting: common Telegram and queue errors and fixes
#Testing
composer test
#Credits
Built and maintained by spoko.space, where it runs in production on our own Filament panels. There's a case study with the story and screenshots behind it.
#License
MIT, see LICENSE.md.
The author
I'm Szymon, a web developer and the founder of spoko.space, a small studio in Bielsko-Biała, Poland, that builds custom websites and web apps for clients worldwide. I've been building for the web for over 15 years, with a focus on performance and clean, maintainable code. I work mostly with Laravel, Filament, Astro and Vue. My Filament plugins grow out of the panels we run in production, so they solve problems we hit ourselves first.
Featured Plugins
A selection of plugins curated by the Filament team
Sharp Theme
A theme that gives panels a precise, technical look with square corners, strong borders, and clear contrast.
Filament
Advanced Tables (formerly Filter Sets)
Supercharge your tables with powerful features like user-customizable views, quick filters, multi-column sorting, advanced table searching, convenient view management, and more. Compatible with Resource Panel Tables, Relation Managers, Table Widgets, and Table Builder!
Kenneth Sese
Custom Fields
Eliminate custom field migrations forever. Let your users create and manage form fields directly in Filament admin panels with 20+ built-in field types, validation, and zero database changes.
Relaticle