fagforbundet/notification-api-sms-notifier-bundle
Symfony bundle for sending SMS notifications through the Notification API. Integrates with Symfony Notifier to dispatch text messages from your application, with configurable API credentials and delivery settings.
symfony/notifier. It informs the decision "do we add SMS to our notification matrix (email → push → SMS) for OTP, urgent alerts, or time-sensitive reminders?" It changes how you deliver, not what you notify on — so it is downstream of the channel-strategy call, not an input to it.composer require. Frame this as an integration-cost decision on a very small surface area, not a feature-differentiation decision.TransportInterface, the PM-relevant benefit is optionality: swapping SMS providers becomes a config change instead of a refactor. If the roadmap includes A/B-testing two providers for cost or deliverability, a Notifier-shaped integration lowers the cost of that experiment.symfony/notifier alongside Illuminate\Notifications?" — which is almost always no, because Laravel already has a pluggable channel model and mature first-party SMS drivers. In a Laravel context this package's product value is as a reference implementation of a thin transport, not as a dependency.Consider it if all of the following hold:
symfony/notifier.Look elsewhere if any of these hold:
symfony/notifier plus its transitive constraints can fight Laravel's pinned Symfony components.Diligence gate before committing: tagged releases, CI status, test coverage of the transport path, last commit date, Symfony version constraints, correct implementation of the SentMessage/FailedMessage contract (message ID, status), how errors surface, and whether the README documents provider setup. If most of these are absent, downgrade the artifact from "dependency" to "reference implementation" and stop.
For executives (30 seconds): This is a small MIT-licensed connector that lets a Symfony application send SMS through one specific SMS vendor. It is plumbing, not a product — roughly a day of saved engineering, not a strategic capability. It costs nothing to license and creates no lock-in beyond the vendor itself, because the underlying Notifier interface keeps provider swaps cheap. It is also immature: single-organization origin, no visible adoption, no support guarantees. Recommendation: do not adopt it as a dependency on any critical path; use it to inform our own thin integration if and only if we commit to SMS as a channel.
For engineering (the real pitch): Treat fagforbundet/notification-api-sms-notifier-bundle as a specification, not a dependency. It demonstrates the correct shape of a Notifier transport — configuration via bundle config, a factory producing a TransportInterface implementation, mapping our domain message to the provider payload, and returning SentMessage/FailedMessage carrying the provider's message ID. We can reproduce that in our own codebase in about a day, with our tests, our logging, our retry policy, and our name on the maintenance. That removes the supply-chain and abandonment risk while keeping integration cost low.
For Laravel engineering specifically: wrap, don't wire. Define an internal SmsSender port with a send(to, body, options) contract and a result object carrying message ID and status; implement it once with a forked transport, once as a fake for tests, and once more if we ever change vendors. Expose it through a custom Laravel notification channel, keep credentials in config/services.php and .env, and cut over behind a feature flag so a vendor change is a config change rather than a code change. Realistic effort: 2–5 engineer-days including contract tests, versus roughly a week for the higher-fidelity "pull in Symfony Notifier" path with more ongoing risk.
Caveat to state explicitly in any deck: this is a Symfony bundle, not a Laravel package. If the question on the table is "how do we send SMS from our Laravel product," this package is the wrong answer — evaluate Laravel notification channels and a mainstream SMS provider instead. Confirm the stack before this enters a build plan.
Decision framing: the real decision is the SMS provider, not this package. Choose the provider on deliverability in our target geographies, price per message, sender-ID support, and DPA terms; then implement the transport in-house. This package only accelerates step two, and only on Symfony.
How can I help you explore Laravel packages today?