2.11.1 Team Chat — Channels

Team Chat channels provide structured, persistent spaces for internal communication within an organization. Unlike Inbox channels, which connect external sources, Team Chat channels are purely internal constructs optimized for collaboration, coordination, and operational discussion. They are designed to support long-running conversations tied to teams, projects, or functional domains without losing context over time.

Channel Purpose and Scope

A Team Chat channel represents a shared communication scope with clearly defined membership and intent. Channels may be created around departments, projects, incidents, or temporary initiatives. The channel scope determines visibility, access rights, and message retention behavior.

Core characteristics:

Explicit membership model

Persistent message history

Shared context across participants

Channels are stable entities; messages belong to the channel rather than to individual users.

Membership and Access Control

Access to Team Chat channels is governed by role-aware membership rules. Users must be explicitly added or granted access through organizational roles or groups. All access checks are enforced server-side.

Membership rules support:

Direct user assignment

Group or role-based inclusion

Read-only versus read-write access

Example access check:

if (!$channel->canAccess($user)) { abort(403); }

Message Model

Messages in Team Chat channels follow a linear, chronological model optimized for readability and collaboration. Each message is immutable once persisted, with optional metadata for reactions or moderation.

Typical message attributes:

Author identity

Timestamp (server-authoritative)

Message body and attachments

Optional system flags

Example message creation:

$channel->messages()->create([ 'author_id' => $user->id, 'body' => $request->input('body'), ]);

System and Service Messages

In addition to user-generated content, channels may contain system messages generated by platform events. These messages are visually distinct and excluded from user analytics where appropriate.

Examples include:

User joined or left channel

Channel renamed or archived

Permission changes

System messages preserve an auditable record of channel evolution.

Ordering, Read State, and Presence

Messages are ordered strictly by server timestamps to avoid client-side race conditions. Read state is tracked per user and per channel, enabling accurate unread counts without per-message noise.

Presence indicators reflect real-time participation but do not alter message delivery semantics.

Channel Lifecycle

Team Chat channels can be created, archived, or permanently closed. Archiving freezes new messages while retaining full history for reference and compliance.

Lifecycle actions:

Create

Archive

Reopen

Permanently close

No lifecycle action deletes messages implicitly.

Security and Isolation

All Team Chat data is tenant- and organization-scoped. Messages and membership lists are never exposed across organizational boundaries. Attachments follow the same storage and access rules as other Media Center assets.