1. Help
  2. Integrations
  3. iPaaS
  4. connector-documentation
  5. Slack Connector

purple icon for coordination.
We’ve moved!
Our Help Center has a new home and our URLs have changed. Please update your bookmark to this page before April 30, 2026

Slack Connector

Learn how to configure the Slack Connector in Xurrent iPaaS. Send and manage Slack messages, channels, users, file uploads, and process Slack Events and interactive button clicks using secure authentication.

Overview

The Slack connector integrates Xurrent iPaaS runbooks with a Slack workspace. It can send and manage messages, manage channels, look up users, upload files, and react to inbound Slack events (including interactive button clicks).

Status: The connector is published as Slack Connector - Alpha.

The connector calls the Slack Web API (https://slack.com/api/{method}) for its outbound actions and consumes the Slack Events API and interactive payloads for its inbound triggers.

It provides:

  • Messaging — send, update, and delete messages; add emoji reactions.
  • Interactions — receive button clicks and respond to them.
  • Channels — list, get, create, and archive channels; invite and remove members.
  • Users — list users, get a user, and look up a user by email.
  • Files — upload a file and share it to a channel.

Prerequisites

To use this connector, you need:

  • A Slack workspace with a Slack app configured.
  • A Bot token (xoxb-...) with the OAuth scopes required by the actions you use (see Authentication).
  • A Signing Secret (from your Slack app's Basic Information page) for verifying inbound webhook requests — required only if you use the triggers.

Authentication

The connector uses two separate connections.

Outbound (API calls)

Outbound actions authenticate with Bearer token authentication using a Slack Bot token.

Field Value
Bearer token Your Slack Bot token (xoxb-...), stored as a secret.

The required OAuth scopes depend on which actions you use:

Action Scope
Send / Update / Delete Message chat:write
Add Reaction reactions:write
List / Get / Create / Archive public channels channels:read, channels:manage
List / Get / Create / Archive private channels groups:read, groups:write
List DMs (im types) im:read
List group DMs (mpim types) mpim:read
Invite members (public channels) channels:write.invites or channels:manage
Invite members (private channels) groups:write.invites or groups:write
Remove members (public channels) channels:manage
Remove members (private channels) groups:write
List / Get Users users:read
Find User by Email users:read.email
Upload File files:write

Inbound (webhooks)

Inbound triggers authenticate each request with the app's Signing Secret.

Field Value
Signing Secret Your Slack app's Signing Secret, stored as a secret.

There is one Signing Secret per Slack app, so it is configured once on the inbound connection and shared by all Slack triggers.

Every inbound request is verified before any trigger parsing runs:

  • The request signature is validated with HMAC-SHA256 request signing (v0= scheme) using the Signing Secret.
  • The X-Slack-Request-Timestamp header must be present and numeric.
  • Requests older than 5 minutes are rejected to prevent replay attacks; requests dated more than 60 seconds in the future are also rejected (allowing a small clock-skew tolerance).
  • The X-Slack-Signature header is compared to the computed signature using a constant-time comparison.

To send events, configure the Slack Events API Request URL to point at the Slack Events trigger endpoint. For button clicks, enable Interactivity in your Slack app and point the Request URL at the Button Click trigger endpoint.

Triggers

This connector provides two inbound triggers.

Slack Events

Receives events from the Slack Events API.

On first setup, Slack sends a url_verification request; the connector automatically answers it with the required challenge response, so no runbook action is needed. Only event_callback requests are processed further — any other request type is ignored.

Output

Field Type Description
type string The outer event type (always event_callback for processed events).
team_id string The workspace (team) ID. Used as the job context identifier.
api_app_id string The Slack app ID.
event_id string Unique identifier for this event.
event_time integer Epoch time the event occurred.
event object The inner event payload (see below).

event object

Field Type Description
type string The inner event type (e.g., app_mention, message, reaction_added).
channel string Channel ID the event occurred in.
user string User ID that generated the event.
text string Message text, when applicable.
ts string Message timestamp.
event_ts string Event timestamp.
channel_type string Channel type (e.g., channel, im).

Receiving events requires the corresponding Events API scopes on the bot token — typically app_mentions:read (for app_mention), channels:history (for message.channels), and reactions:read (for reaction_added / reaction_removed).

Button Click

Receives an interactive payload when a user clicks a button in a Slack message. Only block_actions interactions are processed; other interaction types are ignored.

Output

Field Type Description
type string The interaction type (always block_actions for processed events).
trigger_id string Short-lived ID for opening modals in response.
response_url string URL to post a response to (use with the Respond to Button Click action).
team object id, domain.
user object id, username, name, team_id — the user who clicked.
channel object id, name.
message object type, text, ts — the message containing the button.
actions array One entry per clicked action: action_id, block_id, type, value, action_ts (strings) and text (object).

Actions

Messaging

Send Message

Sends a message to a Slack channel using chat.postMessage.

Input Parameters
Parameter Type Required Default Description
channel string Yes Channel ID (e.g., C1234567890).
text string Yes Message text (supports Slack markdown).
thread_ts string No Timestamp of the parent message to reply in a thread.
Example Input
{
  "channel": "C1234567890",
  "text": "Deployment finished :white_check_mark:"
}
Output

ok (boolean), channel (string), ts (string), message (object).

Example Output
{
  "ok": true,
  "channel": "C1234567890",
  "ts": "1700000000.000100",
  "message": { "text": "Deployment finished :white_check_mark:", "type": "message" }
}

Update Message

Updates an existing message using chat.update.

Input Parameters
Parameter Type Required Default Description
channel string Yes Channel ID containing the message.
ts string Yes Timestamp of the message to update.
text string Yes New message text.
Output

ok (boolean), channel (string), ts (string), text (string), message (object).

Delete Message

Deletes a message using chat.delete.

Input Parameters
Parameter Type Required Default Description
channel string Yes Channel ID containing the message.
ts string Yes Timestamp of the message to delete.
Output

ok (boolean), channel (string), ts (string).

Add Reaction

Adds an emoji reaction to a message using reactions.add.

Input Parameters
Parameter Type Required Default Description
channel string Yes Channel ID where the message is located.
timestamp string Yes Timestamp of the message to react to.
name string Yes Emoji name without colons (e.g., thumbsup).
Output

ok (boolean).

Interactions

Respond to Button Click

Responds to a Slack button click using the response_url from the Button Click trigger output. The request is posted directly to the Slack-provided URL and is validated to be a hooks.slack.com HTTPS URL.

Input Parameters
Parameter Type Required Default Description
response_url string Yes The response_url from the Button Click trigger output.
text string Yes Response message text (supports Slack markdown).
replace_original boolean No true Whether to replace the original message.
Output

ok (boolean).

Channels

List Channels

Lists channels in the workspace using conversations.list. This action is paginated (cursor-based) and returns one page per invocation; the connector tracks the cursor automatically.

Input Parameters
Parameter Type Required Default Description
types string No public_channel Channel types: public_channel, private_channel, mpim, im (comma-separated).
exclude_archived boolean No true Exclude archived channels.
limit integer No 200 Channels per page (1–1000).
Output

channels (array of channel objects) and has_next_page (boolean).

Channel object fields: id, name, is_channel, is_private, is_archived, num_members, creator, created.

Get Channel

Gets information about a channel using conversations.info.

Input Parameters
Parameter Type Required Default Description
channel string Yes Channel ID (e.g., C1234567890).
Output

id, name, is_channel, is_private, is_archived, num_members, topic (object), purpose (object), creator, created.

Create Channel

Creates a new channel using conversations.create.

Input Parameters
Parameter Type Required Default Description
name string Yes Channel name (lowercase, no spaces, max 80 chars).
is_private boolean No false Whether to create a private channel.
Output

id, name, is_channel, is_private, creator, created.

Archive Channel

Archives a channel using conversations.archive.

Input Parameters
Parameter Type Required Default Description
channel string Yes Channel ID to archive.
Output

ok (boolean).

Invite to Channel

Invites users to a channel using conversations.invite.

Input Parameters
Parameter Type Required Default Description
channel string Yes Channel ID.
users string Yes Comma-separated user IDs to invite (max 100 per call).
Output

id (string), name (string) — the channel the users were invited to.

Remove from Channel

Removes a user from a channel using conversations.kick.

Input Parameters
Parameter Type Required Default Description
channel string Yes Channel ID.
user string Yes User ID to remove.
Output

ok (boolean).

Users

List Users

Lists users in the workspace using users.list. This action is paginated (cursor-based) and returns one page per invocation; the connector tracks the cursor automatically.

Input Parameters
Parameter Type Required Default Description
limit integer No 200 Users per page (1–1000).
Output

members (array of user objects) and has_next_page (boolean).

User object fields: id, name, real_name, is_admin, is_bot, is_restricted, deleted, profile (object).

Get User

Gets information about a user using users.info.

Input Parameters
Parameter Type Required Default Description
user string Yes User ID (e.g., U1234567890).
Output

id, name, real_name, is_admin, is_bot, is_restricted, deleted, profile (object).

Find User by Email

Finds a user by email using users.lookupByEmail. This is the primary way runbooks map a Xurrent person (identified by email) to a Slack user ID.

Input Parameters
Parameter Type Required Default Description
email string Yes Email address to look up.
Output

id, name, real_name, is_admin, is_bot, deleted, profile (object).

Files

Upload File

Uploads a file and shares it to a channel using Slack's v2 upload flow (files.getUploadURLExternal → upload → files.completeUploadExternal).

Input Parameters
Parameter Type Required Default Description
channel_id string Yes Channel ID to share the file in.
content binary Yes File content (text or binary bytes).
filename string Yes Name of the file (e.g., report.txt).
title string No filename Title of the file.
initial_comment string No Message text to accompany the file.
Output

ok (boolean) and files (array of { id, title }).

Rate limiting

The connector includes built-in handling for Slack API rate limits: it automatically backs off and retries, respecting the Retry-After header returned by Slack.

HTTP code Scenario Handling strategy
429 Rate limit exceeded Retry with backoff (uses the Retry-After header).
503 Service unavailable Retry with backoff.

Slack rate limits are applied per API method, per workspace, per app. Design runbooks for roughly one request per second as a baseline. Note that chat.postMessage is additionally limited to about one message per second per channel.

Best Practices

  • Resolve users by email. Use Find User by Email to map a Xurrent person to a Slack user ID rather than hard-coding IDs.
  • Use channel IDs, not names. All channel parameters expect an ID (e.g., C1234567890), not a #channel-name.
  • Complete pagination. For List Channels and List Users, keep invoking the action while has_next_page is true; do not infer completion from the number of results returned.
  • Request only the scopes you use. Grant the bot token only the scopes for the actions your runbooks actually call (see Authentication).
  • Verify inbound requests. Configure the Signing Secret on the inbound connection so every event and interaction is signature-verified before processing.
  • Keep messages within Slack limits. Message text has practical length limits; for large content, use Upload File instead.

Common Use Cases

  • Notify on record change: Xurrent event → Send Message to a channel.
  • Approvals in Slack: Send Message with a button → Button Click trigger → Respond to Button Click to confirm the choice.
  • Targeted alerts: Find User by EmailSend Message to that user's ID.
  • Provisioning: Create ChannelInvite to ChannelSend Message with onboarding info.
  • Share reports: generate a file in a runbook → Upload File to a channel with an initial comment.

References

Slack API reference

Concepts

Setup