> ## Documentation Index
> Fetch the complete documentation index at: https://archie.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Notifications

> Keep your users informed across in-app, email, and other channels from a single, consistent place. Define notification types, let users set preferences, and send with one API call.

The Notifications module lets your application keep its users informed — a build finished, an invoice is due, someone mentioned them in a comment — across multiple channels (in-app inbox, email, and more) from a single, consistent place.

To access this section, navigate to **App Services → Notifications** in the left-hand sidebar.

<Note>
  Notifications are scoped **per environment**. Each [environment](/docs/features/backend/environments/overview) keeps its own notification types, user preferences, and delivered notifications, so what you configure in `development` never leaks into `production`.
</Note>

## What you can do

* **Define the kinds of notifications your app sends** (a "notification type" such as `build_failed` or `invoice_payment`), grouped into **categories**.
* **Let each user choose what they receive** through per-user **preferences** (turn a type on or off, pick channels like in-app or email).
* **Send a notification** with a single API call (`emitNotification`) — to specific users or to a whole audience.
* **Show an in-app inbox** and **receive notifications in real time** through a live subscription.

## The building blocks

| Concept                 | What it is                                                                                                                  | Where it lives                         |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| **Category**            | A way to group related notification types (e.g., *Billing*, *Collaboration*).                                               | `archie_notification_categories`       |
| **Notification type**   | A reusable definition of one kind of notification: its key, default channels, templates, and whether users may turn it off. | `archie_notification_types`            |
| **User preference**     | One user's choice for one type: enabled or not, and on which channels.                                                      | `archie_user_notification_preferences` |
| **In-app notification** | A delivered item in a user's inbox (read/unread, with an optional action link).                                             | `archie_notifications_in_app`          |
| **Delivery record**     | An internal log of what was sent, per channel.                                                                              | `archie_notifications`                 |

These tables are created for you automatically the first time the Notifications module is activated in an environment. You configure them from the **Archie web app** or through the **GraphQL API** — both are covered in the guides below.

## Channels

A notification can be delivered through one or more of these channels:

| Channel      | Value      | Notes                                                                          |
| ------------ | ---------- | ------------------------------------------------------------------------------ |
| In-app inbox | `in_app`   | The built-in inbox; always available.                                          |
| Email        | `email`    | Requires an email integration (e.g., SendGrid) configured for the environment. |
| SMS          | `sms`      | Requires an SMS integration (e.g., Twilio).                                    |
| WhatsApp     | `whatsapp` | Requires a WhatsApp integration.                                               |
| Slack        | `slack`    | Requires a Slack integration.                                                  |

## Guides

<CardGroup cols={2}>
  <Card title="Notification types & categories" icon="tags" href="/docs/features/backend/app-services/notifications/notification-types">
    Define the catalog of notifications your app can send and organize it into categories.
  </Card>

  <Card title="User preferences" icon="sliders" href="/docs/features/backend/app-services/notifications/user-preferences">
    Let your users decide which notifications they receive and on which channels.
  </Card>

  <Card title="Sending notifications" icon="paper-plane" href="/docs/features/backend/app-services/notifications/sending-notifications">
    Emit a notification to specific users or to an audience with the `emitNotification` mutation.
  </Card>

  <Card title="In-app inbox & real-time updates" icon="inbox" href="/docs/features/backend/app-services/notifications/in-app-inbox">
    Show a user's inbox, mark items as read, and stream new notifications live over a subscription.
  </Card>
</CardGroup>

## A typical flow

1. **Set up your catalog once.** Create the notification types your app needs (or use the ready-made ones that ship with every project) and group them into categories.
2. **Let users opt in or out.** Your users adjust their preferences — for example, *"email me about billing, but only show collaboration mentions in the inbox."*
3. **Send notifications from your app.** Whenever something happens, call `emitNotification` with the type's key and a target. Archie resolves who should receive it and on which channels, then delivers it.
4. **Show them in your UI.** Read the user's inbox and subscribe to live updates so new notifications appear instantly.
