SIGNALS Documentation
API Reference

Channel Providers

Register and test outbound notification channel drivers — core email, database, and broadcast, plus plugin channels.

Overview

A channel provider is a persisted configuration row for one outbound notification driver. Drivers themselves live in ChannelProviderRegistry: core registers email, database, and broadcast on boot, and plugins add more through PluginRegistrar (declared in the plugin manifest channel_drivers section).

Each driver implements ChannelDriver: a key, a Laravel channel name (mail, database, broadcast, or a plugin slug), a config schema, send(), and test().

Where it lives

Admin: Notifications → Channel providers (/admin/settings/notifications, notifications.manage).

API: /api/v1/channel_providers (channel-providers:read / channel-providers:write). Config secrets are always masked in responses.

The email card does not store SMTP credentials on a provider row — it links to Email (settings() / EmailSettings). The database driver has no persisted configuration. Broadcast is the only core driver that yields a channel_providers row.

Resolution

ChannelProviderRegistry::resolve() accepts either a driver key or a logical channel. Logical aliases include in_app → database or broadcast, and email / mail → the email driver.

When a plugin driver is registered, Laravel's Notification::extend() wires that channel through RegistryBackedNotificationChannel so via() can name it like any core channel.

Self-test

POST /api/v1/channel_providers/{channel_provider}/test (api.v1.channel_providers.test) runs the driver's test() with optional recipient and per-call config overrides. This is a live connectivity check, not a dry run — mail drivers send a test message and webhook drivers POST a test payload. Returns 422 when the plugin that supplies the driver is disabled.