Source: https://www.hype-stack.dev/docs/packs-templates/packs/pack-notifications

# Notifications

Real-time notifications with WebSocket push, channels, in-app delivery, and admin campaigns. This is the
`pack-notifications` pack.

## No special integration needed

Out of the box, notifications run on the base services:

- **Postgres** for notification records.
- **Valkey / WebSockets** for real-time push to connected clients.

The default delivery channel is **in-app** plus WebSocket push. There is no third-party account to create and no
pack-specific environment variables to fill in for the default setup.

## Optional email channel

If you want notifications to also go out by email, set the base template's `RESEND_API_KEY`. The pack falls back to
Resend when an email channel is configured. Without it, email delivery is skipped and only the in-app/WebSocket channel
is used.

## What it depends on

- A **starter pack** for auth. Notifications are addressed to signed-in users, and the inbox also lists pending
  organization invitations, so the pack requires the `invitations` capability. All three starters provide it; on the
  free one the invitation list simply stays empty.
- The starter's **Resend** config for the optional email channel.

## What you get

- A header inbox dropdown with an unread badge that updates live, in whichever layout you installed.
- A full `/notifications` page: mark read, mark all read, and invitation items you can accept or decline.
- A typed `sendNotification` helper on the backend that writes the row, pushes it over the socket, and optionally emails
  it. Feature code calls that and nothing else.
- Two socket events, `notification/new` and `notification/count`, that the mobile app listens to as well.

## In the admin

On top of a starter, this pack adds a **Notifications** section to the [admin app](/docs/packs-templates/packs/admin):
compose a broadcast, see the campaign list and each campaign's detail, and an engagement widget on the dashboard.

## Environment variables

None required. `RESEND_API_KEY` (from the base template) is optional and only enables the email channel.
