Why does Plain miss messages in a private Slack Connect channel?
Usually because Plain was added to the channel before any external team joined, so it classified the channel as Discussion instead of Customer. Privacy is not the problem: Plain supports private and locked Slack Connect channels and treats them like public ones.
How Plain classifies a channel
When Plain joins a Slack channel, it decides once whether it is a Customer channel, where incoming messages create threads, or a Discussion channel for internal collaboration. It checks in order:
- More than one connected Slack team: it is a Slack Connect channel and always Customer.
- Name starts with an external prefix such as
ext-,cus-,cust-orcustomer-: Customer. - Name matches a configured auto-join rule: Customer.
- Anything else: Discussion.
Added before any external team joins, the channel has only one connected team, so Plain falls back to the name checks. Once a channel is Discussion, messages from external users do not create threads.
How to fix it
- Go to Settings, then Slack.
- Find the channel in the connected channels list.
- Change its type from Discussion to Customer.
- Save. Plain starts creating threads from new external messages immediately.
Messages that arrived while the channel was Discussion are not backfilled automatically. Contact Plain support if you need a backfill.
How to avoid it
Add Plain after the external team has been invited. Or set up an auto-join rule in Settings, then Slack, that matches your channel naming convention. Plain then classifies matching channels as Customer regardless of when it joins.