Permissions & access

How visibility, read state, and notification delivery work when more than one person uses a workspace.

Public vs private channels

By default every channel is public: every workspace member sees it and receives its notifications. Switch a channel to private when you need to scope it — for example a #payments channel shared with your accountant but not the whole team.

Public channel — visible and notifying for every workspace member. No explicit member list to maintain.

Private channel — visible only to users on the channel's explicit member list. Notifications fan out to those members only. Owners and admins can manage the list from the channel's settings modal.

Toggle the privacy bit from the channel settings modal. When you flip public → private, every current workspace member is snapshotted into the access list — no one loses access by surprise. Trim the list afterwards. Going private → public drops the snapshot.

Per-user read state

Each workspace member has their own "read pile". Marking an alert as read affects only your view — your unread badge drops, your colleagues' counts are unchanged. Same idea as Slack threads.

The unread count surfaced in _count.alerts on the channels list endpoint, in the iOS push badge, and in the sidebar is computed as: (alerts in your accessible channels) − (alerts you've marked read).

Marking an alert read is idempotent: replays don't double-count. Marking it unread again removes the marker.

Notification preferences cascade

Whether you receive a push or email is decided by a three-layer cascade. The most specific layer with a non-null value wins.

Lookup order (first non-null wins)
1. Channel preference     (user × channel)
2. Workspace preference   (user × workspace)
3. User default           (user)

User defaults — your global on/off for pushAlerts, emailAlerts, pushMonitors, emailMonitors. Set underSettings → Notifications.

Workspace overrides — same four switches, but they apply only to one workspace. Useful when you want to mute a workspace on weekends without losing alerts from your other workspaces. Tri-state: Use default / Force on / Force off.

Channel overrides — push/email switches scoped to one channel. Use them to mute a noisy channel (or to opt-in to a specific channel even though the workspace default is muted).

Monitor preferences (uptime alerts) skip the channel layer — monitors aren't scoped to channels.

Example

text
Alice's defaults:        pushAlerts = true
Workspace override:      pushAlerts = false   // muted this workspace
Channel #payments:       pushAlerts = true    // but this channel still pages

Result: Alice gets push for #payments only.

Workspace roles

OWNER — billing, delete the workspace, manage admins/members, manage channel privacy and members.

ADMIN — manage members, manage channel privacy and members, clear alerts in any channel.

MEMBER — full read access to public channels and any private channel they've been added to. Can't flip privacy or manage member lists.