You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(source-slack): add configurable toggle to skip replies for zero-reply messages (#75905)
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: bot_apk <apk@cognition.ai>
Co-authored-by: Sophie Cui <sophie.cui@airbyte.io>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
# One complication is that threads can be updated at Any time in the future. Therefore, if we wanted to comprehensively sync data
333
343
# i.e: get every single response in a thread, we'd have to read every message in the slack instance every time we ran a sync,
334
344
# because otherwise there is no way to guarantee that a thread deep in the past didn't receive a new message.
@@ -432,6 +442,11 @@ spec:
432
442
examples:
433
443
- channel_one
434
444
- channel_two
445
+
threads_ignore_no_replies:
446
+
type: boolean
447
+
default: false
448
+
title: Ignore messages with no replies in threads stream
449
+
description: When enabled, the threads stream will skip messages that have no replies (reply_count is 0, null, or absent), reducing the number of API calls. Disabled by default to make Threads stream contain unthreaded messages in its records.
435
450
credentials:
436
451
title: Authentication mechanism
437
452
description: Choose how to authenticate into Slack
Copy file name to clipboardExpand all lines: docs/integrations/sources/slack.md
+13-2Lines changed: 13 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -85,7 +85,10 @@ If you are using an API key to authenticate to Slack, a refresh token is not req
85
85
<FieldAnchorfield="include_private_channels">
86
86
9. (Optional) **Include_private_channels** Toggle on to sync data from private channels. You will need to manually add the bot to private channels even if `join_channels` is toggled on.
87
87
</FieldAnchor>
88
-
10. Click **Set up source**. You must add the App created in Step 1 to the channels with the data that you want to sync.
88
+
<FieldAnchorfield="threads_ignore_no_replies">
89
+
10. (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 to make the Threads stream contain unthreaded messages in its records.
90
+
</FieldAnchor>
91
+
11. Click **Set up source**. You must add the App created in Step 1 to the channels with the data that you want to sync.
89
92
<!-- /env:cloud -->
90
93
91
94
<!-- env:oss -->
@@ -101,7 +104,8 @@ If you are using an API key to authenticate to Slack, a refresh token is not req
101
104
7.**Threads Lookback window (Days)**. This corresponds to the number of days in the past from which you want to sync data.
102
105
8. (Optional) **Channel filter** the list of channel names (without leading '#' char) that limits the channels from which you'd like to sync. If no channels are specified, Airbyte will replicate data from all channels.
103
106
9. (Optional) **Include_private_channels** Toggle on to sync data from private channels. You will need to manually add the bot to private channels even if `join_channels` is toggled on.
104
-
10. Click **Set up source**. You must add the App created in Step 1 to the channels with the data that you want to sync.
107
+
10. (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 to make the Threads stream contain unthreaded messages in its records.
108
+
11. Click **Set up source**. You must add the App created in Step 1 to the channels with the data that you want to sync.
105
109
<!-- /env:oss -->
106
110
107
111
<HideInUI>
@@ -170,6 +174,12 @@ These two streams are effectively limited to **one request per minute**. Conside
170
174
171
175
- Check out common troubleshooting issues for the Slack source connector on our Airbyte Forum [here](https://github.com/airbytehq/airbyte/discussions).
172
176
177
+
#### Threads stream performance
178
+
179
+
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.
180
+
181
+
-**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.
182
+
-**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.
173
183
174
184
</details>
175
185
@@ -183,6 +193,7 @@ These two streams are effectively limited to **one request per minute**. Conside
| 3.1.15 | 2026-03-31 |[75905](https://github.com/airbytehq/airbyte/pull/75905)| Add configurable option to skip conversations.replies API calls for messages with no replies, reducing unnecessary API usage |
186
197
| 3.1.14 | 2026-03-27 |[75197](https://github.com/airbytehq/airbyte/pull/75197)| Add declarative OAuth with `oauth_connector_input_specification` and granular scopes |
0 commit comments