Data integration and the Slack connector
Rippit connects to Slack in two ways, and both can read your messages. This page covers the data integration. The Slack connector is an MCP connection that Rippit’s agent uses during a chat.
You can read Slack through either one, but ingesting is what makes analysis possible. With every message stored, the agent works across all of them at once instead of fetching recent history one channel at a time.
The connector is still worth connecting separately. It is how Rippit posts results and reports back to Slack, and it lets the agent look up a channel you have not chosen to ingest. The two are separate Slack apps with separate installs and scopes, so if you connect both, review both.
Connection summary
Before you connect
Install the app into a single Slack workspace. Rippit does not support organization-wide installs on Enterprise Grid, and rejects one with the message to select a workspace and try again. Slack’s install screen lists the optional scopes as checkboxes. Declining them narrows what Rippit collects:- Files (
files:read): without it, file attachments are not downloaded. - Reactions (
reactions:read): without it, reactions are not recorded. - Private channels (
groups:read,groups:history): Rippit does not sync private channels whether or not you grant these.
im:history, im:read) are required for the app’s Messages tab in Slack. Rippit drops every direct message event without storing it.
Choosing channels
Rippit syncs only the channels on your list in Rippit. The bot being in a channel is not enough.- Pick channels in Rippit. Select public channels in Rippit, up to 50 at a time, and Rippit joins them.
- Invite the bot from Slack. Type
/invite @Rippit Data Ingestionin a public channel. The bot replies privately to you, and the channel is added to your list. When more than one Rippit account uses the same Slack workspace, the channel is not added; an admin adds it in Rippit. - Private channels. Inviting the bot to a private channel imports nothing. The bot replies privately that private channels are not synced.
/remove @Rippit Data Ingestion in Slack.
Data handling
What a thread becomes in Rippit
Each Slack thread becomes one conversation in Rippit. A message with no replies is a conversation of one message.
Slack’s message formatting is converted to Markdown. User mentions, channel mentions, and links resolve to readable names and links.
Channel housekeeping messages are excluded: joins, leaves, renames, topic and purpose changes, pins, and archive and unarchive notices.
API endpoints
Web API calls go tohttps://slack.com/api/, and file downloads go to each file’s url_private_download on files.slack.com. Every call after the install carries the bot token as Authorization: Bearer <token>. The token exchange comes before there is a bot token, so it sends the authorization code with Rippit’s app credentials instead.
Authorization
Setup and channel selection
Sync
Channel discovery lists every public channel the bot is in, and Rippit reads only the ones on your list. Every list is paged with Slack’s cursor.
Slack has no endpoint that lists every message in a workspace, so messages are read channel by channel.
conversations.history returns top-level messages only, which is why conversations.replies appears: it reads a thread’s existing replies once, when the thread is first seen. Later replies arrive as events.
Events
Slack sends these events to Rippit, which verifies each request’s Slack signature before accepting it.Sync behavior
Rate limiting
- Slack reports most errors, including rate limiting, in a response body marked
"ok": falserather than as an HTTP error. Rippit reads the body: rate-limited and temporary failures are retried, and a revoked token or a missing scope is not retried. - Thread reply lookups run at most 4 at a time, and single message lookups at most 2.
- Channel joins run one at a time, up to 50 per request. A rate-limit or authorization error stops the remaining joins, and those channels are reported as not joined.