messages key in config/notification-center.php maps channel identifier strings to PHP notification classes. When the delivery engine dispatches a notification, it looks up the channel identifier in this map and instantiates the corresponding class.
The messages config key
config/notification-center.php
channels arrays. If a channel identifier appears in a strategy but has no corresponding entry in messages, the delivery is silently skipped.
Built-in channels
The package ships with nine pre-registered channels:| Identifier | Class | Description |
|---|---|---|
nova | NovaNotification | In-app Laravel Nova notification bell |
card | CardNotification | Nova dashboard card notification |
email | EmailNotification | Standard email delivery |
sms | SmsNotification | SMS via Twilio |
call | CallNotification | Voice call via Twilio |
whatsapp | WhatsAppNotification | WhatsApp message via Twilio |
webpush | WebPushNotification | Browser web push notification |
slack | SlackNotification | Slack message via webhook or API |
teams | TeamsNotification | Microsoft Teams message |
External service requirements
Some channels require external service credentials before they will deliver successfully:sms, call, whatsapp — Twilio
sms, call, whatsapp — Twilio
The The
sms, call, and whatsapp channels use Twilio. Configure your Twilio credentials in your Laravel services config or .env:.env
whatsapp channel additionally requires a Content Template SID set in the notification-center config:.env
webpush — VAPID keys
webpush — VAPID keys
The
webpush channel requires VAPID key pairs for the Web Push Protocol. Generate and configure them:.env
slack — Slack app or webhook
slack — Slack app or webhook
The
slack channel requires either an incoming webhook URL or a Slack Bot Token, depending on your integration method. Configure these according to your Laravel Slack notification driver setup.teams — Microsoft Teams webhook
teams — Microsoft Teams webhook
The
teams channel requires an incoming webhook URL configured in your Microsoft Teams channel. Provide the webhook URL through your application’s configuration.nova, card — no external service required
nova, card — no external service required
The
nova and card channels deliver entirely within your Laravel Nova installation and require no external credentials.Adding a custom channel
To add a custom delivery channel, create a notification class that extends the baseNotification class, then register it in the messages config.
Create your notification class
Extend
Opscale\NotificationCenter\Notifications\Notification and implement your delivery logic. The base class injects the Delivery model and wires up the queue, retry count, and backoff automatically from the matching strategy config.app/Notifications/PushoverNotification.php
Register the channel in config
Add the new identifier and class to the
messages array:config/notification-center.php
The channel identifier string in
messages must exactly match the string used in the strategy channels array and the Delivery model’s channel column. A mismatch will cause the delivery to be silently skipped.How the delivery engine resolves channels
WhenExecuteNotificationStrategy processes a recipient, it:
- Reads the strategy’s
channelslist to determine the current channel. - Looks up
messages[$channel]to find the notification class. - Instantiates the class with the
Deliveryrecord. - Calls
getSubscription()to retrieve the recipient’s contact for that channel (from theirsubscriptionsrelationship). - Dispatches the notification via Laravel’s notification system.
messages, step 2 returns nothing and the delivery is skipped without an error.
Related pages
Delivery strategies
Configure which channels each notification type uses and in what order.
Deliverability
Control retry intervals, time windows, and channel escalation timing.