Weave Code
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, SMS, chat, and push. It unifies message creation, routing, and transport handling, making it easy to notify users via one or several providers with a consistent API.

View on GitHub
Deep Wiki
Context7

The Symfony Notifier component provides a unified API to send notifications through multiple channels like email, SMS, and chat/third‑party services. It helps you route messages to the right transport and manage delivery consistently across your application.

Designed to be extensible and framework-friendly, it lets you plug in different providers while keeping a clean, testable notification layer.

  • Multi-channel delivery via configurable transports (email, SMS, chat, etc.)
  • Unified message API for consistent notification creation and sending
  • Recipient & routing support to target users and choose channels per message
  • Provider integrations with easy transport configuration and swapping
  • Symfony ecosystem integration with robust docs and community support
Frequently asked questions about Notifier
How do I integrate Symfony Notifier into a Laravel project for email and SMS notifications?
Install via Composer with `composer require symfony/notifier`, then configure transports in `config/services.php` using DSN strings (e.g., `notifier://smtp?host=smtp.example.com` for email or `notifier://twilio?from=+1234` for SMS). Use the `Notification` class to create messages and route them via `Notifier::send()`. Laravel’s service container handles dependency injection automatically.
Does Symfony Notifier support Laravel Queues for async notification delivery?
Yes, it integrates seamlessly with Laravel Queues. Use Symfony Messenger (via `symfony/messenger`) or native queues by dispatching notifications as jobs. Configure the `MessengerTransport` in your queue configuration to handle async delivery. Failed jobs can be retried using Laravel’s built-in queue retry mechanisms.
What Laravel versions does Symfony Notifier support, and are there breaking changes?
Notifier v8.0+ requires PHP 8.4+ and works with Laravel 10.x/11.x. Breaking changes are documented in Symfony’s upgrade guide, but the core API remains stable. For Laravel 9.x, use Notifier v7.x. Always check the [Symfony Notifier docs](https://symfony.com/doc/current/notifier.html) for version-specific notes.
Can I customize notification templates (e.g., HTML emails or Slack messages) without extending transports?
Yes, use the `Notification` class’s `asEmail()`, `asSms()`, or `asChat()` methods to customize content per channel. For Slack, pass a custom message builder via `asChat()->message()`. For HTML emails, extend the `EmailNotification` class and override the `getHtml()` or `getText()` methods. No transport extensions are needed for basic templating.
How do I handle failed notifications (e.g., SMS delivery failures) in production?
Configure a failure transport (e.g., database or logging) in your Notifier setup. For Laravel, use Symfony Messenger’s `failure_transport` to log failed notifications to a table or file. Implement a retry queue job to reprocess failed messages. Monitor failures via Laravel Horizon or Tymon/JMS Queue monitoring tools.
Are there performance considerations when sending notifications in bulk (e.g., 10,000 emails)?
For bulk sends, batch notifications using Laravel Queues with chunking (e.g., `Notification::send($recipients->chunk(100))`). Avoid synchronous delivery in loops. Use Symfony’s `ParallelTransport` to send messages concurrently across channels. Benchmark with `symfony/var-dumper` to optimize transport configurations (e.g., SMTP connection pooling).
How do I add a custom notification channel (e.g., WhatsApp or Push)?
Create a custom transport by implementing `TransportInterface` and register it via `Notifier::addTransport()`. For WhatsApp, use a REST API transport with a `WhatsAppTransport` class. Extend `Notification` to support the new channel via `asWhatsApp()`. Test with Symfony’s `TransportTestCase` before deploying. Example: `Notifier::addTransport(new WhatsAppTransport($apiKey));`
Does Symfony Notifier work with Laravel’s Events system for triggering notifications?
Yes, dispatch notifications in event listeners using `Notifier::send()`. For example, in a `UserRegistered` event listener, call `Notifier::send(new WelcomeEmail($user))`. Combine with Laravel Events for workflows like order confirmations or password resets. Use `event(new NotificationSent($notification))` to track sends via custom events.
What are the alternatives to Symfony Notifier for Laravel, and when should I choose them?
Alternatives include Laravel’s native `Notification` facade (simpler but less extensible) or packages like `spatie/laravel-notification-channels` (channel-specific). Use Notifier if you need multi-channel support with a unified API and async delivery. Choose Laravel’s native system for basic email/SMS with minimal setup. Spatie is better for niche channels (e.g., Telegram) without Symfony’s overhead.
How do I secure API keys or credentials for transports (e.g., Slack tokens) in production?
Store credentials in Laravel’s `.env` file (e.g., `SLACK_TOKEN=xxx`) and inject them via DSN strings (e.g., `notifier://slack?token=%env(SLACK_TOKEN)%`). Use Symfony’s `Dsn` class to validate configurations at runtime. Never hardcode keys in transport classes. For extra security, encrypt `.env` values with Laravel’s `encrypt` helper or use a secrets manager like AWS Secrets.
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.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport