Slack

Ingests Slack channels, threaded conversations, file attachments, and user identities. Maps channel membership onto workspace access groups so private channels stay private.

variant=info text="Chat" variant=success text="OAuth" variant=success text="Maps ACLs"

What gets ingested

Element Mapped to
Workspace / team _Workspace
Channel (public, private, DM, group DM) _Channel with IsPrivate property
Channel members _User linked by _HasMember
Message _Message
Thread / reply _Message with _RepliesTo edge
Attached file _FileEntry + _Blob
Reactions Mapped onto the _Message as properties

Authentication

  • Type: Slack OAuth 2.0 (bot + user token).
  • Token is long-lived; the connector does not need to refresh.
  • Requested scopes:
    • team:read — current team info (used to resolve the workspace domain).
    • channels:read / channels:history — public channel metadata and message history.
    • groups:read / groups:history — private channel metadata and message history.
    • im:read / im:history — direct message metadata and history.
    • mpim:read / mpim:history — group direct message metadata and history.
    • usergroups:read — user groups in the workspace.
    • identify — basic identity of the authorizing user.
    • users:read / users:read.email — the user directory, including email addresses.
    • files:read — files shared in channels and conversations.
    • remote_files:read — remote files added to the workspace.
sequenceDiagram participant Admin participant WS as Workspace participant Slack as Slack OAuth Admin->>WS: Click "Connect Slack" WS->>Slack: /oauth/v2/authorize Slack->>Admin: Consent screen Admin->>Slack: Approve Slack->>WS: oauth code WS->>Slack: oauth.v2.access Slack->>WS: bot + user tokens

Access control mapping

Source Carried into the graph?
Public-channel membership Yes — anyone in the workspace can see. Mapped to the workspace-wide access group.
Private-channel membership Yes — each private channel becomes its own _AccessGroup. Only members get permission.
DM / Group DM Yes — modeled as a per-participant access group.
External-shared channels (Slack Connect) Members from both workspaces are added to the channel's access group.

Sync cadence

  • Default cron: daily at 02:00 UTC for full reconciliation; threads are tracked incrementally between runs.
  • Incremental sync: per-thread latest-timestamp watermark. New messages and edits are picked up incrementally.

Notable

  • The connector can be configured for channels only, DMs only, or both.
  • Slack rate-limits are respected automatically — the SDK backs off on 429.
  • Built on Slack.NetStandard.
© 2026 Curiosity. All rights reserved.