Design for Scale9% of the exam

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.

Official exam objective
Recommend when to add support for channels that are shared externally with Slack Connect.

~8 min read · 9 practice questions ·

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

External share flag
Detail
is_ext_shared; is_shared also covers org-internal shares
Slash commands, message actions
Detail
Only the installing team can invoke them
External members' links
Detail
No link_shared event unless the app is installed for them
Private channel on share
Detail
G ID becomes C at once; channel_id_changed
Slack Connect file events
Detail
check_file_info placeholder; call files.info
Free workspaces
Detail
Slack Connect not available to all of them
inviteShared per call
Detail
One email or one user ID
external_limited
Detail
Defaults to true: recipients can only send messages
App invite event
Detail
shared_channel_invite_received with conversations.connect:read
Approving invitations
Detail
conversations.connect:manage; owner or admin install
Sources for this section (3)
  • 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?

The questions are free to read. Answers with their sources and self-grading are included with the pack.

Keep reading with the Slack Developer pack

  • Core concepts
  • Exam traps
  • Worked scenario

The pack includes:

  • All 38 lessons of the Slack Developer guide, with reading progress
  • Interactive decision walks and step-by-step sequence steppers
  • Inline practice questions and one-click topic practice (9 questions for this lesson)
  • An official source cited for every claim
  • An AI tutor that answers from the guide
  • Unlimited timed practice exams

Practice for the Slack Developer exam