Slack Connector
Prerequisites
- A Slack workspace
- Workspace Admin or Owner access to approve app installations
Authentication
Slack uses OAuth 2.0. Landed handles the OAuth flow automatically -- you will be redirected to Slack to authorize access.
Step 1: Connect via OAuth
- In Landed, click Add Connector and select Slack
- Click Connect to Slack
- You will be redirected to Slack's authorization page
- Select the workspace you want to connect
- Review the permissions and click Allow
- You will be redirected back to Landed
Note: Workspace Admin approval may be required if your workspace restricts app installations.
Required Slack Scopes
Landed requests the following bot token scopes:
| Scope | Streams |
|---|---|
channels:read | channels |
channels:history | messages, message_reactions |
groups:read | Private channels in channels |
groups:history | Private channel messages |
users:read | users |
users:read.email | User email addresses |
files:read | files |
usergroups:read | usergroups, usergroup_members |
team:read | team |
Configuration in Landed
| Field | Value |
|---|---|
| Channels to sync (optional) | Channel names (without #) to limit message sync. Leave empty to sync all channels. |
Available Streams
| Stream | Description | Sync Mode |
|---|---|---|
channels | Public and private channels with topic, member count | Full refresh |
channel_members | Channel membership (user-channel pairs) | Full refresh |
users | User records with name, email, bot status | Full refresh |
messages | Channel messages with text, user, thread info | Incremental |
message_reactions | Reactions on messages (emoji, user) | Incremental |
files | Shared files with name, type, size | Incremental |
usergroups | User group definitions (e.g., @engineering) | Full refresh |
usergroup_members | User group membership | Full refresh |
team | Workspace/team information | Full refresh |
Common Issues
| Symptom | Cause | Fix |
|---|---|---|
not_authed | OAuth token expired or revoked | Disconnect and reconnect the Slack connector in Landed |
missing_scope | Bot lacks required scope | Reconnect to re-authorize with all required scopes |
| No private channel data | Bot not added to private channels | Invite the Landed bot to private channels: /invite @Landed |
| Missing messages | Messages from channels not in sync list | Add channel names to the "Channels to sync" configuration, or leave empty to sync all |
ratelimited | Too many API calls | Landed handles rate limiting automatically |
Data Notes
- Slack timestamps are POSIX epoch integers (e.g.,
1609459200) - Message
tsvalues are unique identifiers, not just timestamps - Thread replies are linked to parent messages via
thread_ts - The bot must be a member of private channels to read their messages and members
Static IPs for Allowlisting
If your Slack configuration requires IP allowlisting:
- Production:
34.170.185.84,35.192.90.94 - Staging:
34.171.93.34