Skip to main content

Settings — Notifications

Audience: Support · QA · Sales · Engineering · Management · Where in app: Settings → Notifications (/settings/notifications) · Plan availability: All plans (no permission gate on this user screen)

This is the personal Notification Settings screen. In its current form it is intentionally small: it controls a per-user new-visitor notification sound, and — on the desktop app only — whether the app launches when you sign in to your computer. It is not where the broad set of company event notifications (email transcripts, Slack, missed-call emails, reports email) are configured; those live elsewhere (see How channels relate and the Notifications module).

What it does

  • New Visitor Notification — toggles a sound that plays when a new visitor lands on the website. Saved on the user record (notification_tune).
  • Launch on startup (desktop only) — toggles whether the Electron desktop app auto-starts at OS login. Saved at the OS level via Electron IPC, not in the database.
  • A collapsible Learn panel explains the feature and tips.

How it works

The view (settings/Notifications.vue) loads the current user and reads user.notification_tune. Each toggle saves immediately (no separate Save button):

New visitor sound

  • Toggling calls PUT /user/<id> with { notification_tune: <bool> }, then updates the app store with the returned user.
  • On failure it reverts the toggle and shows an error.
  • Backend default for notification_tune is true (UserModel).

Launch on startup (desktop)

  • Only rendered when running in the desktop app (isElectron()) and the platform reports support (launchAtLoginSupported).
  • On mount, launch-at-login-get IPC reads the current OS setting.
  • Toggling calls launch-at-login-set IPC; if the platform doesn't support it, the toggle is hidden and an error toast is shown.
  • This is a machine-local OS preference (macOS/Windows) — it is not stored on the user/company record and does not sync across devices.

Configuration & options

SettingScopePersisted toDefaultVisibility
New Visitor Notification (sound)Per useruser.notification_tune via PUT /user/<id>trueAlways
Launch on startupPer machineOS (Electron app.setLoginItemSettings) via IPCOS-dependentDesktop app only, where supported

How channels relate

The broader notification system (in-app bell, desktop toast, push/FCM, email, Slack, webhooks) is company-configured and event-driven — it is not controlled from this screen. Per the data model and the Notifications module:

ChannelBacked by
In-appNotification bell/drawer (NotificationModel)
Desktop toastNative OS notification (desktop app)
PushFirebase Cloud Messaging (mobile + desktop)
EmailSMTP via MailService
SlackSlackService to a chosen channel
WebhookOutbound HTTP when enabled and subscribed

Company-level event toggles live on company.notifications.* (e.g. chat_transcript, call, missed_call, reports_email, daily_recap_email, slack_new_visitor, slack_hot_lead) and are managed on the Organization Notifications screen (/settings/organization/notifications, gated by settings.organization), not here.

Company-vs-user precedence

Per the notifications knowledge base, user-level preferences only fire if the company-level toggle allows it — the company toggle is the outer gate, the user preference the inner one. The one user-facing preference on this screen, the new-visitor sound (notification_tune), is a personal client-side sound and is independent of the company event toggles. The exact set of per-user email/push preference fields and their precedence rules should be confirmed against UserModel/NotificationHelper (verify) — they are not all surfaced on this screen.

Behaviors & edge cases

  • Immediate save, optimistic UI: the sound toggle updates instantly and rolls back on API error (with a toast).
  • No permission gate: the route has no permission meta — any signed-in user can set their own sound.
  • Desktop-only startup toggle: hidden entirely in the browser, and also hidden if the OS doesn't support login items.
  • Web vs desktop notification delivery differs (toasts/ringtone/dock count are desktop-only); see the Notifications module for desktop specifics.
  • Don't confuse screens: "Settings → Notifications" (this page) is personal and minimal; "Settings → Organization → Notifications" is the company event configuration.

Plan & limits

Available on all plans with no permission gate on this personal screen. The company event channels it relates to (Slack, email templates, reports email) may depend on integrations being connected and on plan tier — verify with the Notifications module and pricing.

Technical implementation

  • View: frontend/src/views/settings/Notifications.vue
  • Route: name settings-notifications, path /settings/notifications, meta { title: 'Notification Settings' } (no permission) — frontend/src/router/index.js
  • User field: notification_tune (backend/app/models/UserModel.js, default true), updated via PUT /user/<id>
  • Desktop IPC: launch-at-login-get / launch-at-login-set (@/utils/platform → Electron main process)
  • Company-side config (separate screen): frontend/src/views/settings/organization/Notifications.vue, company.notifications.*, delivered by NotificationHelper / MailService / SlackService. See services/backend.