# `PhoenixKit.Notifications.Channels`
[🔗](https://github.com/BeamLabEU/phoenix_kit/blob/v2.6.0/lib/phoenix_kit/notifications/channels.ex#L1)

Registry of notification delivery channels.

`list/0` returns core channels first, then channels contributed by feature
modules via `PhoenixKit.Module`'s `notification_channels/0` — the same
core-first, dedupe-by-key, rescue-guarded merge that
`PhoenixKit.Notifications.Types.list/0` uses for types. A module channel whose
`key/0` collides with a core (or already-seen) key is dropped with a warning,
so core always wins.

Every entry is a module implementing `PhoenixKit.Notifications.Channel`.

# `get`

```elixir
@spec get(String.t()) :: module() | nil
```

The channel module for `key`, or `nil`.

# `keys`

```elixir
@spec keys() :: [String.t()]
```

All channel keys, in `list/0` order.

# `list`

```elixir
@spec list() :: [module()]
```

All registered channel modules — core first, then valid module-contributed
ones, with duplicate keys rejected (first claim wins).

---

*Consult [api-reference.md](api-reference.md) for complete listing*
