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