# Supporting Slack Connect channels in your app

*Slack Developer Study Guide · Design for Scale · Last updated October 21, 2026 · https://www.certifyforce.com/study-guide/slack-developer/design-for-scale/supporting-slack-connect-channels-in-your-app*

How to decide which app features work in Slack Connect channels: detecting external shares with is_ext_shared, what external members can and cannot trigger, authorized_users and sensitive-data checks, changing channel IDs, check_file_info, and the inviteShared and acceptSharedInvite API methods.

- Certification: Salesforce Slack Developer
- Exam section: Design for Scale
- Study guide: https://www.certifyforce.com/study-guide/slack-developer

**Official exam objective:**

> Recommend when to add support for channels that are shared externally with Slack Connect.

## What the exam expects

- Decide which app features should work in Slack Connect channels, and test before calling the app compatible.
- Tell an externally shared channel from an org-internal one with `is_ext_shared`, not `is_shared`, using `conversations.info`.
- Predict what external members can do when their organization has not installed the app (slash commands, message actions, unfurls, interactive elements).
- Protect sensitive data with confirmation prompts and `authorized_users` checks.
- Handle Slack Connect quirks: `channel_id_changed`, `check_file_info` placeholders, and invitations through `conversations.inviteShared` and `conversations.acceptSharedInvite`.

Key terms: **Slack Connect channel** (a channel shared with people at other organizations); **multi-workspace channel** (shared between workspaces of one Enterprise org); **external member** (a member of another team who shares a channel with the app); **stranger** (an external user the app shares no channel with); **`authorized_users`** (the installing users or bots allowed to see an event).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| External share flag | `is_ext_shared`; `is_shared` also covers org-internal shares | [Understanding Slack Connect](https://docs.slack.dev/apis/slack-connect/) |
| Slash commands, message actions | Only the installing team can invoke them | [Understanding Slack Connect](https://docs.slack.dev/apis/slack-connect/) |
| External members' links | No `link_shared` event unless the app is installed for them | [Understanding Slack Connect](https://docs.slack.dev/apis/slack-connect/) |
| Private channel on share | G ID becomes C at once; `channel_id_changed` | [Understanding Slack Connect](https://docs.slack.dev/apis/slack-connect/) |
| Slack Connect file events | `check_file_info` placeholder; call `files.info` | [Understanding Slack Connect](https://docs.slack.dev/apis/slack-connect/) |
| Free workspaces | Slack Connect not available to all of them | [Understanding Slack Connect](https://docs.slack.dev/apis/slack-connect/) |
| `inviteShared` per call | One email or one user ID | [conversations.inviteShared](https://docs.slack.dev/reference/methods/conversations.inviteShared) |
| `external_limited` | Defaults to true: recipients can only send messages | [conversations.inviteShared](https://docs.slack.dev/reference/methods/conversations.inviteShared) |
| App invite event | `shared_channel_invite_received` with `conversations.connect:read` | [Using Slack Connect API methods](https://docs.slack.dev/apis/slack-connect/using-slack-connect-api-methods) |
| Approving invitations | `conversations.connect:manage`; owner or admin install | [Using Slack Connect API methods](https://docs.slack.dev/apis/slack-connect/using-slack-connect-api-methods) |

## Check yourself

- Why can't an app trust `is_shared` to decide whether to hide internal data?
- When does a private channel's ID change from G to C?
- Why do an external member's links never unfurl?
- How does an app invited with `conversations.inviteShared` accept automatically?

## Sources

- [Understanding Slack Connect](https://docs.slack.dev/apis/slack-connect/)
- [Using Slack Connect API methods](https://docs.slack.dev/apis/slack-connect/using-slack-connect-api-methods)
- [conversations.inviteShared method](https://docs.slack.dev/reference/methods/conversations.inviteShared)
- [conversations.acceptSharedInvite method](https://docs.slack.dev/reference/methods/conversations.acceptSharedInvite)
- [Developing apps for Enterprise orgs](https://docs.slack.dev/enterprise/developing-for-enterprise-orgs)
- [Enterprise Organizations](https://docs.slack.dev/enterprise/)
- [block_actions payload](https://docs.slack.dev/reference/interaction-payloads/block_actions-payload/)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 9 linked practice questions, and unlimited timed mock exams are included with the Slack Developer pack (USD $19): https://www.certifyforce.com/practice-exams
