laravel-notification-channels/rocket-chat
A Laravel notification channel for sending messages to Rocket.Chat. Integrate Rocket.Chat incoming webhooks with Laravel notifications to deliver alerts, updates, and custom messages from your application.
Architecture fit. Strong, conditional on Laravel being your application framework. This package is not a standalone SDK — it is a driver plugged into Laravel's Notification abstraction (Illuminate\Notifications\ChannelManager), contributing a rocketChat channel and a RocketChatMessage value object. If your services already route operational and user-facing messaging through Notification::route(...) or the Notifiable trait, adoption is a two-line change in the via() array plus a webhook route. If your stack is Symfony, plain PHP, or a Laravel app that doesn't standardize on Notifications, the package has zero surface area for you and you should call Rocket.Chat's incoming-webhook endpoint directly.
Integration feasibility. Low effort, low code volume. The runtime path is: notification dispatched → queued job → channel send() → Laravel HTTP client → Rocket.Chat incoming webhook → channel post. Configuration is a per-notifiable webhook URL resolved via routeNotificationForRocketChat(), or an on-demand route for ad-hoc sends. Rocket.Chat's incoming-webhook payload (text, attachments, alias, emoji, channel) is a near-subset of Slack's, so teams migrating from laravel/slack-notification-channel will find the message API familiar but not drop-in compatible — attachment schemas and field names differ enough that message-building code must be rewritten, not copied.
Technical risk. The code risk is negligible; the governance risk is the actual finding. The evidence is unambiguous:
| Signal | Value | Read |
|---|---|---|
| Stars | 13 | Effectively no community |
| Dependents | 0 | No production validation signal |
| Last release | 2024-04-15 | Not abandoned, but not actively exercised |
| Score | 0.899 | Composite quality is fine — this is a small, clean package |
| Opportunity | 21.71 | No growth trajectory |
This lives under the laravel-notification-channels umbrella, an org with a documented history of individual channels going dormant. Treat it as single-maintainer, fork-on-sight code. Mitigating factors: MIT license, tiny dependency tree, and a narrow contract — the blast radius of the package breaking is bounded and the replacement cost is roughly 100–150 lines you could own outright.
Key questions to resolve before sign-off.
composer.json, not the README.Illuminate\Support\Facades\Http? If yes, Http::fake() makes the channel trivially testable and lowers the cost of forking. If it uses raw Guzzle, test ergonomics degrade.attachments (color bars, fields, buttons) or only plain text? Plain-text-only materially reduces the value proposition for alerting use cases.failed() hooks fire?Stack fit. Adopt only if (a) Laravel 10+ and (b) Rocket.Chat is an already-approved collaboration surface. Do not let this package be the reason Rocket.Chat gets adopted — it is a delivery mechanism, not a capability.
Migration path.
Notifiable routing pattern and Notification classes carry over; only the message-building layer changes. Budget 0.5–1 day per notification class, mostly on attachment formatting.Notification::route('rocketChat', config('services.rocketchat.webhook'))->notify(...)) so you don't prematurely couple webhook URLs to Eloquent models.Compatibility. Pin exactly ("laravel-notification-channels/rocket-chat": "x.y.*"), commit composer.lock, and add a Renovate/Dependabot rule that opens a PR but never auto-merges. Because dependents are zero, you will be the first to hit version-compat breaks — treat every Laravel major upgrade as a re-evaluation trigger for this dependency.
Sequencing.
Http::fake() works in a unit test.Maintenance. Nominal runtime maintenance (no daemons, no schema, no state). Real maintenance is dependency stewardship: expect to own the fork within 12 months. Accept that cost explicitly, or reject the package — there is no third option given 13 stars and 0 dependents. The upside: the code is small enough that a mid-level Laravel engineer can fully audit it in under an hour.
Support. No vendor. Community support is effectively nil at this star count. Your support model is "the engineer who forked it." Name that person before adoption, not after.
Scaling. Rocket.Chat incoming webhooks are bound one-per-channel per-integration. This is the hard ceiling and it's structural, not a package limitation:
Failure modes. Ranked by likelihood × impact:
failed() handlers on the job and a dead-letter queue.Ramp-up. Trivial. A Laravel-fluent engineer is productive in under two hours; the Notification channel contract is well-documented and this package adds almost no surface area. The ramp-up cost that matters is operational: someone must own the fork, the canary, and the Laravel-upgrade re-evaluation.
Recommendation. Adopt narrowly, fork immediately. The quality score (0.899) reflects a genuinely clean, focused package; the 21.71 opportunity score and 13-star/0-dependent footprint correctly flag it as a community dead end. Use it for internal, non-critical, human-read chat ops where Rocket.Chat is already sanctioned — and vendor it on day one so the abandonment scenario costs you nothing. Reject for customer-facing messaging, paging, compliance-relevant audit trails, or any team without a Laravel-native notification layer already in place.
How can I help you explore Laravel packages today?