Skip to main content
Notification Center supports 9 delivery channels out of the box. Each channel maps to a dedicated notification class and is identified by a short string key used in strategy configuration and delivery records.

Channel Overview

KeyNameTypeExternal credentials required
novaLaravel Nova feedIn-appNo
cardNova dashboard cardIn-appNo
webpushWeb Push (browser)In-appNo (HTTPS required)
emailEmailExternalMail driver config
smsSMSExternalTwilio (or compatible)
callVoice callExternalTwilio
whatsappWhatsAppExternalTwilio + Content SID
slackSlackExternalSlack webhook / token
teamsMicrosoft TeamsExternalTeams incoming webhook

In-App Channels

These channels deliver within your application and require no third-party credentials.

nova

Delivers to the Laravel Nova notification feed. Best for persistent, user-visible records inside the Nova admin panel.

card

Renders a notification card directly on the Nova dashboard. Ideal for urgent messages that should be impossible to miss.

webpush

Sends a browser push notification via the Web Push protocol. Reaches users even when they are not actively using the app.
Web Push requires your application to be served over HTTPS. The package registers a service worker at /sw.js and subscription endpoints automatically.

External Channels

These channels deliver outside your application and require credentials configured in your environment or service provider.
Sends a standard email using Laravel’s mail system. Configure your preferred mail driver (SMTP, SES, Mailgun, etc.) in config/mail.php.Identifier: email
Sends an SMS message. Requires a compatible SMS provider configured via Laravel Notifications (e.g., Twilio).Identifier: sms
Places a voice call using Twilio’s TwiML. The package registers a TwiML endpoint at POST /twiml/call-notification/{id}.Identifier: call
Sends a WhatsApp message via Twilio. Requires both Twilio credentials and a Content Template SID set in config.
TWILIO_WHATSAPP_CONTENT_SID=HXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Identifier: whatsapp
Posts a message to a Slack channel. Configure the webhook URL or bot token via your notification routing.Identifier: slack
Posts a message to a Microsoft Teams channel via an incoming webhook.Identifier: teams

Channel Registration

All nine channels are registered in config/notification-center.php under the messages key. Each key maps to the notification class that handles delivery for that channel:
'messages' => [
    'nova'      => \Opscale\NotificationCenter\Notifications\NovaNotification::class,
    'card'      => \Opscale\NotificationCenter\Notifications\CardNotification::class,
    'email'     => \Opscale\NotificationCenter\Notifications\EmailNotification::class,
    'sms'       => \Opscale\NotificationCenter\Notifications\SmsNotification::class,
    'call'      => \Opscale\NotificationCenter\Notifications\CallNotification::class,
    'whatsapp'  => \Opscale\NotificationCenter\Notifications\WhatsAppNotification::class,
    'webpush'   => \Opscale\NotificationCenter\Notifications\WebPushNotification::class,
    'slack'     => \Opscale\NotificationCenter\Notifications\SlackNotification::class,
    'teams'     => \Opscale\NotificationCenter\Notifications\TeamsNotification::class,
],
You can replace any class with your own implementation as long as it extends Opscale\NotificationCenter\Notifications\Notification.

Web Push Routes

The following routes are registered automatically to support the webpush channel:
MethodPathPurpose
GET/sw.jsServes the service worker script
GET/webpush/subscribe/{profileId}Returns the VAPID public key
POST/webpush/register/{profileId}Registers a push subscription

Build docs developers (and LLMs) love