Skip to main content

Slack

Slack is a business communication platform that provides messaging, file sharing, and collaboration tools for teams. The Slack API allows you to integrate Slack functionality into your applications, enabling automated messaging, user management, and data synchronization.

Slack icon

Power end-to-end data operations for your Slack API with Nexla. Our bi-directional Slack connector is purpose-built for Slack, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Slack or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Slack workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

Before creating a Slack credential, you need administrator access to your Slack workspace. Slack uses OAuth2 3-legged authentication for all API requests, and Nexla's pre-registered Slack application handles the authorization flow—you do not need to create your own Slack app to authenticate.

During the authorization process, you will be redirected to Slack to sign in and grant the following Bot Token Scopes to Nexla's application:

  • Channels: channels:read, channels:history, channels:join for channel operations
  • Chat: chat:write, chat:write.public, chat:write.customize for sending messages
  • Users: users:read, users:read.email, users.profile:read for user information
  • Groups: groups:read, groups:history for private channel access
  • Direct Messages: im:read, im:history for direct message access
  • Reactions: reactions:read, reactions:write for reaction management

After authorization, Slack will provide an access token that is used in the Authorization: Bearer {token} header for all API requests to the Slack API. The token authenticates your requests and grants access to Slack resources based on the scopes above. If your credential is compromised, you should immediately revoke it from your Slack workspace's Apps settings and reauthorize. For detailed information about Slack OAuth2 authentication and available endpoints, refer to the Slack API Documentation.

Some Slack API endpoints require user-level scopes, such as search:read, that are not available through the Bot Token Scopes above. For these endpoints, use a direct Slack user token (xoxp-) instead—see Credentials required below.

Authenticate

Credentials required

Direct user token authentication for Slack API. Use this for endpoints that require user-level scopes such as search:read.

FieldRequiredSecretDescription
User TokenYesYesSlack user token (xoxp-). Found in your Slack app OAuth & Permissions page under OAuth Tokens for Your Workspace, or from a completed OAuth flow response under authed_user.access_token.

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

New Credential Overlay – Slack

SlackCred.png
  1. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  2. Slack uses OAuth2 3-legged authentication for all API requests, handled through Nexla's pre-registered Slack application. Click Authorize or Connect to initiate the OAuth2 authorization flow. You will be redirected to Slack to authorize the application.

  3. Sign in to your Slack workspace if prompted, and review the permissions requested by the application.

  4. Click Allow to grant the application access to your Slack workspace.

  5. After authorization, you will be redirected back to Nexla, and the access token will be automatically configured for your credential.

    Nexla's Slack application handles the OAuth2 3-legged authorization flow automatically—you do not need to create your own Slack app to authenticate. During credential creation, you will be redirected to Slack to sign in and authorize the application. After authorization, Slack will provide an access token that is used in the Authorization: Bearer {token} header for all API requests to the Slack API.

    If your credential is compromised, you should immediately revoke it from your Slack workspace's Apps settings and create a new credential in Nexla. The credential provides access to your Slack workspace data and should be treated as sensitive information. Keep your credentials secure and do not share them publicly.

    For detailed information about Slack OAuth2 authentication, API scopes, and available endpoints, see the Slack API Documentation and Slack API Quick Start Guide.

  6. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Slack connector tile, then select the credential that will be used to connect to the Slack instance, and click Next; or, create a new Slack credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Slack endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below.

List Channels

This endpoint template returns a list of all channel-like conversations in your Slack workspace. Use this template when you need to access channel information, member lists, or channel metadata for analysis, reporting, or integration purposes.

  • This endpoint automatically retrieves all channels accessible to your app's token. The endpoint uses cursor-based pagination to handle large datasets efficiently. You can optionally exclude archived channels by setting the exclude_archived parameter.

This endpoint returns comprehensive channel information including channel IDs, names, purposes, topics, member counts, and creation dates. The endpoint uses cursor-based pagination with cursor parameter to handle large datasets efficiently. Nexla will automatically follow the pagination cursors to fetch subsequent pages of data.

The endpoint returns both public channels and private channels (if your app has the necessary permissions). For detailed information about channel management, API response structures, pagination, and available channel data, see the Slack API Documentation.

List Users

This endpoint template returns a list of all users in your Slack workspace. Use this template when you need to access user information, contact details, or user profiles for analysis, reporting, or integration purposes.

  • This endpoint automatically retrieves all users from your Slack workspace. The endpoint uses cursor-based pagination to handle large datasets efficiently.

This endpoint returns comprehensive user information from your Slack workspace, including user IDs, names, email addresses, profile information, and user status. The endpoint uses cursor-based pagination with cursor parameter to handle large datasets efficiently. Nexla will automatically follow the pagination cursors to fetch subsequent pages of data.

For detailed information about users, API response structures, pagination, and available user data, see the Slack API Documentation.

Lists reactions made by a user.

This endpoint template returns a list of all items (file, file comment, channel message, group message, or direct message) with reactions made by a specific user from your Slack workspace. Use this template when you need to retrieve reaction data for analysis or reporting.

  • Enter the User ID in the User field. This should be the unique identifier of the user whose reactions you want to retrieve. The User ID determines which user's reactions will be retrieved. You can find the User ID by using the "List Users" endpoint or in your Slack workspace. The endpoint uses cursor-based pagination to handle large datasets efficiently.

This endpoint returns all items with reactions made by a specific user from your Slack workspace, including files, file comments, channel messages, group messages, and direct messages. The endpoint uses cursor-based pagination with cursor parameter to handle large datasets efficiently. Nexla will automatically follow the pagination cursors to fetch subsequent pages of data.

The User ID can be found by using the "List Users" endpoint or in your Slack workspace. For detailed information about reactions, API response structures, pagination, and available reaction data, see the Slack API Documentation.

Fetch Channel Messages (All)

This endpoint template returns a list of messages and events from a conversation in your Slack workspace. Use this template when you need to retrieve all messages from a channel for analysis, reporting, or integration purposes.

  • Enter the Channel ID in the Channel field. This should be the unique identifier of the channel whose messages you want to retrieve. The Channel ID determines which channel's messages will be retrieved. You can find the Channel ID by using the "List Channels" endpoint or in your Slack workspace. The endpoint uses cursor-based pagination to handle large datasets efficiently.

This endpoint returns all messages and events from a conversation in your Slack workspace, including message text, timestamps, user information, and message metadata. The endpoint uses cursor-based pagination with cursor parameter to handle large datasets efficiently. Nexla will automatically follow the pagination cursors to fetch subsequent pages of data.

The Channel ID can be found by using the "List Channels" endpoint or in your Slack workspace. For detailed information about conversations, API response structures, pagination, and available message data, see the Slack API Documentation.

Fetch Channel Messages (Incremental)

This endpoint template returns messages and events from a conversation starting from a specific timestamp in your Slack workspace. Use this template when you need to retrieve incremental message updates or messages from a specific time period. Use Nexla date-time macro {now} and arithmetic operations for relative timestamps.

  • Enter the Channel ID in the Channel field. This should be the unique identifier of the channel whose messages you want to retrieve. The Channel ID determines which channel's messages will be retrieved. You can find the Channel ID by using the "List Channels" endpoint or in your Slack workspace.
  • Enter the Oldest Timestamp in the Oldest field. This should be the Unix timestamp (in seconds) of the oldest message to retrieve. Use Nexla date-time macros like {now} or {now-1} with date format ssss to specify relative timestamps. The Oldest Timestamp determines the starting point for message retrieval.

This endpoint returns messages and events from a conversation starting from a specific timestamp in your Slack workspace, including message text, timestamps, user information, and message metadata. The endpoint uses cursor-based pagination with cursor parameter to handle large datasets efficiently. Nexla will automatically follow the pagination cursors to fetch subsequent pages of data.

The Channel ID can be found by using the "List Channels" endpoint or in your Slack workspace. Use Nexla date-time macros like {now} or {now-1} with date format ssss to specify relative timestamps for incremental data retrieval. For detailed information about conversations, API response structures, pagination, and available message data, see the Slack API Documentation.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Slack data sources can also be manually configured to ingest data from any valid Slack API endpoint, including endpoints not covered by the pre-built templates, chained API calls, or custom request parameters. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Slack data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the Slack destination, and select the Send to Destination option from the menu. Select the Slack connector from the list of available destination connectors, then select the credential that will be used to connect to the Slack organization, and click Next; or, create a new Slack credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Slack endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.

Sends a message to a channel.

This endpoint template sends a message to a public channel, private channel, or DM in your Slack workspace using records from a Nexset. Use this template when you need to automatically send notifications, alerts, or data updates to Slack channels based on data from your Nexla flows.

  • This endpoint sends data as JSON in the request body to send messages to Slack channels or direct messages. Each record from your Nexset will be sent as a separate API request to send a message. The request body should contain the message data in the format required by the Slack API, including channel ID, message text, and optional attachments, blocks, thread_ts, or mrkdwn parameters.

This endpoint sends data as JSON in the request body to send messages to Slack channels or direct messages. Each record from your Nexset will be sent as a separate API request to send a message. The request body should contain the message data in the format required by the Slack API, including channel ID (required), message text, and optional attachments, blocks, thread_ts, or mrkdwn parameters.

The channel ID can be found by using the "List Channels" data source endpoint or in your Slack workspace. The message structure must match the Slack API's expected format. For detailed information about message sending, request body formats, and available message properties, see the Slack API Documentation.

Update an existing User Group.

This endpoint template updates a User Group's properties in your Slack workspace using records from a Nexset. Use this template when you need to automatically update user group information, channels, or descriptions based on data from your Nexla flows.

  • This endpoint sends data as JSON in the request body to update user group properties in your Slack workspace. Each record from your Nexset will be sent as a separate API request to update a user group. The request body should contain the user group data in the format required by the Slack API, including usergroup ID (required), and optional name, handle, description, channels, or include_count parameters.

This endpoint sends data as JSON in the request body to update user group properties in your Slack workspace. Each record from your Nexset will be sent as a separate API request to update a user group. The request body should contain the user group data in the format required by the Slack API, including usergroup ID (required), and optional name, handle, description, channels, or include_count parameters.

The user group structure must match the Slack API's expected format. For detailed information about user group updates, request body formats, and available user group properties, see the Slack API Documentation.

Manual configuration

Slack destinations can also be manually configured to send data to any valid Slack API endpoint. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

Slack APIs typically expect JSON format for most operations. Choose JSON unless you have specific requirements for other formats like form data for file uploads. For update/upsert operations, include the ID of the object to be updated at the end of the URL.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to the configured Slack endpoint, open the destination resource menu, and select Activate.

The Nexset data will not be sent to the Slack endpoint until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.