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

# Notifications

> Configure notification sounds and understand how Recruitier's real-time event system keeps you informed.

## Overview

Recruitier keeps you informed about important events through its real-time notification
system. When a search completes, a match is found, a contact is discovered, or an outreach
flow finishes a step, you receive a notification so you can take action without constantly
checking every page.

The notification settings let you control how these notifications are delivered to you.

## Sound Notifications

Recruitier can play a sound alert when a notification arrives. This is particularly
useful when you are working in another browser tab or have Recruitier open in the
background.

### Enabling or Disabling Sound

To toggle sound notifications:

1. Navigate to the **Settings** page and find the **Notifications** section on the
   right side
2. Find the **Sound Notifications** toggle
3. Switch it on to hear sounds when notifications arrive, or off to receive silent
   notifications

When enabled, a subtle notification sound plays each time a new event occurs. When
disabled, notifications still appear visually (as toast popups) but without any audio cue.

<Tip>
  If you work in a shared office or open environment, consider disabling sound
  notifications to avoid distracting your colleagues. Visual notifications will
  still keep you informed. Enable sound when you are waiting for a specific result
  (like a search completion) and want to be alerted immediately.
</Tip>

<Note>
  Currently, Recruitier offers a single notification control: the sound toggle. All
  visual notifications (toasts and in-app alerts) are always active to ensure you
  never miss important events. There are no granular per-category notification settings
  at this time.
</Note>

## Real-Time Notifications (SSE)

Recruitier uses **Server-Sent Events (SSE)** to deliver notifications in real time.
This means you do not need to refresh the page or poll for updates -- notifications
arrive instantly as events happen on the server.

### How It Works

When you are logged into Recruitier, your browser maintains a persistent connection
to the notification server. When something happens that is relevant to you (a search
finishes, a match is generated, an outreach step completes), the server pushes a
notification directly to your browser.

The complete notification flow:

1. **User action** -- You trigger a search, match, or other operation
2. **Background processing** -- The task is queued in RabbitMQ and processed by a worker
3. **Result published** -- The worker publishes the result to Redis pub/sub
4. **SSE delivery** -- The SSEConnectionManager picks up the event and pushes it to
   your browser via the SSE connection
5. **Toast notification** -- Your browser displays a toast popup with the event details

This approach ensures:

* **Instant delivery** -- Notifications arrive within seconds of the event occurring
* **No page refreshes needed** -- You stay on the page you are working on
* **Low bandwidth usage** -- SSE uses minimal network resources compared to polling
* **Automatic reconnection** -- If the connection drops temporarily, it reconnects
  automatically and any missed events are delivered

### Connection Behavior

The SSE connection has several important characteristics:

* **One connection per user** -- If you open Recruitier in a second browser tab, the
  new tab takes over the SSE connection. The previous tab's connection is closed. This
  prevents duplicate notifications.
* **Heartbeat** -- The server sends a heartbeat signal every 15 seconds to keep the
  connection alive and detect disconnections quickly.
* **Pending events** -- If you are disconnected (network issue, closed laptop, etc.),
  events that occur during the disconnection are stored in Redis. When you reconnect,
  these pending events are delivered immediately.

### Connection Status

You may notice a small connection indicator in the interface. This shows whether your
real-time notification connection is active. If the connection is lost (for example,
due to a network interruption), Recruitier automatically attempts to reconnect. Once
reconnected, any notifications that occurred during the disconnection period are
delivered.

## Toast Notifications

When a notification arrives, it appears as a **toast notification** -- a small popup
card that slides in from the corner of your screen. The toast displays:

* **Title** -- A brief summary of the event (e.g., "Search Complete")
* **Description** -- Additional context about what happened
* **Action** -- In some cases, a clickable link to navigate directly to the relevant
  page

Toast notifications automatically disappear after a few seconds. If you miss one, you
can find it in your notification history or activity feed on the dashboard.

## What Events Trigger Notifications

Recruitier covers **30+ event types** across different categories. Here are the most
common ones you will encounter:

| Category              | Events                                              | Description                      |
| --------------------- | --------------------------------------------------- | -------------------------------- |
| **Search**            | Search started, search completed, new results found | Job search lifecycle events      |
| **Matching**          | Matching started, matching completed                | Candidate-to-job AI scoring      |
| **Job Processing**    | Classification done, company info retrieved         | Background job enrichment        |
| **Contact Discovery** | Decision maker found, email discovered, phone found | Contact enrichment results       |
| **AI Operations**     | Message generated, CV parsed, skills extracted      | AI processing completions        |
| **Outreach**          | Email sent, flow step completed                     | Outreach sequence progress       |
| **Invitation**        | Invitation accepted                                 | (Admins only) Team member joined |

Each notification type is designed to prompt you to take action at the right moment.
For example, when a search completes, you can immediately review the results while
they are fresh.

## Managing Notification Volume

If you find that you are receiving too many notifications, consider the following
approaches:

* **Consolidate searches** -- Instead of running many small searches, combine them
  into broader searches that produce fewer but more comprehensive result
  notifications.
* **Schedule your work** -- Designate specific times to review search results and
  matches rather than reacting to each notification as it arrives.
* **Use browser focus modes** -- Most browsers support "Do Not Disturb" or focus
  modes that can suppress visual alerts when you need uninterrupted concentration.
* **Disable sound** -- Keep visual notifications active (they are always on) but
  turn off the sound alert for a less intrusive experience.

<Info>
  Recruitier is designed to notify you about actionable events, not every minor
  change. The notification system is intentionally selective to avoid alert fatigue
  while keeping you informed about the events that matter most for your workflow.
</Info>

## Best Practices

* **Keep the browser tab open** -- For real-time notifications to work, you need to
  have Recruitier open in at least one browser tab. It does not need to be the
  active tab, but the tab must be loaded.
* **Enable sound for time-sensitive work** -- If you are waiting for a search to
  complete or a matching run to finish, enable sound so you hear the result
  immediately.
* **Check your browser permissions** -- Some browsers may ask for permission to
  show notifications. Make sure you grant Recruitier permission when prompted.
* **Review the dashboard activity feed** -- If you miss a toast notification, check
  the activity feed on your dashboard to see recent events chronologically.

## Advanced

### SSE Architecture Details

The complete notification pipeline uses several components:

```
User Action
    |
    v
RabbitMQ Queue --> Worker Process --> Redis pub/sub
                                         |
                                         v
                                 SSEConnectionManager
                                         |
                                         v
                                 Browser (EventSourcePolyfill)
                                         |
                                         v
                                 eventBus --> Component Listeners
```

**RabbitMQ** handles task queuing and ensures reliable message delivery to workers.
**Redis pub/sub** provides the real-time messaging layer between workers and the
SSE connection manager. The **SSEConnectionManager** maintains one persistent
connection per user and routes events to the correct browser session.

On the frontend, **EventSourcePolyfill** manages the SSE connection with automatic
reconnection support. Events are dispatched through an **eventBus** that allows
any component in the application to listen for specific event types.

### Event Storage for Disconnected Users

When a user is disconnected (no active SSE connection), events are stored in Redis
with a per-user key. When the user reconnects:

1. The SSE connection is re-established
2. Any pending events stored in Redis are immediately delivered
3. The pending event queue is cleared

This ensures you never miss an important notification, even if you close your laptop
or lose internet connectivity temporarily. Events are stored with a reasonable TTL
to prevent indefinite accumulation.

### Heartbeat and Connection Health

The server sends a heartbeat event every 15 seconds. This serves two purposes:

1. **Keep-alive** -- Prevents proxy servers and firewalls from closing idle connections
2. **Health detection** -- If the client does not receive a heartbeat within the expected
   interval, it knows the connection has been lost and initiates reconnection

The reconnection logic uses exponential backoff to avoid overwhelming the server
during transient network issues.

## Related

* [Your Dashboard](/getting-started/your-dashboard)
* [Account Settings](/settings/account)
* [Troubleshooting](/faq/troubleshooting)
