Skip to main content

Slack connector setup

Polls the Slack Web API for workspace messages, access logs, and daily inventory snapshots.

What you need first​

RequirementDetails
Slack planFree, Pro, Business+, or Enterprise Grid
Slack app installWorkspace install (Install to Workspace)

Commercial Slack only. This connector calls slack.com / api.slack.com. GovSlack uses separate endpoints and is not supported yet.

For Enterprise Grid audit logs, use the separate Slack Audit connector with an org-level Slack app.


1. Create a Slack app​

  1. Open the Slack API apps dashboard and sign in.
  2. Create New App → From scratch.
  3. Name the app (e.g. Perpetual Slack) and select the workspace you want to monitor.
  4. Click Create App.

OAuth scopes​

In the app, go to OAuth & Permissions → Scopes → User Token Scopes (not Bot Token Scopes) and add the scopes needed for the streams you will enable.

Stream(s) in PerpetualUser token scopes
Messages, Conversations listchannels:read, channels:history
Access logsadmin
Team infoteam:read
Users listusers:read, users:read.email
Billable infoadmin

Typical bundle: admin, team:read, users:read, users:read.email, channels:read, channels:history

TODO ‼️

Screenshot from source not yet imported: "Slack OAuth & Permissions — User Token Scopes list" — a screenshot of the Slack app's OAuth & Permissions page showing the User Token Scopes list populated with the scopes above.

Save changes.


2. Install the Slack app and copy the token​

  1. Install App → Install to Workspace and approve the scopes.
  2. On OAuth & Permissions, copy the User OAuth Token (xoxp-…). You will paste this into Perpetual as a Text credential.

3. Perpetual credential​

  1. Log in to Perpetual. Open Settings from the user/org control at the bottom left of the sidebar (click your name → Settings), then go to Credentials → New Credential.
  2. Choose Text.
  3. Fill in:
FieldValue
NameUnique identifier using letters, digits, and underscores only (e.g. slack).
Allowed URL patterns*.slack.com
ValueUser OAuth Token from step 2 (xoxp-…)
  1. Save the credential.

4. Create the Slack connector​

  1. Go to Datasets → Connectors → Create Connector.
  2. Select Slack.
  3. Connector name: unique identifier (letters, numbers, underscores; becomes connector.<name>).
  4. Space: optional scope for the connector resource.
  5. Configure:
    • Slack API access: select the credential from step 3.
    • Poll interval (minutes): default 5. Controls incremental streams (messages, access logs). Snapshot streams (team info, users list, etc.) run at most once per 24 hours regardless of interval.
    • Enable only the streams you scoped for:
SettingDefaultSlack APINotes
MessagesOnconversations.list, conversations.history, conversations.repliesPublic channels only. No private channels, DMs, or archived channels.
Access logsOnteam.accessLogsWorkspace login events
Team infoOnteam.infoDaily snapshot
Users listOnusers.listDaily paginated roster
Conversations listOnconversations.listDaily public channel metadata
Billable infoOnteam.billableInfoDaily seat counts

At least one stream must stay enabled.

  1. Optionally check Deploy to schedule the connector immediately after save.
  2. Save.

First run backfills roughly the last 24 hours for time-based streams, then advances cursors on subsequent polls.


Operational notes​

  • Rate limits: Message collection walks every non-archived channel each poll. Large workspaces can exceed Tier 3 limits (50+ calls/minute); polls may span multiple invocations. Archive unused channels in Slack.
  • Multiple workspaces: Create a separate Slack app, credential, and connector per workspace you monitor.

Reference​