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.
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
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.Invite someone
An owner or an admin invites from Settings, Members. The Free plan has 3 members and Pro has 5. A pending invitation counts as a member until it is accepted, revoked or expired, after 7 days.
The email is in the invited person's language, or yours if they have no account. Replies go to you. After 48 hours with no answer, you get one email with the link to pass on. The invited person gets no reminder.
In the app, an account signed in with Google or Apple also sees the invitation at the top of its Inbox, with Join and Decline. Other accounts use the link in the email.
With another address: someone who opens the link on an account at another address can join with it after confirming. You get an email naming that account, and you can remove it in Members.
With an API token:POST /api/workspaces/invites invites (email,role), GET /api/invites lists what waits for you, POST /api/invites/{token}/accept joins,DELETE /api/invites/{token} declines.
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.
A change of role applies at once: every open page of the web app follows, with no reload.