Channels, DMs & threads
The bread-and-butter — channels, DMs, threads — is exactly what your team uses, and exactly what you pay $15 a seat for whether they post once a week or a thousand times.
What people actually say
✕Threads keep conversations tidy in theory, but in practice replies get buried — people miss them and end up re-asking the same question in the main channel.
Source: Adam Leventhal, Slack Workflow Builder review ↗✕Fair Billing charges full-seat rates for multi-channel guests, so any contractor who needs more than one channel is billed like a member — costs creep when external collaboration scales.
Source: Slack, Fair Billing Policy ↗✕Reviewers note Slack's per-seat model gets prohibitive once you're paying for occasional posters and lurkers at the same rate as power users.
Source: G2 Learn, Slack pricing analysis ↗
Channels, DMs and threads on Postgres for the message store, with real-time delivery via a managed WebSocket layer like Pusher, Ably or self-hosted Soketi. Threads sit in the same table with a parent_id — no Fair Billing arithmetic, no per-guest premium, and read-only stakeholders cost you a row not a seat.