Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Notifier Laravel Package

symfony/notifier

Symfony Notifier sends notifications through multiple channels like email and SMS, with a flexible, extensible architecture for adding custom transports and integrations.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy on channel expansion. The core decision this package unlocks is whether to hand-roll provider integrations or adopt a channel-agnostic abstraction that already ships 100+ bridges (Slack, Telegram, Discord, Twilio, Brevo, Vonage, Matrix, Bluesky, LINE, Mercure, desktop via JoliNotif). For a roadmap item like "add SMS + chat alerts," that is roughly 6–12 months of integration and maintenance work avoided — a concrete line item for a build-vs-buy memo rather than an opinion.
  • Roadmap sequencing. Because a new provider is largely a DSN change behind TransportInterface, the PM can promise channels as config, not as engineering epics. Launching WhatsApp, Telegram, or a regional SMS aggregator becomes a pricing/coverage decision instead of a sprint commitment, which changes how aggressively you can sequence channel releases.
  • Reliability as a sellable tier. Failover (backup channel) and round-robin (load balancing) strategies come out of the box. That supports a real product decision: do we offer a "guaranteed delivery" or "critical alerts" tier with an SLA? Today that would otherwise require custom retry/fallback logic per channel.
  • Provider commoditization / margin protection. A channel-agnostic API means switching from one SMS vendor to a cheaper one is a config rollout, not a rewrite. This is negotiating leverage at renewal time and a de-risking argument for multi-region pricing (per-country aggregators) without forking the codebase.
  • Observability-led features. Sent/failed event dispatching supports delivery analytics, bounce/failure dashboards, and per-tenant deliverability reporting — features customers ask for and that are cheap to surface because the events already exist.
  • Async delivery architecture. Messenger integration lets you decide "notifications are queued by default" as a product stance (latency vs. reliability tradeoff) rather than an afterthought. Note for engineering: in a Laravel codebase this likely means wiring these notifications onto Laravel queues with an adapter rather than adopting Symfony Messenger wholesale.
  • What this package should not decide for you. It does not solve consent/opt-out management, per-user channel preferences, template authoring, or per-tenant provider credentials. Those are the actual product differentiators in a notification feature, and they remain ours to build — which is arguably the right split.

When to Consider This Package

Adopt when:

  • The product needs three or more distinct channels beyond email (SMS, chat, push), or the roadmap has 2+ channels queued within two quarters.
  • You are building a multi-tenant SaaS where different customers bring their own Slack workspace, Telegram bot, or SMS account — per-tenant DSN configuration is exactly the shape this component expects.
  • Delivery reliability matters (alerts, transactional, ops notifications) and failover/round-robin would otherwise be bespoke work.
  • The team is comfortable owning a thin adapter layer between Laravel's notification/job machinery and NotifierInterface, and can absorb Symfony's event-dispatcher and HTTP-client dependencies.
  • You need provider portability as a risk control — regulated customers, regional data-residency, or procurement that refuses single-vendor SMS lock-in.

Look elsewhere when:

  • You only need email plus in-app/database notifications. Illuminate\Notifications already covers this well; adding a parallel stack buys nothing and costs onboarding clarity. Do not replace Laravel's native notifications — wrap or delegate to them.
  • You want a managed product: template management, preference centers, campaign orchestration, deliverability analytics, and compliance workflows. That is Courier/Novu/Twilio-class territory, and buying the product beats assembling the component.
  • Your app is on PHP < 8.4 and you need the v8 line — you would pin to 7.x, which is fine but caps the useful life of the decision. Verify Laravel/PHP version support before committing.
  • You need a commercial support contract with response-time guarantees. MIT plus volunteer-maintained bridges is excellent engineering citizenship, not a vendor SLA.
  • You cannot tolerate transport churn: the changelog shows bridges deprecated and removed across minor versions (Gitter removed, Sms77 deprecated then removed, Discord/Slack option semantics changing). If a specific bridge is business-critical, treat it as a dependency you monitor, not a stable API.

Adoption caveats to price in: the GitHub repo is a read-only split of the Symfony monorepo (issues and PRs go to symfony/symfony), so its 802 stars and low visible dependent count materially understate real-world adoption. Judge maturity on the release cadence across 5.4/6.4/7.4/8.1 branches, not on repo metrics.

How to Pitch It (Stakeholders)

To executives (one paragraph): We can ship multi-channel notifications — SMS, Slack, Teams, Telegram, WhatsApp-adjacent chat, desktop — in weeks instead of quarters by adopting a mature, MIT-licensed, Symfony-maintained component that already contains the provider integrations we would otherwise build and maintain ourselves. It removes a large, low-differentiation chunk of engineering work from the roadmap, gives us failover and load-balancing for reliability tiers we can charge for, and keeps us provider-agnostic so we can renegotiate SMS pricing without a rewrite. The cost is a thin adapter layer and an ongoing habit of tracking provider deprecations — not a new platform.

To engineering (one paragraph): NotifierInterface fans out to channels (ChatChannel, SmsChannel, EmailChannel, BrowserChannel), each backed by a TransportInterface built from a DSN, with custom transports being a single interface implementation. We integrate by writing an adapter that maps our domain notifications onto this API and dispatches them onto Laravel queues, so we inherit 100+ provider bridges, failover/round-robin strategies, and sent/failed events for free while keeping Laravel's native notifications for the email and in-app paths. Risks are explicit and bounded: a dependency on Symfony event-dispatcher and HTTP-client, a Symfony-centric documentation set, PHP 8.4 for v8, and bridge-level deprecations we must track. Mitigation is that every one of those risks is contained inside the adapter — which is precisely the layer we would have had to build anyway.

Numbers to carry into the room: 100+ ready transports, ~6–12 months of integration work avoided, one config change to swap a provider, two delivery strategies (failover, round-robin) we do not have to build, MIT license with zero per-message platform fee.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource