Notification Preferences¶
b'nerd notifies you in-app, by email, and — once you've verified a phone number — by voice call or SMS, for events such as feature request approvals, billing events, and platform incidents. You can control which channels are active for each category from your account settings.
Where notifications appear¶
| Channel | Where |
|---|---|
| In-app | The bell icon in the top navigation. A badge shows the unread count. Notifications arrive in real time via WebSocket; a 60-second polling fallback is active when the connection is unavailable. |
| Sent to your account email address. | |
| Phone | A short automated voice call — requires a verified phone number; locked in the matrix below until then. See Phone notification channel. |
| SMS | A short text — same verified-phone requirement and lock as Phone. See SMS notification channel. |
Phone and SMS are opt-in only — no category defaults to either, unlike in-app/email, which most categories default to.
Platform-wide announcements also appear as a dismissible banner at the top of the dashboard. Click the close button to dismiss a banner — it will not reappear.
Managing your preferences¶
Go to Account (top-right menu) → Notification Preferences.
The preferences matrix lists every notification category. For each row you can enable or disable individual channels.
Rows that show a lock icon next to the channel toggle are required for organization administrators. See below for details.
The Phone and SMS columns show a "Verify phone" prompt instead of a toggle, for every category, until the account has a verified phone number — a different kind of lock than the admin one above, gating on account setup rather than role.
If you have not set a preference for a category, the platform uses the category's default channels. Run GET /notification_categories to see the defaults — the default_channels field on each entry.
Updating preferences via the API¶
PATCH /notification_preferences
Authorization: Bearer <token>
Content-Type: application/json
{
"preferences": [
{ "category_key": "billing", "channel": "email", "enabled": false },
{ "category_key": "security", "channel": "in_app", "enabled": true }
]
}
Send only the rows you want to change. Absent rows keep their current setting (or the category default if no row exists yet). The call is atomic — all rows succeed or none are saved.
Required categories for org admins¶
If you are an organization administrator, in-app delivery cannot be disabled for the following categories. This ensures security and operational notifications are always visible, regardless of your preference settings.
| Category | Why it is required |
|---|---|
| Security | Credential exposure, unauthorized access alerts |
| Billing | Invoice due, payment failure, quota breach |
| Platform Incidents | Active service disruptions |
| Capability Updates | Feature grants, provisioning changes |
| Alert Escalations | On-call escalations routed to your org |
Email remains opt-out-able for all categories, including required ones. The platform enforces the in-app lock at delivery time — saving a preference row that disables in-app for a required category does not cause an error, but the delivery override is applied silently.
Platform admins
b'nerd platform admins (superadmins) are also subject to the mandatory override regardless of organization context.
Reading your current preferences¶
Returns all saved preference rows. Rows absent from the response are using the category default.
Returns the full category catalog including default_channels and mandatory_for_admins flags. Use this to render the matrix and determine which lock icons to show.
Platform broadcasts¶
b'nerd occasionally sends platform-wide announcements as dismissible banners. Broadcasts are published by the platform team and targeted to relevant accounts (for example, all accounts or only accounts with a specific feature enabled).
To fetch active banners programmatically:
Returns published, banner-eligible broadcasts you have not dismissed. To dismiss:
Dismissals are idempotent and per-account — dismissing on one device or session dismisses it everywhere.
Inbox management¶
Your notification inbox is account-wide — it spans all organizations you belong to. Each notification includes organization_id and organization_name so you can see at a glance which org it is from.
| Task | How |
|---|---|
| View unread count | GET /notifications/unread_count or the bell badge |
| Mark one read | PATCH /notifications/{id}/read or click it in the dashboard |
| Mark all read | POST /notifications/mark_all_read or the "Mark all read" button |
| Filter to unread only | GET /notifications?unread=true |
| Paginate | ?limit=20&offset=20 (limit clamped 1–100) |