Slack is currently in beta. The info in this guide is subject to change.
This integration is powered by Singer's Slack tap. For support, visit the GitHub repo or join the Singer Slack.
Slack integration summary
Stitch’s Slack integration replicates data from a single Slack workspace using the Slack Web API. To replicate data from multiple workspaces, create an additional Slack integration for each workspace.
Refer to the Schema section for a list of objects available for replication.
Slack feature snapshot
A high-level look at Stitch's Slack (v1) integration, including release status, useful links, and the features supported in Stitch.
STITCH | |||
Release status |
Beta |
Supported by | |
Stitch plan |
Standard |
API availability |
Available |
Singer GitHub repository | |||
REPLICATION SETTINGS | |||
Anchor Scheduling |
Supported |
Advanced Scheduling |
Supported |
Table-level reset |
Unsupported |
Configurable Replication Methods |
Unsupported |
DATA SELECTION | |||
Table selection |
Supported |
Column selection |
Supported |
Select all |
Supported |
||
TRANSPARENCY | |||
Extraction Logs |
Supported |
Loading Reports |
Supported |
Connecting Slack
Step 1: Create a Slack app and retrieve a verification token
Step 1.1: Create the app
- Navigate to the Slack App site.
- Click Create an App.
- Enter a name for the app and select the workspace you want to replicate data from.
- Click Create App.
Step 1.2: Grant relevant scopes to the app
Next, you’ll grant the required permissions to the app you created in the previous step.
- The app you created should be selected in the drop-down menu near the top-left corner of the page. If it isn’t, select it.
- Click Features > OAuth & Permissions in the left side menu.
- Scroll to the Scopes section.
- In the Bot Token Scopes section, click the Add an OAuth Scope button.
- In the field that appears, search for the following scopes:
channels:history
channels:join
channels:read
files:read
groups:read
links:read
reactions:read
remote_files:read
remote_files:write
team:read
useergroups:read
users.profile:read
users:read
users:read.email
Slack will automatically save the changes each time a scope is added.
- Repeat steps 4 and 5 until all the scopes have been added.
Step 1.3: Install the app to your workspace
After the required scopes are added to the app, you’ll need to install it to your Slack workspace. This is required to successfully connect to Stitch.
- Scroll up to the OAuth Tokens & Redirect URLs section of the OAuth & Permissions page.
- In this section, click the Install App to Workspace button.
- Complete the steps that follow to install the app or submit a request to your Workspace Owner(s) for approval.
Step 1.4: Retrieve the app's bot user OAuth access token
After the app is successfully installed to your Slack workspace, a Tokens for Your Workspace section containing a Bot User OAuth Access Token field will display on the page:
Keep the token readily available for the next step.
Step 2: Add Slack as a Stitch data source
- Sign into your Stitch account.
-
On the Stitch Dashboard page, click the Add Integration button.
-
Click the Slack icon.
-
Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.
For example, the name “Stitch Slack” would create a schema called
stitch_slack
in the destination. Note: Schema names cannot be changed after you save the integration. - In the Token field, paste the bot user OAuth access token you copied from Step 1.4.
- Check the Join public channels box if you’d like to replicate data for all public channels in the workspace you’re connecting. Otherwise, only data for channels you’ve personally joined will be replicated.
- Check the Include private channels box if you’d like to replicate data for private channels in the workspace.
- Check the Exclude archived channels box if you don’t want to replicate data from archived channels.
Step 3: Define the historical replication start date
The Sync Historical Data setting defines the starting date for your Slack integration. This means that data equal to or newer than this date will be replicated to your data warehouse.
Change this setting if you want to replicate data beyond Slack’s default setting of 1 year. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide.
Step 4: Create a replication schedule
In the Replication Frequency section, you’ll create the integration’s replication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.
Slack integrations support the following replication scheduling methods:
-
Advanced Scheduling using Cron (Advanced or Premium plans only)
To keep your row usage low, consider setting the integration to replicate less frequently. See the Understanding and Reducing Your Row Usage guide for tips on reducing your usage.
Step 5: Set objects to replicate
The last step is to select the tables and columns you want to replicate. Learn about the available tables for this integration.
Note: If a replication job is currently in progress, new selections won’t be used until the next job starts.
For Slack integrations, you can select:
-
Individual tables and columns
-
All tables and columns
Click the tabs to view instructions for each selection method.
- In the integration’s Tables to Replicate tab, locate a table you want to replicate.
-
To track a table, click the checkbox next to the table’s name. A blue checkmark means the table is set to replicate.
-
To track a column, click the checkbox next to the column’s name. A blue checkmark means the column is set to replicate.
- Repeat this process for all the tables and columns you want to replicate.
- When finished, click the Finalize Your Selections button at the bottom of the screen to save your selections.
- Click into the integration from the Stitch Dashboard page.
-
Click the Tables to Replicate tab.
- In the list of tables, click the box next to the Table Names column.
-
In the menu that displays, click Track all Tables and Fields:
- Click the Finalize Your Selections button at the bottom of the page to save your data selections.
Initial and historical replication jobs
After you finish setting up Slack, its Sync Status may show as Pending on either the Stitch Dashboard or in the Integration Details page.
For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial replication job for the integration. This may take some time to complete.
Initial replication jobs with Anchor Scheduling
If using Anchor Scheduling, an initial replication job may not kick off immediately. This depends on the selected Replication Frequency and Anchor Time. Refer to the Anchor Scheduling documentation for more information.
Free historical data loads
The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.
Slack replication
Workspace replication
Stitch can only replicate data from one Slack workspace at a time. In order to replicate multiple workspaces, you will need to create integrations for each workspace.
Slack table reference
Schemas and versioning
Schemas and naming conventions can change from version to version, so we recommend verifying your integration’s version before continuing.
The schema and info displayed below is for version 1 of this integration.
This is the latest version of the Slack integration.
Table and column names in your destination
Depending on your destination, table and column names may not appear as they are outlined below.
For example: Object names are lowercased in Redshift (CusTomERs
> customers
), while case is maintained in PostgreSQL destinations (CusTomERs
> CusTomERs
). Refer to the Loading Guide for your destination for more info.
channel_members
The channel_members
table contain info about members of channels in your Slack workspace. Channels include conversations, channels, and direct messages in your Slack workspace.
Full Table |
|
Primary Keys |
channel_id user_id |
Useful links |
Join channel_members with | on |
---|---|
channels |
channel_members.channel_id = channels.id channel_members.user_id = channels.creator channel_members.user_id = channels.members |
files |
channel_members.channel_id = files.channels channel_members.channel_id = files.pinned_to channel_members.user_id = files.user |
messages |
channel_members.channel_id = messages.channel_id channel_members.channel_id = messages.pinned_to channel_members.user_id = messages.reply_users channel_members.user_id = messages.reactions.users channel_members.user_id = messages.user |
remote_files |
channel_members.channel_id = remote_files.channels channel_members.channel_id = remote_files.pinned_to channel_members.user_id = remote_files.user |
threads |
channel_members.channel_id = threads.channel_id channel_members.user_id = threads.user channel_members.user_id = threads.reply_users |
user_groups |
channel_members.user_id = user_groups.members channel_members.user_id = user_groups.purpose.creator channel_members.user_id = user_groups.topic.creator |
users |
channel_members.user_id = users.id |
channel_id STRING |
user_id STRING |
channels
The channels
table contains info about the channels in your Slack workspace. This includes conversations, channels, and direct messages.
Note: Some types of channels - for example, private or archived channels - will be replicated only if the appropriate settings are configured in the integration’s settings. Refer to the Slack setup steps for more info.
Full Table |
|
Primary Key |
id |
Useful links |
Join channels with | on |
---|---|
channel_members |
channels.id = channel_members.channel_id channels.creator = channel_members.user_id channels.members = channel_members.user_id |
files |
channels.id = files.channels channels.id = files.pinned_to channels.pending_connected_team_ids = files.source_team channels.pending_connected_team_ids = files.user_team channels.creator = files.user channels.members = files.user |
messages |
channels.id = messages.channel_id channels.id = messages.pinned_to channels.pending_connected_team_ids = messages.bot_profile.team_id channels.pending_connected_team_ids = messages.team channels.pending_connected_team_ids = messages.source_team channels.pending_connected_team_ids = messages.user_team channels.creator = messages.reply_users channels.members = messages.reply_users channels.creator = messages.reactions.users channels.members = messages.reactions.users channels.creator = messages.user channels.members = messages.user |
remote_files |
channels.id = remote_files.channels channels.id = remote_files.pinned_to channels.pending_connected_team_ids = remote_files.source_team channels.pending_connected_team_ids = remote_files.user_team channels.creator = remote_files.user channels.members = remote_files.user |
threads |
channels.id = threads.channel_id channels.pending_connected_team_ids = threads.team channels.creator = threads.user channels.members = threads.user channels.creator = threads.reply_users channels.members = threads.reply_users |
teams |
channels.pending_connected_team_ids = teams.id |
users |
channels.pending_connected_team_ids = users.team_id channels.creator = users.id channels.members = users.id |
user_groups |
channels.creator = user_groups.members channels.members = user_groups.members channels.creator = user_groups.purpose.creator channels.members = user_groups.purpose.creator channels.creator = user_groups.topic.creator channels.members = user_groups.topic.creator |
channel_id STRING |
|||
created DATE-TIME |
|||
creator STRING |
|||
id STRING |
|||
is_archived BOOLEAN |
|||
is_channel BOOLEAN |
|||
is_ext_shared BOOLEAN |
|||
is_general BOOLEAN |
|||
is_group BOOLEAN |
|||
is_im BOOLEAN |
|||
is_member BOOLEAN |
|||
is_mpim BOOLEAN |
|||
is_org_shared BOOLEAN |
|||
is_pending_ext_shared BOOLEAN |
|||
is_private BOOLEAN |
|||
is_shared BOOLEAN |
|||
members ARRAY |
|||
name STRING |
|||
name_normalized STRING |
|||
num_members INTEGER |
|||
parent_conversation STRING |
|||
pending_connected_team_ids ARRAY |
|||
pending_shared ARRAY |
|||
previous_names ARRAY |
|||
purpose OBJECT
|
|||
shared_team_ids ARRAY |
|||
topic OBJECT
|
|||
unlinked DATE-TIME |
files
The files
table contains info about Slack team files.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated |
Useful links |
Join files with | on |
---|---|
channels |
files.channels = channels.id files.pinned_to = channels.id files.source_team = channels.pending_connected_team_ids files.user_team = channels.pending_connected_team_ids files.user = channels.creator files.user = channels.members |
channel_members |
files.channels = channel_members.channel_id files.pinned_to = channel_members.channel_id files.user = channel_members.user_id |
messages |
files.channels = messages.channel_id files.pinned_to = messages.channel_id files.channels = messages.pinned_to files.pinned_to = messages.pinned_to files.id = messages.file_ids files.source_team = messages.bot_profile.team_id files.user_team = messages.bot_profile.team_id files.source_team = messages.team files.user_team = messages.team files.source_team = messages.source_team files.user_team = messages.source_team files.source_team = messages.user_team files.user_team = messages.user_team files.user = messages.reply_users files.user = messages.reactions.users files.user = messages.user |
remote_files |
files.channels = remote_files.channels files.pinned_to = remote_files.channels files.channels = remote_files.pinned_to files.pinned_to = remote_files.pinned_to files.groups = remote_files.groups files.source_team = remote_files.source_team files.user_team = remote_files.source_team files.source_team = remote_files.user_team files.user_team = remote_files.user_team files.user = remote_files.user |
threads |
files.channels = threads.channel_id files.pinned_to = threads.channel_id files.source_team = threads.team files.user_team = threads.team files.user = threads.user files.user = threads.reply_users |
user_groups |
files.groups = user_groups.id files.groups = user_groups.parent_group files.user = user_groups.members files.user = user_groups.purpose.creator files.user = user_groups.topic.creator |
teams |
files.source_team = teams.id files.user_team = teams.id |
users |
files.source_team = users.team_id files.user_team = users.team_id files.user = users.id |
channels ARRAY |
comments_count INTEGER |
created DATE-TIME |
date_delete DATE-TIME |
display_as_bot BOOLEAN |
editable BOOLEAN |
editor STRING |
external_id STRING |
external_type STRING |
external_url STRING |
filetype STRING |
groups ARRAY |
has_rich_preview BOOLEAN |
id STRING |
image_exif_rotation INTEGER |
ims ARRAY |
is_external BOOLEAN |
is_public BOOLEAN |
is_starred BOOLEAN |
is_tombstoned BOOLEAN |
last_editor STRING |
mimetype STRING |
mode STRING |
name STRING |
non_owner_editable BOOLEAN |
num_stars INTEGER |
original_h INTEGER |
original_w INTEGER |
permalink STRING |
permalink_public STRING |
pinned_info OBJECT |
pinned_to ARRAY |
pretty_type STRING |
preview STRING |
public_url_shared BOOLEAN |
size INTEGER |
source_team STRING |
state STRING |
thumb_1024 STRING |
thumb_1024_h INTEGER |
thumb_1024_w INTEGER |
thumb_160 STRING |
thumb_360 STRING |
thumb_360_h INTEGER |
thumb_360_w INTEGER |
thumb_480 STRING |
thumb_480_h INTEGER |
thumb_480_w INTEGER |
thumb_64 STRING |
thumb_720 STRING |
thumb_720_h INTEGER |
thumb_720_w INTEGER |
thumb_80 STRING |
thumb_800 STRING |
thumb_800_h INTEGER |
thumb_800_w INTEGER |
thumb_960 STRING |
thumb_960_h INTEGER |
thumb_960_w INTEGER |
thumb_tiny STRING |
timestamp DATE-TIME |
title STRING |
updated DATE-TIME |
url_private STRING |
url_private_download STRING |
user STRING |
user_team STRING |
username STRING |
messages
The messages
table contains the history of messages and events in conversations in your Slack workspace.
Key-based Incremental |
|
Primary Keys |
channel_id ts |
Replication Key |
ts |
Useful links |
Join messages with | on |
---|---|
channels |
messages.channel_id = channels.id messages.pinned_to = channels.id messages.bot_profile.team_id = channels.pending_connected_team_ids messages.team = channels.pending_connected_team_ids messages.source_team = channels.pending_connected_team_ids messages.user_team = channels.pending_connected_team_ids messages.reply_users = channels.creator messages.reactions.users = channels.creator messages.user = channels.creator messages.reply_users = channels.members messages.reactions.users = channels.members messages.user = channels.members |
channel_members |
messages.channel_id = channel_members.channel_id messages.pinned_to = channel_members.channel_id messages.reply_users = channel_members.user_id messages.reactions.users = channel_members.user_id messages.user = channel_members.user_id |
files |
messages.channel_id = files.channels messages.pinned_to = files.channels messages.channel_id = files.pinned_to messages.pinned_to = files.pinned_to messages.file_ids = files.id messages.bot_profile.team_id = files.source_team messages.team = files.source_team messages.source_team = files.source_team messages.user_team = files.source_team messages.bot_profile.team_id = files.user_team messages.team = files.user_team messages.source_team = files.user_team messages.user_team = files.user_team messages.reply_users = files.user messages.reactions.users = files.user messages.user = files.user |
remote_files |
messages.channel_id = remote_files.channels messages.pinned_to = remote_files.channels messages.channel_id = remote_files.pinned_to messages.pinned_to = remote_files.pinned_to messages.bot_profile.team_id = remote_files.source_team messages.team = remote_files.source_team messages.source_team = remote_files.source_team messages.user_team = remote_files.source_team messages.bot_profile.team_id = remote_files.user_team messages.team = remote_files.user_team messages.source_team = remote_files.user_team messages.user_team = remote_files.user_team messages.reply_users = remote_files.user messages.reactions.users = remote_files.user messages.user = remote_files.user |
threads |
messages.channel_id = threads.channel_id messages.pinned_to = threads.channel_id messages.bot_profile.team_id = threads.team messages.team = threads.team messages.source_team = threads.team messages.user_team = threads.team messages.reply_users = threads.user messages.reactions.users = threads.user messages.user = threads.user messages.reply_users = threads.reply_users messages.reactions.users = threads.reply_users messages.user = threads.reply_users |
teams |
messages.bot_profile.team_id = teams.id messages.team = teams.id messages.source_team = teams.id messages.user_team = teams.id |
users |
messages.bot_profile.team_id = users.team_id messages.team = users.team_id messages.source_team = users.team_id messages.user_team = users.team_id messages.reply_users = users.id messages.reactions.users = users.id messages.user = users.id |
user_groups |
messages.reply_users = user_groups.members messages.reactions.users = user_groups.members messages.user = user_groups.members messages.reply_users = user_groups.purpose.creator messages.reactions.users = user_groups.purpose.creator messages.user = user_groups.purpose.creator messages.reply_users = user_groups.topic.creator messages.reactions.users = user_groups.topic.creator messages.user = user_groups.topic.creator |
blocks ARRAY
|
||||||
bot_id STRING |
||||||
bot_profile OBJECT
|
||||||
channel_id STRING |
||||||
client_msg_id STRING |
||||||
display_as_bot BOOLEAN |
||||||
file_id STRING |
||||||
file_ids ARRAY |
||||||
icons OBJECT
|
||||||
inviter STRING |
||||||
is_delayed_message BOOLEAN |
||||||
is_intro BOOLEAN |
||||||
is_starred BOOLEAN |
||||||
last_read DATE-TIME |
||||||
latest_reply STRING |
||||||
name STRING |
||||||
old_name STRING |
||||||
parent_user_id STRING |
||||||
permalink STRING |
||||||
pinned_to ARRAY |
||||||
purpose STRING |
||||||
reactions ARRAY
|
||||||
reply_count INTEGER |
||||||
reply_users ARRAY |
||||||
reply_users_count INTEGER |
||||||
source_team STRING |
||||||
subscribed BOOLEAN |
||||||
subtype STRING |
||||||
team STRING |
||||||
text STRING |
||||||
thread_ts STRING |
||||||
topic STRING |
||||||
ts DATE-TIME |
||||||
type STRING |
||||||
unread_count INTEGER |
||||||
upload BOOLEAN |
||||||
user STRING |
||||||
user_team STRING |
||||||
username STRING |
remote_files
The remote_files
table contains info about remote files added to Slack.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated |
Useful links |
Join remote_files with | on |
---|---|
channels |
remote_files.channels = channels.id remote_files.pinned_to = channels.id remote_files.source_team = channels.pending_connected_team_ids remote_files.user_team = channels.pending_connected_team_ids remote_files.user = channels.creator remote_files.user = channels.members |
channel_members |
remote_files.channels = channel_members.channel_id remote_files.pinned_to = channel_members.channel_id remote_files.user = channel_members.user_id |
files |
remote_files.channels = files.channels remote_files.pinned_to = files.channels remote_files.channels = files.pinned_to remote_files.pinned_to = files.pinned_to remote_files.groups = files.groups remote_files.source_team = files.source_team remote_files.user_team = files.source_team remote_files.source_team = files.user_team remote_files.user_team = files.user_team remote_files.user = files.user |
messages |
remote_files.channels = messages.channel_id remote_files.pinned_to = messages.channel_id remote_files.channels = messages.pinned_to remote_files.pinned_to = messages.pinned_to remote_files.source_team = messages.bot_profile.team_id remote_files.user_team = messages.bot_profile.team_id remote_files.source_team = messages.team remote_files.user_team = messages.team remote_files.source_team = messages.source_team remote_files.user_team = messages.source_team remote_files.source_team = messages.user_team remote_files.user_team = messages.user_team remote_files.user = messages.reply_users remote_files.user = messages.reactions.users remote_files.user = messages.user |
threads |
remote_files.channels = threads.channel_id remote_files.pinned_to = threads.channel_id remote_files.source_team = threads.team remote_files.user_team = threads.team remote_files.user = threads.user remote_files.user = threads.reply_users |
user_groups |
remote_files.groups = user_groups.id remote_files.groups = user_groups.parent_group remote_files.user = user_groups.members remote_files.user = user_groups.purpose.creator remote_files.user = user_groups.topic.creator |
teams |
remote_files.source_team = teams.id remote_files.user_team = teams.id |
users |
remote_files.source_team = users.team_id remote_files.user_team = users.team_id remote_files.user = users.id |
channels ARRAY |
comments_count INTEGER |
created DATE-TIME |
date_delete DATE-TIME |
display_as_bot BOOLEAN |
editable BOOLEAN |
editor STRING |
external_id STRING |
external_type STRING |
external_url STRING |
filetype STRING |
groups ARRAY |
has_rich_preview BOOLEAN |
id STRING |
image_exif_rotation INTEGER |
ims ARRAY |
is_external BOOLEAN |
is_public BOOLEAN |
is_starred BOOLEAN |
is_tombstoned BOOLEAN |
last_editor STRING |
mimetype STRING |
mode STRING |
name STRING |
non_owner_editable BOOLEAN |
num_stars INTEGER |
original_h INTEGER |
original_w INTEGER |
permalink STRING |
permalink_public STRING |
pinned_info OBJECT |
pinned_to ARRAY |
pretty_type STRING |
preview STRING |
public_url_shared BOOLEAN |
size INTEGER |
source_team STRING |
state STRING |
thumb_1024 STRING |
thumb_1024_h INTEGER |
thumb_1024_w INTEGER |
thumb_160 STRING |
thumb_360 STRING |
thumb_360_h INTEGER |
thumb_360_w INTEGER |
thumb_480 STRING |
thumb_480_h INTEGER |
thumb_480_w INTEGER |
thumb_64 STRING |
thumb_720 STRING |
thumb_720_h INTEGER |
thumb_720_w INTEGER |
thumb_80 STRING |
thumb_800 STRING |
thumb_800_h INTEGER |
thumb_800_w INTEGER |
thumb_960 STRING |
thumb_960_h INTEGER |
thumb_960_w INTEGER |
thumb_tiny STRING |
timestamp DATE-TIME |
title STRING |
updated DATE-TIME |
url_private STRING |
url_private_download STRING |
user STRING |
user_team STRING |
username STRING |
teams
The teams
table contains info about teams in your Slack workspace.
Full Table |
|
Useful links |
Join teams with | on |
---|---|
channels |
teams.id = channels.pending_connected_team_ids |
files |
teams.id = files.source_team teams.id = files.user_team |
messages |
teams.id = messages.bot_profile.team_id teams.id = messages.team teams.id = messages.source_team teams.id = messages.user_team |
remote_files |
teams.id = remote_files.source_team teams.id = remote_files.user_team |
threads |
teams.id = threads.team |
users |
teams.id = users.team_id |
archived BOOLEAN |
||||||||
avatar_base_url STRING |
||||||||
created DATE-TIME |
||||||||
date_create DATE-TIME |
||||||||
deleted DATE-TIME |
||||||||
description STRING |
||||||||
discoverable STRING |
||||||||
domain STRING |
||||||||
email_domain STRING |
||||||||
enterprise_id STRING |
||||||||
enterprise_name STRING |
||||||||
has_compliance_export BOOLEAN |
||||||||
icon OBJECT
|
||||||||
id STRING |
||||||||
is_assigned BOOLEAN |
||||||||
is_enterprise INTEGER |
||||||||
messages_count INTEGER |
||||||||
msg_edit_window_mins INTEGER |
||||||||
name STRING |
||||||||
over_integrations_limit BOOLEAN |
||||||||
over_storage_limit BOOLEAN |
||||||||
plan STRING |
threads
The threads
table contains info about conversation threads in your Slack team.
Note: While this table uses Full Table, it’s not truly replicated in full during each replication job. Each time a message in a thread is updated, the entire thread and all the messages it contains will be replicated in full. This means that while only updated threads are replicated, they are replicated in full whenever they’re updated.
Full Table |
|
Primary Keys |
channel_id thread_ts |
Useful links |
Join threads with | on |
---|---|
channels |
threads.channel_id = channels.id threads.team = channels.pending_connected_team_ids threads.user = channels.creator threads.reply_users = channels.creator threads.user = channels.members threads.reply_users = channels.members |
channel_members |
threads.channel_id = channel_members.channel_id threads.user = channel_members.user_id threads.reply_users = channel_members.user_id |
files |
threads.channel_id = files.channels threads.channel_id = files.pinned_to threads.team = files.source_team threads.team = files.user_team threads.user = files.user threads.reply_users = files.user |
messages |
threads.channel_id = messages.channel_id threads.channel_id = messages.pinned_to threads.team = messages.bot_profile.team_id threads.team = messages.team threads.team = messages.source_team threads.team = messages.user_team threads.user = messages.reply_users threads.reply_users = messages.reply_users threads.user = messages.reactions.users threads.reply_users = messages.reactions.users threads.user = messages.user threads.reply_users = messages.user |
remote_files |
threads.channel_id = remote_files.channels threads.channel_id = remote_files.pinned_to threads.team = remote_files.source_team threads.team = remote_files.user_team threads.user = remote_files.user threads.reply_users = remote_files.user |
teams |
threads.team = teams.id |
users |
threads.team = users.team_id threads.user = users.id threads.reply_users = users.id |
user_groups |
threads.user = user_groups.members threads.reply_users = user_groups.members threads.user = user_groups.purpose.creator threads.reply_users = user_groups.purpose.creator threads.user = user_groups.topic.creator threads.reply_users = user_groups.topic.creator |
blocks ARRAY
|
|
channel_id STRING |
|
client_msg_id STRING |
|
latest_reply STRING |
|
reply_count INTEGER |
|
reply_users ARRAY |
|
reply_users_count NUMBER |
|
subscribed BOOLEAN |
|
team STRING |
|
text STRING |
|
thread_ts STRING |
|
ts DATE-TIME |
|
type STRING |
|
user STRING |
user_groups
The user_groups
table contains info about user groups from your Slack team.
Full Table |
|
Primary Key |
id |
Useful links |
Join user_groups with | on |
---|---|
files |
user_groups.id = files.groups user_groups.parent_group = files.groups user_groups.members = files.user user_groups.purpose.creator = files.user user_groups.topic.creator = files.user |
remote_files |
user_groups.id = remote_files.groups user_groups.parent_group = remote_files.groups user_groups.members = remote_files.user user_groups.purpose.creator = remote_files.user user_groups.topic.creator = remote_files.user |
channel_members |
user_groups.members = channel_members.user_id user_groups.purpose.creator = channel_members.user_id user_groups.topic.creator = channel_members.user_id |
channels |
user_groups.members = channels.creator user_groups.purpose.creator = channels.creator user_groups.topic.creator = channels.creator user_groups.members = channels.members user_groups.purpose.creator = channels.members user_groups.topic.creator = channels.members |
messages |
user_groups.members = messages.reply_users user_groups.purpose.creator = messages.reply_users user_groups.topic.creator = messages.reply_users user_groups.members = messages.reactions.users user_groups.purpose.creator = messages.reactions.users user_groups.topic.creator = messages.reactions.users user_groups.members = messages.user user_groups.purpose.creator = messages.user user_groups.topic.creator = messages.user |
threads |
user_groups.members = threads.user user_groups.purpose.creator = threads.user user_groups.topic.creator = threads.user user_groups.members = threads.reply_users user_groups.purpose.creator = threads.reply_users user_groups.topic.creator = threads.reply_users |
users |
user_groups.members = users.id user_groups.purpose.creator = users.id user_groups.topic.creator = users.id |
created DATE-TIME |
|||
creator STRING |
|||
id STRING |
|||
is_archived BOOLEAN |
|||
is_deleted BOOLEAN |
|||
is_group BOOLEAN |
|||
is_moved INTEGER |
|||
is_mpim BOOLEAN |
|||
is_open BOOLEAN |
|||
is_pending_ext_shared BOOLEAN |
|||
is_read_only BOOLEAN |
|||
is_thread_only BOOLEAN |
|||
last_read DATE-TIME |
|||
members ARRAY |
|||
name STRING |
|||
name_normalized STRING |
|||
num_members INTEGER |
|||
parent_group STRING |
|||
priority NUMBER |
|||
purpose OBJECT
|
|||
topic OBJECT
|
|||
unread_count INTEGER |
|||
unread_count_display INTEGER |
users
The users
table lists contains info about the users in your Slack team. This includes deactivated and deleted users.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated |
Useful links |
Join users with | on |
---|---|
channels |
users.team_id = channels.pending_connected_team_ids users.id = channels.creator users.id = channels.members |
files |
users.team_id = files.source_team users.team_id = files.user_team users.id = files.user |
messages |
users.team_id = messages.bot_profile.team_id users.team_id = messages.team users.team_id = messages.source_team users.team_id = messages.user_team users.id = messages.reply_users users.id = messages.reactions.users users.id = messages.user |
remote_files |
users.team_id = remote_files.source_team users.team_id = remote_files.user_team users.id = remote_files.user |
teams |
users.team_id = teams.id |
threads |
users.team_id = threads.team users.id = threads.user users.id = threads.reply_users |
channel_members |
users.id = channel_members.user_id |
user_groups |
users.id = user_groups.members users.id = user_groups.purpose.creator users.id = user_groups.topic.creator |
color STRING |
|
deleted BOOLEAN |
|
has_2fa BOOLEAN |
|
id STRING |
|
is_admin BOOLEAN |
|
is_app_user BOOLEAN |
|
is_bot BOOLEAN |
|
is_owner BOOLEAN |
|
is_primary_owner BOOLEAN |
|
is_restricted BOOLEAN |
|
is_ultra_restricted BOOLEAN |
|
name STRING |
|
profile OBJECT
|
|
real_name STRING |
|
team_id STRING |
|
tz STRING |
|
tz_label STRING |
|
tz_offset INTEGER |
|
updated DATE-TIME |
Related | Troubleshooting |
Questions? Feedback?
Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.