Skip to content

Slack ​

Slack is a messaging platform for teams and organizations where they can collaborate, share ideas and information.

ingestr supports Slack as a source.

URI format ​

The URI format for Slack is as follows:

plaintext
slack://?api_key=<api-key-here>

URI parameters:

  • api_key: The API key used for authentication with the Slack API.

The URI is used to connect to the Slack API for extracting data.

Setting up a Slack integration ​

To set up a Slack integration, you need to create a Slack App and obtain an API token with the necessary permissions.

Step 1: Create a Slack App ​

  1. Go to Slack API Apps page
  2. Click Create New App
  3. Choose From scratch
  4. Enter an App Name (e.g., "Data Integration") and select your workspace
  5. Click Create App

Step 2: Choose a Token Type ​

Slack supports two token types, and ingestr works with either:

  • User token (xoxp-) — recommended for one-off ingestion by an admin. Inherits the installing user's channel access, so no per-channel setup is needed.
  • Bot token (xoxb-) — recommended for unattended, long-running pipelines. The bot must be invited to each channel you want to read messages from (/invite @your-app in each channel).

Step 3: Configure OAuth Scopes ​

  1. In the left sidebar, click OAuth & Permissions
  2. Scroll down to Scopes and add the scopes below under User Token Scopes or Bot Token Scopes, matching the token type you chose in Step 2:
    • channels:read — list public channels
    • channels:history — read messages in public channels
    • users:read — list workspace users
    • team:read — read team metadata
    • admin.teams:read — required for access_logs (Enterprise Grid only)

Step 4: Install the App and Get the Token ​

  1. Scroll to the top of the OAuth & Permissions page
  2. Click Install to Workspace and approve the requested permissions
  3. Copy the token that matches your choice in Step 2:
    • User OAuth Token (xoxp-…), or
    • Bot User OAuth Token (xoxb-…)

This token is your api_key for the ingestr URI.

Once you have the API key, let's say it is axb-test-564, here's a sample command that will copy the data from Slack into a DuckDB database:

sh
ingestr ingest --source-uri 'slack://?api_key=axb-test-564' --source-table 'channels' --dest-uri duckdb:///slack.duckdb --dest-table 'dest.channels'

The result of this command will be a table in the slack.duckdb database.

Tables ​

Slack source allows ingesting the following sources into separate tables:

TablePKInc KeyInc StrategyDetails
channelsid-replaceRetrieves information about all the channels
usersid-replaceRetrieves all the users
messages:chan1,chan2tstsappend/mergeRetrieves messages from specified channels (e.g., general, memes). Multiple channels can be listed separated by commas
access_logsuser_id-appendRetrieves access logs

Use these as --source-table parameter in the ingestr ingest command.