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

# Notifications and messages

> The in-app inbox, subscription preferences, delivery channels, and applicant correspondence.

Two related but distinct systems: **notifications** tell people something happened;
**messages** are correspondence with applicants and employees.

## Notifications

### The inbox

Every user has an in-app inbox. `notifications:view` is granted to every role
including `APPLICANT` and `SYSTEM_ADMIN` — it is self-service over your own inbox and
your own subscriptions, not a view of anyone else's.

### The event catalog

Notifications are driven by a catalog of platform events — an absence request awaiting
approval, a contract ready to sign, a document overdue, a payroll run locked, a survey
closing. Each event has:

* A default audience, by role.
* A default set of channels.
* Per-locale content.

### Subscriptions

Users adjust what they receive and how. Defaults come from their role, so a new manager
is subscribed to the things managers need without configuring anything, and can then
narrow it.

### Channels

| Channel | Notes                                                                          |
| ------- | ------------------------------------------------------------------------------ |
| In-app  | Always available. The inbox is the record.                                     |
| E-mail  | Sent through the configured mailbox, in the **recipient's** locale.            |
| Teams   | Posted to the configured channel, for team-visible events like pipeline moves. |

The dispatcher resolves the recipient's locale before rendering, so a French-speaking
employee receives French regardless of who or what triggered the notification.

### Action links

A notification usually needs to take you somewhere — the request to approve, the
contract to sign. Action URLs are generated per notification and resolve to the right
surface for that user.

<Warning>
  Action links carry no credentials in the URL. Tokens never travel in a `Location:` header or a
  query string — servers log both. See [Security conventions](/development/security).
</Warning>

## Messages

Correspondence with applicants and employees, threaded against the record it belongs
to.

### How it works

* Outbound mail is sent **from the shared HR mailbox**, so replies come back to a place
  the whole team can see rather than to a personal inbox.
* A scheduled scan reads inbound mail over Microsoft Graph and attaches it — with
  attachments — to the matching application.
* The full thread is visible on the application or employee record.

`messages:view` and `messages:send` are `HR_STAFF`+. `SYSTEM_ADMIN` is excluded:
correspondence is people data.

### Templates

Message templates are authored per locale and versioned. Pipeline stages fire them
automatically; HR can also send one ad hoc and edit before sending.

Because templates are versioned, a message sent in March renders the wording that
existed in March — the sent record is not retroactively rewritten by a template edit.

## The feedback dialog

An in-app feedback dialog lets users report a problem or request from inside the
product. Submissions create tickets in the team's issue tracker with a `FEEDBACK:`
prefix, so what users say reaches the backlog without a separate channel.
