Skip to main content

Slack

This page contains the setup guide and reference information for the Slack source connector.

Prerequisites

Before you begin, have the following ready:

  • Administrator access to an active Slack Workspace
  • Slack App OAuth (preferred) or Bot Token

Setup guide

Step 1: Set up Slack

The following instructions guide you through creating a Slack app. Airbyte can only replicate messages from channels that the app has been added to.

info

If you are using a Slack Bot Token, you can skip this section.

warning

OAuth-only rate limit note: When authenticating via OAuth, the Slack source temporarily throttles the Channel Messages and Threads streams to one request per minute after receiving an HTTP 429 rate limit response. The connector automatically recovers to full speed after five consecutive successful responses. To avoid slowing down other streams during throttled periods, consider creating a separate connection for these two streams. See the Rate limiting section for details.

If you authenticate using a Bot Token, this OAuth-specific throttle does not apply.

To create a Slack App, read this tutorial on how to create an app, or follow these instructions.

  1. Go to your Apps
  2. Click Create New App. Select From Scratch.
  3. Choose a name for your app and select the name of your Slack workspace. Click Create App.
  4. In the navigation menu, select OAuth & Permissions.
  5. Navigate to Scopes. In Bot Token Scopes, select the following scopes:
 channels:history
channels:join
channels:read
files:read
groups:read
links:read
reactions:read
remote_files:read
team:read
usergroups:read
users:read
users.profile:read
  1. At the top of the "OAuth & Permissions" page, click Install to Workspace. This will generate a Bot User OAuth Token. Copy this for later if you are using bot token authentication.
  2. Go to your Slack instance. For any public channel, go to Info, More, and select Add Apps.
  3. Search for your newly created app. (If you are using the desktop version of Slack, you may need to restart Slack for it to pick up the new App). Add the App to all channels you want to sync data from.
note

If you are using a bot token to authenticate to Slack, a refresh token is not required, as bot tokens never expire. You can learn more about refresh tokens here.

Step 2: Set up the Slack connector in Airbyte

For Airbyte Cloud:

  1. In the navigation bar, click Sources.
  2. Click New source.
  3. Find and click Slack.
  4. Click Authenticate your Slack account. Log in and authorize Airbyte to access your Slack account.
  1. Toggle join_channels, if you want to join all public channels or to sync data only from channels the bot is already in. If not set, you'll need to manually add the bot to all the channels from which you'd like to sync messages. This feature requires the channels:join OAuth scope.
  1. Start Date: Any data before this date will not be extracted.
  1. Threads Lookback window (Days). This corresponds to the number of days in the past from which you want to sync data.
  1. (Optional) Channel filter: A list of channel names (without the leading #) that limits the channels from which you'd like to sync. If no channels are specified, Airbyte replicates data from all channels.
  1. (Optional) Include private channels: Toggle on to sync data from private channels. You must manually add the bot to private channels even if Join all channels is toggled on.
  1. (Optional) Include archived channels: Toggle on to include archived channels in the sync. When disabled (default), archived channels are excluded from the Slack API response, reducing the number of API calls for downstream streams. Enable this if you need to sync data from archived channels.
  1. (Optional) Ignore messages with no replies in threads stream: Toggle on to skip messages with no replies (reply_count=0) in the Threads stream. This reduces unnecessary conversations.replies API calls and can significantly speed up syncs for workspaces with many messages. Disabled by default so the Threads stream contains records for all messages.
  1. Click Set up source. You must add the App created in Step 1 to the channels with the data that you want to sync.

For Airbyte Open Source:

  1. In the navigation bar, click Sources.
  2. Click New source.
  3. Find and click Slack.
  4. Click Sign in via Slack (OAuth). Enter the Access Token, Client ID, and Client Secret. Alternatively, enter the Bot Token from Step 1.
  5. Toggle join_channels, if you want to join all public channels or to sync data only from channels the bot is already in. If not set, you'll need to manually add the bot to all the channels from which you'd like to sync messages. This feature requires the channels:join OAuth scope.
  6. Start Date: Any data before this date will not be extracted.
  7. Threads Lookback window (Days). This corresponds to the number of days in the past from which you want to sync data.
  8. (Optional) Channel filter: A list of channel names (without the leading #) that limits the channels from which you'd like to sync. If no channels are specified, Airbyte replicates data from all channels.
  9. (Optional) Include private channels: Toggle on to sync data from private channels. You must manually add the bot to private channels even if Join all channels is toggled on.
  10. (Optional) Include archived channels: Toggle on to include archived channels in the sync. When disabled (default), archived channels are excluded from the Slack API response, reducing the number of API calls for downstream streams. Enable this if you need to sync data from archived channels.
  11. (Optional) Ignore messages with no replies in threads stream: Toggle on to skip messages with no replies (reply_count=0) in the Threads stream. This reduces unnecessary conversations.replies API calls and can significantly speed up syncs for workspaces with many messages. Disabled by default so the Threads stream contains records for all messages.
  12. Click Set up source. You must add the App created in Step 1 to the channels with the data that you want to sync.

Supported sync modes

The Slack source connector supports the following sync modes:

FeatureSupported?
Full Refresh SyncYes
Incremental SyncYes
NamespacesNo

Supported Streams

For most of the streams, the Slack source connector uses the Conversations API under the hood.

Performance considerations

The connector is restricted by Slack rate limits. When a request is rate-limited with HTTP 429, the connector automatically respects the Retry-After header returned by the Slack API and waits the specified duration before retrying.

We highly recommend only syncing required channels. This can be done by specifying the channel_filter in the Slack configuration settings.

If you expect to sync a large amount of data, such as historical data, you can try increasing the number of concurrent threads. The default is 2. Increasing this value could cause the connector to be rate-limited by Slack, so monitor the logs for rate limit errors.

Data type map

Integration TypeAirbyte Type
stringstring
numbernumber
arrayarray
objectobject

Limitations & Troubleshooting

Expand to see details about Slack connector limitations and troubleshooting.

Connector limitations

Rate limiting

Slack has rate limit restrictions.

Rate Limits for Channel Messages and Threads streams:

OAuth authentication: For apps authenticated via OAuth, the connector enforces a stricter budget on:

When the connector receives an HTTP 429 response on these streams, it temporarily drops to one request per minute. After five consecutive successful responses, the connector automatically recovers to its normal request rate. If another 429 occurs during recovery, the counter resets.

Because this throttle can slow down a sync that includes other streams, consider creating a separate connection for Channel Messages and Threads so that Users, Channels, and Channel Members are not affected.

Bot Token authentication: When using a Slack Bot Token, this OAuth-specific throttle does not apply; only Slack's general rate limits apply. Both conversations.history and conversations.replies are Tier 3 methods, allowing 50 or more requests per minute.

Troubleshooting

  • Check out common troubleshooting issues for the Slack source connector on our Airbyte Forum here.

Threads stream performance

If your Threads stream syncs are slow, consider enabling the Ignore messages with no replies in threads stream (threads_ignore_no_replies) option. By default, the Threads stream calls the conversations.replies API for every message, including those with no replies. In many workspaces, the majority of messages have no replies, so these API calls are wasted and consume rate-limit budget.

  • Set to true when you want to optimize sync performance and only need thread replies for messages that actually have threaded conversations. This can reduce API calls by up to 89% depending on your workspace.
  • Keep as false (default) when you need the Threads stream to include records for all messages, including unthreaded ones. This preserves the current behavior where every message appears in the Threads stream output.

Reference

Config fields reference

Field
Type
Property name
boolean
join_channels
integer
lookback_window
string
start_date
array<string>
channel_filter
integer
channel_messages_window_size
object
credentials
boolean
include_archived_channels
boolean
include_private_channels
integer
num_workers
boolean
threads_ignore_no_replies

Changelog

Expand to review
VersionDatePull RequestSubject
3.2.72026-04-3077628Improve threads_ignore_no_replies filter to also check thread_ts, reducing unnecessary conversations.replies API calls
3.2.62026-04-3077607Improve error handling for Slack API ok=false responses: add catch-all for unrecognized errors and expand error code coverage
3.2.52026-04-2977601Surface missing OAuth scope as config error instead of silently failing channel joins
3.2.42026-04-2877531Use RATE_LIMITED action for rate-limit filters, add failure_type classification, and remove generic ok=false catch-all in favor of default HTTP status handling
3.2.32026-04-2877450Update dependencies
3.2.22026-04-2776985Allow OAuth API budget to recover after transient 429 rate limits instead of permanently throttling the sync
3.2.12026-04-2776981Remove unused OAuth scopes (im:history, mpim:history, im:read, mpim:read) not exercised by any stream. New OAuth installs see a narrower consent screen; existing tokens are unaffected.
3.2.02026-04-2776982Exclude archived channels by default; add include_archived_channels config option to opt in
3.1.242026-04-2776980Reduce channels stream page size from 1000 to 999 to comply with Slack API spec
3.1.232026-04-2476984Detect Slack API ok=false responses as errors to prevent silent data loss
3.1.222026-04-2476983Honor Slack's Retry-After header on HTTP 429 responses for all streams
3.1.212026-04-2176477Scope the non-member channel filter to only channel_messages and threads so channel_members and channels keep syncing every public channel
3.1.202026-04-2176760Update dependencies
3.1.192026-04-2076297Rename "API Token" to "Bot Token" in connector spec and docs
3.1.182026-04-1576324Skip non-member channels when auto-join is disabled to prevent cursor pollution
3.1.172026-04-1376276Rename "concurrent workers" to "concurrent threads" in connector spec
3.1.162026-04-0276052Skip joining archived channels that are rejected by the Slack API
3.1.152026-04-0275905Add configurable option to skip conversations.replies API calls for messages with no replies, reducing unnecessary API usage
3.1.142026-03-2775197Add declarative OAuth with oauth_connector_input_specification and granular scopes
3.1.132026-03-2475329Update dependencies
3.1.122026-03-1074598Update dependencies
3.1.112026-02-2473948Update dependencies
3.1.102026-02-1773564Update dependencies
3.1.92026-02-1073208Update dependencies
3.1.82026-02-0369495Update dependencies
3.1.72025-10-2968772Update dependencies
3.1.62025-10-2168282Update dependencies
3.1.52025-10-1467767Update dependencies
3.1.42025-10-0767449Update dependencies
3.1.32025-10-0667084Update dependencies
3.1.22025-09-3066566Update to CDK v7
3.1.12025-09-2466640Update dependencies
3.1.02025-09-1866501Promoting release candidate 3.1.0-rc.1 to a main version.
3.1.0-rc.12025-09-1064160Migrate to manifest-only.
3.0.02025-09-1065937Add migration guide for missing state issue
2.2.02025-09-1066155Promoting release candidate 2.2.0-rc.7 to a main version.
2.2.0-rc.72025-08-2165132Update API budget to depend on auth method (rate limits apply only with OAuth).
2.2.0-rc.62025-08-1464553Add API budget for Threads and Channel Messages streams.
2.2.0-rc.52025-08-0664530Set use_cache = true for Channels and Channel Messages streams.
2.2.0-rc.42025-08-0464486Add backoff strategy for Channels stream.
2.2.0-rc.32025-07-2964107Add custom partition router.
2.2.0-rc.22025-07-2363732Enable progressive rollout.
2.2.0-rc.12025-07-2363278Migrate Threads stream to manifest.
2.1.02025-07-1162930Promoting release candidate 2.1.0-rc.1 to a main version.
2.1.0-rc.12025-07-0762110Bump cdk v6
2.0.22025-07-0562709Update dependencies
2.0.12025-06-2851965Update dependencies
2.0.02025-06-2562055Add breaking change notification for migrating to the new Slack Marketplace application to retain higher rate limits.
1.3.22025-01-1143812Starting with this version, the Docker image is now rootless. Please note that this and future versions will not be compatible with Airbyte versions earlier than 0.64
1.3.12024-07-2442485Fix MRO error for IncrementalMessageStream
1.3.02024-07-1741994Migrate to CDK v3.5.1
1.2.02024-07-1641970Migrate to CDK v2.4.0
1.1.132024-07-1341863Update dependencies
1.1.122024-07-1041485Update dependencies
1.1.112024-07-0941231Update dependencies
1.1.102024-07-0640839Update dependencies
1.1.92024-06-2540347Update dependencies
1.1.82024-06-2240166Update dependencies
1.1.72025-06-1439343Update state handling for threads Python stream
1.1.62024-06-1239416Respect include_private_channels option in threads stream
1.1.52024-06-1039132Convert string state to float for threads stream
1.1.42024-06-0639271[autopull] Upgrade base image to v1.2.2
1.1.32024-06-0539121Change cursor format for channel_messages stream to %s_as_float
1.1.22024-05-2338619Fix cursor granularity for the channel_messages stream
1.1.12024-05-0236661Schema descriptions
1.1.02024-04-1837332Add the capability to sync from private channels
1.0.02024-04-0235477Migration to low-code CDK
0.4.12024-03-2736579Upgrade airbyte-cdk version to emit record counts as floats
0.4.02024-03-1936267Pin airbyte-cdk version to ^0
0.3.92024-02-1235157Manage dependencies with Poetry
0.3.82024-02-0935131Fixed the issue when schema discovery fails with 502 due to the platform timeout
0.3.72024-01-101234Prepare for airbyte-lib
0.3.62023-11-2132707Threads: do not use client-side record filtering
0.3.52023-10-1931599Base image migration: remove Dockerfile and use the python-connector-base image
0.3.42023-10-0631134Update CDK and remove non iterable return from records
0.3.32023-09-2830580Add bot_id field to threads schema
0.3.22023-09-2030613Set default value for channel_filters during discover
0.3.12023-09-1930570Use default availability strategy
0.3.02023-09-1830521Add unexpected fields to streams channel_messages, channels, threads, users
0.2.02023-05-2426497Fixed lookback window value limitations
0.1.262023-05-1726186Limited the lookback window range for input configuration
0.1.252023-03-2022889Specified date formatting in specification
0.1.242023-03-2024126Increase page size to 1000
0.1.232023-02-2121907Do not join channels that not gonna be synced
0.1.222023-01-2722022Set AvailabilityStrategy for streams explicitly to None
0.1.212023-01-1221321Retry Timeout error
0.1.202022-12-2120767Update schema
0.1.192022-12-0119970Remove OAuth2.0 broken refresh_token support
0.1.182022-09-2817315Always install latest version of Airbyte CDK
0.1.172022-08-2816085Increase unit test coverage
0.1.162022-08-2816050Fix SATs
0.1.152022-03-3111613Add 'channel_filter' config and improve performance
0.1.142022-01-269575Correct schema
0.1.132021-11-087499Remove base-python dependencies
0.1.122021-10-076570Implement OAuth support with OAuth authenticator
0.1.112021-08-275830Fix sync operations hang forever issue
0.1.102021-08-275697Fix max retries issue
0.1.92021-07-204860Fix reading threads issue
0.1.82021-07-144683Add float_ts primary key
0.1.72021-06-253978Release Slack CDK Connector