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.
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.