Slack
App · Messaging · 79 actions · 6 triggers
Post, schedule and edit Slack messages with Markdown or Block Kit, share and download files, and manage channels, reactions, pins and bookmarks. Look people up by email or name, and work with user groups, canvases, Lists and Workflow Builder workflows.
Triggers
Start a workflow when something happens in Slack. See how triggers work.
New Slack message
Runs when a new message is posted in a Slack channel.
Filters
Narrow which events start a run.
channel_idRequiredfrom_userkeyword
Event fields
What a run starts with. Later steps read each field with an @ reference.
message_tstextchannel_idtextuser_idtexttexttext
Channel created
Runs when a new Slack channel is created.
Event fields
What a run starts with. Later steps read each field with an @ reference.
channel_idtextnametextis_privatetrue/falsecreator_idtextcreatednumber
New command in channel
Runs when a message in a Slack channel starts with a command word.
Filters
Narrow which events start a run.
channel_idRequiredcommandRequiredfrom_user
Event fields
What a run starts with. Later steps read each field with an @ reference.
message_tstextchannel_idtextuser_idtexttexttextcommandtextargumentstext
New mention in channel
Runs when someone is mentioned in a Slack channel.
Filters
Narrow which events start a run.
channel_idRequireduser_idfrom_user
Event fields
What a run starts with. Later steps read each field with an @ reference.
message_tstextchannel_idtextuser_idtexttexttextmentioned_user_idtext
Reaction added to message
Runs when an emoji reaction is added to a Slack message.
Filters
Narrow which events start a run.
channel_idRequiredemojifrom_user
Event fields
What a run starts with. Later steps read each field with an @ reference.
message_tstextchannel_idtextemojitextuser_idtexttexttext
Reaction removed from message
Runs when an emoji reaction is removed from a Slack message.
Filters
Narrow which events start a run.
channel_idRequiredemojifrom_user
Event fields
What a run starts with. Later steps read each field with an @ reference.
message_tstextchannel_idtextemojitextuser_idtexttexttext
Actions
| Action | What it does |
|---|---|
| Add a bookmark | Add a link to the bookmarks bar under a channel's name, such as this week's dashboard or the current release notes. |
| Add a List item | Add an item to a Slack List, filling in the columns you give. |
| Add a reaction | Add an emoji reaction to a Slack message. |
| Add people to a user group | Add people to a user group, keeping everyone already in it. |
| Archive a channel | Archive a Slack channel. |
| Create a canvas | Create a canvas from Markdown, such as a weekly report or an incident summary. |
| Create a channel | Create a new public or private Slack channel. |
| Create a channel canvas | Create a channel's own canvas, the one shown in the channel's header, for example to hold a project's plan or a team's links. |
| Create a List | Create a Slack List, a table of items people can track together, with the columns you name or copied from another List. |
| Create a user group | Create a user group, an @team handle that notifies everyone in it. |
| Delete a canvas | Delete a canvas. |
| Delete a file | Delete a file from Slack. |
| Delete a List item | Delete an item from a Slack List. |
| Delete a message | Delete a Slack message. |
| Delete a scheduled message | Cancel a message scheduled with Schedule a message before it is sent. |
| Disable a user group | Disable a user group so its handle stops notifying anyone. |
| Download a file | Save a file shared in Slack as a Lodol document, so later steps can read or attach it (an invoice to extract data from, say). |
| Edit a bookmark | Change a bookmark's title, link or emoji. |
| Edit a canvas | Make one change to a canvas: add Markdown at the start or end, before or after a section, replace a section or the whole canvas, delete a section, or rename it. |
| Edit a message | Replace the text of a message the app has already posted. |
| Enable a user group | Re-enable a disabled user group. |
| Export a List | Export a Slack List as a CSV or JSON file saved as a Lodol document, for a spreadsheet, a report or another step. |
| Find a channel by name | Find a channel by its name and get its ID, for example to post in a channel named in a form or spreadsheet. |
| Find a user by email | Find the workspace member with an email address, for example to message the person behind a form entry or CRM record. |
| Find a user by name | Find a workspace member by handle, display name or full name, ignoring capitals. |
| Find canvas sections | Find the IDs of a canvas's sections by kind (headings, lists, tables and so on) or by the text they contain, for Edit a canvas. |
| Find messages | Return every recent message matching your search criteria. |
| Get a channel | Get a channel's details: name, topic, description, creator, whether it is private or archived, and its member count. |
| Get a file | Get a file's details: name, type, size, who shared it and where. |
| Get a List item | Get one item from a Slack List, with its values by column name. |
| Get a message by timestamp | Fetch a single Slack message by its channel and timestamp. |
| Get a message link | Get a shareable link to a message, including a reply in a thread. |
| Get a message's reactions | List every emoji reaction on a message and who added each one. |
| Get a user | Look up one workspace member's profile details by ID. |
| Get a user's Do Not Disturb status | Check a member's Do Not Disturb schedule, for example before sending a non-urgent message. |
| Get a user's presence | Check whether a member is active in Slack right now or away. |
| Get a user's profile | Get a member's profile: name, title, contact details, status and the workspace's custom profile fields. |
| Get channel history | Read a channel's recent messages, newest first. |
| Get thread messages | List every message in a thread, starting with the message that started it. |
| Get workspace info | Get the connected workspace's name, address, email domain and icon. |
| Invite a user to a channel | Add one or more workspace members to a Slack channel. |
| Join a channel | Add the Lodol app to a public channel so it can read the channel's messages. |
| Leave a channel | Take the Lodol app out of a channel. |
| List a user's channels | List the channels a member belongs to: every public channel they're in, plus private channels the Lodol app shares with them. |
| List bookmarks | List the bookmarks in a channel's bookmarks bar. |
| List channels | List the Slack channels you can access, optionally hiding archived ones. |
| List custom emoji | List the workspace's custom emoji, alphabetically. |
| List files | List files shared in the workspace, newest first, optionally narrowed to a channel, a person, file types or a date range. |
| List items in a List | Get the items in a Slack List, with its title and columns. |
| List pinned messages | List the messages pinned in a channel. |
| List profile fields | List the custom profile fields the workspace defines, such as Team or Start date, with their IDs and allowed values. |
| List scheduled messages | List the messages this Slack connection has scheduled that haven't been sent yet. |
| List user group members | List the IDs of the people in a user group. |
| List user groups | List the workspace's user groups, the @team handles that notify a set of people at once. |
| List users in a channel | List the members of one Slack channel. |
| List users in the workspace | List the members of the connected Slack workspace. |
| Pin a message | Pin a message to its channel. |
| Remove a bookmark | Remove a bookmark from a channel's bookmarks bar. |
| Remove a reaction | Remove an emoji reaction the Lodol app added to a message. |
| Remove a user from a channel | Remove a member from a Slack channel. |
| Remove people from a user group | Take people out of a user group, keeping everyone else. |
| Rename a channel | Rename a channel. |
| Schedule a message | Schedule a message to be posted at a future time. |
| Send a direct message | Send a direct message to a Slack user. |
| Send a direct message by email | Send a direct message to the workspace member with an email address, without looking up their Slack ID first. |
| Send a group direct message | Send one message to a group direct message with 2 to 8 people. |
| Send a message to a channel | Send a message to a public or private Slack channel. |
| Send an ephemeral message | Show a message in a channel that only one member can see. |
| Set a channel description | Set the description shown in a channel's details, up to 250 characters. |
| Set a channel topic | Set the topic shown at the top of a Slack channel. |
| Set user group members | Replace a user group's members with exactly these people, for example to hand @oncall to this week's rota. |
| Share a canvas | Share a canvas with channels or people, as sharing it in Slack does: its link is posted to each channel and sent to each person, with an optional message, and they can then view or edit it. |
| Share a List | Let channels or people view or edit a Slack List. |
| Start a Slack workflow | Start a Workflow Builder workflow that begins 'From a webhook', passing it up to 20 variables. |
| Unpin a message | Unpin a message from its channel. |
| Unshare a canvas | Remove channels' or people's access to a canvas. |
| Update a List item | Change some of a List item's values; columns you leave empty keep their values. |
| Update a user group | Change a user group's name, handle, description or default channels. |
| Upload a file | Share a file in a channel or thread, with an optional message. |
Add a bookmark
Add a link to the bookmarks bar under a channel's name, such as this week's dashboard or the current release notes. A channel holds up to 100 bookmarks.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Title
titletextRequired - The bookmark's title.
- Link
linktextRequired - The web address to bookmark, starting with https://.
- Emoji
emojitext - An emoji to show beside the bookmark, e.g. pushpin or :pushpin:.
Outputs
bookmarkobject- The bookmark.
statustext- Operation status (typically 'success').
Example output
{
"bookmark": {
"channel_id": "example_value",
"date_created": 1,
"date_updated": 1,
"emoji": "example_value",
"icon_url": "example_value",
"id": "example_value",
"link": "example_value",
"title": "example_value",
"type": "example_value"
},
"status": "example_value"
}Add a List item
Add an item to a Slack List, filling in the columns you give. Needs a paid Slack plan.
Inputs
- List
list_idtextRequired - The List's ID (it starts with F), as Create a List returns it, or the List's link from Slack (Copy link).
- Values
fieldsobject - Values by column. A choice column takes the choice's name, a people or channel column takes member or channel IDs, and several values are separated by commas. Dates are YYYY-MM-DD and checkboxes true or false.
- Subtask of
parent_item_idtext - To add a subtask, the ID of the item it belongs under.
Outputs
itemobject- The List item.
statustext- Operation status (typically 'success').
Example output
{
"item": {
"archived": true,
"created_by": "example_value",
"date_created": 1,
"fields": {},
"id": "example_value",
"list_id": "example_value",
"parent_item_id": "example_value",
"updated_by": "example_value"
},
"status": "example_value"
}Add a reaction
Add an emoji reaction to a Slack message.
Inputs
- Channel
channel_idtextRequired - The channel that contains the message to react to.
- Message timestamp
timestamptextRequired - The timestamp of the message to react to (the value returned when the message was sent).
- Emoji
emojitextRequired - The emoji name, for example thumbsup or :thumbsup: (surrounding colons are optional).
Outputs
statustext- Operation status (typically 'success').
Example output
{
"status": "example_value"
}Add people to a user group
Add people to a user group, keeping everyone already in it. People already in the group are left as they are. Needs a paid Slack plan, and a workspace setting that lets everyone manage user groups (by default only admins can).
Inputs
- User group
user_group_idtextRequired - The user group (an @team handle) to act on.
- People
user_idslistRequired - The people to act on. Guests and bots can't be in a user group.
Outputs
addedlist- IDs of the people who were added.
already_memberslist- IDs of the people who were already in it.
statustext- Operation status (typically 'success').
user_group_idtext- Group ID.
user_idslist- IDs of everyone in the group now.
Example output
{
"added": [],
"already_members": [],
"status": "example_value",
"user_group_id": "example_value",
"user_ids": []
}Archive a channel
Archive a Slack channel.
Inputs
- Channel
channel_idtextRequired - The channel to archive.
Outputs
statustext- Operation status (typically 'success').
Example output
{
"status": "example_value"
}Create a canvas
Create a canvas from Markdown, such as a weekly report or an incident summary. With a channel it is added to that channel as a tab its members can edit. Without one it is a standalone canvas that only the app can see until you share it, which needs a paid Slack plan. The app can write canvases but can't read their content back.
Inputs
- Title
titletextRequired - The canvas's title.
- Content
contenttextRequired - The content, in Markdown: headings (up to ###), lists, checklists, tables, quotes, code and links. Mention someone with `` and a channel with ``. Up to about a million characters.
- Add to channel
channel_idtext - A channel to add the canvas to as a tab. Required on free Slack plans, which allow one such canvas per channel.
Outputs
canvas_idtext- Canvas ID, for the other canvas steps.
channel_idtext- Channel it was added to, if any.
permalinktext- Link to the canvas, when Slack returns one.
statustext- Operation status (typically 'success').
Example output
{
"canvas_id": "example_value",
"channel_id": "example_value",
"permalink": "example_value",
"status": "example_value"
}Create a channel
Create a new public or private Slack channel.
Inputs
- Channel name
nametextRequired - The name for the new channel. Capitals become lowercase and spaces become hyphens automatically.
- Private channel
is_privatetrue/false - Set to true to make the channel private.Default:
false. - Topic
topictext - A topic to set for the channel.
- Description
descriptiontext - A description of what the channel is for, shown in its details (Slack calls this the channel's purpose).
Outputs
channelobjectstatustext- Operation status (typically 'success').
Example output
{
"channel": {
"id": "example_value",
"is_archived": true,
"is_private": true,
"name": "example_value"
},
"status": "example_value"
}Create a channel canvas
Create a channel's own canvas, the one shown in the channel's header, for example to hold a project's plan or a team's links. A channel has only one. If it already has one, nothing is written and its ID comes back with created set to false, so you can change it with Edit a canvas.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Content
contenttextRequired - The content, in Markdown: headings (up to ###), lists, checklists, tables, quotes, code and links. Mention someone with `` and a channel with ``. Up to about a million characters.
- Title
titletext - The canvas's title.
Outputs
canvas_idtext- ID of the channel's canvas.
channel_idtext- Channel ID.
createdtrue/false- False when the channel already had a canvas.
statustext- Operation status (typically 'success').
Example output
{
"canvas_id": "example_value",
"channel_id": "example_value",
"created": true,
"status": "example_value"
}Create a List
Create a Slack List, a table of items people can track together, with the columns you name or copied from another List. A List the app creates is visible only to the app until it is shared, so give channels to share it with. Needs a paid Slack plan.
Inputs
- Name
nametextRequired - The List's name.
- Columns
columnslist - The List's columns, in order. The first is its main column and must be text. A choice column lists its choices separated by commas. Leave empty for a single text column, or when copying a List.
- Description
descriptiontext - What the List is for.
- Track tasks
todo_modetrue/false - Set to true to add Completed, Assignee and Due date columns for tracking tasks.Default:
false. - Copy columns from List
copy_from_list_idtext - A List to copy the columns from, by ID or link. Columns above are then ignored.
- Copy its items too
include_copied_itemstrue/false - When copying a List, set to true to copy its items too.Default:
false. - Share with channels
share_with_channel_idslist - Channels whose members can view and edit the new List.
Outputs
columnslist- The List's columns.
list_idtext- List ID, for the other List steps.
permalinktext- Link to the List, when Slack returns one.
shared_with_channel_idslist- IDs of the channels it was shared with.
statustext- Operation status (typically 'success').
Example output
{
"columns": [],
"list_id": "example_value",
"permalink": "example_value",
"shared_with_channel_ids": [],
"status": "example_value"
}Create a user group
Create a user group, an @team handle that notifies everyone in it. Add people afterwards with Set user group members. Needs a paid Slack plan, and a workspace setting that lets everyone manage user groups (by default only admins can).
Inputs
- Name
nametextRequired - The group's name, e.g. On-call Engineers. Must be unique.
- Handle
handletext - The handle people mention, e.g. oncall for @oncall. Must not match a channel, a member or another group.
- Description
descriptiontext - What the group is for.
- Default channels
default_channel_idslist - Channels that people added to the group are added to as well.
Outputs
statustext- Operation status (typically 'success').
user_groupobject- The user group.
Example output
{
"status": "example_value",
"user_group": {
"created_by": "example_value",
"date_create": 1,
"date_update": 1,
"default_channel_ids": [],
"description": "example_value",
"handle": "example_value",
"id": "example_value",
"is_disabled": true,
"name": "example_value",
"user_count": 1,
"user_ids": []
}
}Delete a canvas
Delete a canvas. Slack has no way to get a deleted canvas back.
Inputs
- Canvas
canvas_idtextRequired - The canvas: pick one the app can see, or enter its ID (it starts with F) or its link.
Outputs
canvas_idtext- ID of the deleted canvas.
statustext- Operation status (typically 'success').
Example output
{
"canvas_id": "example_value",
"status": "example_value"
}Delete a file
Delete a file from Slack. The Lodol app can delete files it uploaded; Slack refuses files other people shared.
Inputs
- File ID
file_idtextRequired - The ID of a Slack file, such as the 'id' Upload a file or List files returns (it starts with F).
Outputs
file_idtext- ID of the deleted file.
statustext- Operation status (typically 'success').
Example output
{
"file_id": "example_value",
"status": "example_value"
}Delete a List item
Delete an item from a Slack List. Needs a paid Slack plan.
Inputs
- List
list_idtextRequired - The List's ID (it starts with F), as Create a List returns it, or the List's link from Slack (Copy link).
- Item ID
item_idtextRequired - The item's ID (it starts with Rec), as Add a List item returns it.
Outputs
item_idtext- ID of the deleted item.
list_idtext- List ID.
statustext- Operation status (typically 'success').
Example output
{
"item_id": "example_value",
"list_id": "example_value",
"status": "example_value"
}Delete a message
Delete a Slack message. A bot connection can only delete messages it posted itself.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Message timestamp
timestamptextRequired - The timestamp of the message (the 'ts' value returned when the message was sent).
Outputs
statustext- Operation status (typically 'success').
Example output
{
"status": "example_value"
}Delete a scheduled message
Cancel a message scheduled with Schedule a message before it is sent. Slack can't cancel one due within the next 60 seconds.
Inputs
- Channel
channel_idtextRequired - The channel the message is scheduled for.
- Scheduled message ID
scheduled_message_idtextRequired - The 'scheduled_message_id' Schedule a message returned, or an 'id' from List scheduled messages.
Outputs
channel_idtext- Channel the message was scheduled for.
scheduled_message_idtext- ID of the cancelled message.
statustext- Operation status (typically 'success').
Example output
{
"channel_id": "example_value",
"scheduled_message_id": "example_value",
"status": "example_value"
}Disable a user group
Disable a user group so its handle stops notifying anyone. Enable a user group brings it back. Needs a paid Slack plan, and a workspace setting that lets everyone manage user groups (by default only admins can).
Inputs
- User group
user_group_idtextRequired - The user group (an @team handle) to act on.
Outputs
statustext- Operation status (typically 'success').
user_groupobject- The user group.
Example output
{
"status": "example_value",
"user_group": {
"created_by": "example_value",
"date_create": 1,
"date_update": 1,
"default_channel_ids": [],
"description": "example_value",
"handle": "example_value",
"id": "example_value",
"is_disabled": true,
"name": "example_value",
"user_count": 1,
"user_ids": []
}
}Download a file
Save a file shared in Slack as a Lodol document, so later steps can read or attach it (an invoice to extract data from, say). Files up to 100 MB. A file only linked from another service, like Google Drive, can't be downloaded through Slack.
Inputs
- File ID
file_idtextRequired - The ID of a Slack file, such as the 'id' Upload a file or List files returns (it starts with F).
Outputs
content_typetext- MIME type of the file.
document_reftext- Reference to the saved document, for steps that take a file.
documentslist- The saved document, as a one-item list for steps that take several.
fileobject- The file's details in Slack.
filenametext- File name.
size_bytesnumber- Size in bytes.
statustext- Operation status (typically 'success').
urltext- Lodol address that serves the saved document.
Example output
{
"content_type": "example_value",
"document_ref": "example_value",
"documents": [],
"file": {
"created": 1,
"filetype": "example_value",
"id": "example_value",
"is_external": true,
"is_public": true,
"mimetype": "example_value",
"name": "example_value",
"permalink": "example_value",
"pretty_type": "example_value",
"public_url_shared": true,
"shared_in": [],
"size": 1,
"title": "example_value",
"url_private": "example_value",
"url_private_download": "example_value",
"user": "example_value"
},
"filename": "example_value",
"size_bytes": 1,
"status": "example_value",
"url": "example_value"
}Edit a bookmark
Change a bookmark's title, link or emoji. Anything left empty stays as it is.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Bookmark
bookmark_idtextRequired - The bookmark to change, from the channel chosen above.
- New title
titletext - The bookmark's new title.
- New link
linktext - The new web address, starting with https://.
- Emoji
emojitext - An emoji to show beside the bookmark, e.g. pushpin or :pushpin:.
Outputs
bookmarkobject- The bookmark.
statustext- Operation status (typically 'success').
Example output
{
"bookmark": {
"channel_id": "example_value",
"date_created": 1,
"date_updated": 1,
"emoji": "example_value",
"icon_url": "example_value",
"id": "example_value",
"link": "example_value",
"title": "example_value",
"type": "example_value"
},
"status": "example_value"
}Edit a canvas
Make one change to a canvas: add Markdown at the start or end, before or after a section, replace a section or the whole canvas, delete a section, or rename it. Name a section by text only it contains, or by an ID from Find canvas sections.
Inputs
- Canvas
canvas_idtextRequired - The canvas: pick one the app can see, or enter its ID (it starts with F) or its link.
- Change
operationtextRequired - What to do to the canvas.One of:
insert_at_end(Add at the end),insert_at_start(Add at the start),insert_after(Add after a section),insert_before(Add before a section),replace(Replace a section or everything),delete(Delete a section),rename(Rename the canvas). - Content
contenttext - The Markdown to add or to replace with. Not used to delete a section or rename the canvas.
- Section with text
section_contains_texttext - For a change to one section: text that only that section contains, such as its heading. Leave empty to replace the whole canvas.
- Section ID
section_idtext - Instead of text, the section's ID from Find canvas sections.
- New title
titletext - For Rename the canvas: its new title.
Outputs
canvas_idtext- Canvas ID.
operationtext- The change that was made.
section_idtext- ID of the section changed or used, if any.
statustext- Operation status (typically 'success').
Example output
{
"canvas_id": "example_value",
"operation": "example_value",
"section_id": "example_value",
"status": "example_value"
}Edit a message
Replace the text of a message the app has already posted. A message with Block Kit blocks loses them unless the edit sends blocks again.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Message timestamp
timestamptextRequired - The timestamp of the message (the 'ts' value returned when the message was sent).
- New message
texttextRequired - The text that replaces the message's current text.
- Text format
text_formattext - How the message text is written. Slack formatting, the default, uses Slack's own markup: *bold*, _italic_ and <https://example.com|a link>. Markdown takes standard Markdown, such as the output of an AI step: **bold**, [a link](https://example.com), headings, lists and tables, up to 12,000 characters. Markdown can't be combined with Block Kit blocks.One of:
slack(Slack formatting),markdown. Default:slack. - Block Kit blocks
blockstext - Optional Block Kit layout as JSON: a list of blocks, or the whole payload Block Kit Builder exports. The message text is still required, because Slack shows it in notifications, which don't display blocks. At most 50 blocks.
- Also send to channel
reply_broadcasttrue/false - For a reply in a thread, set to true to also show it in the channel.Default:
false.
Outputs
channeltext- ID of the channel holding the edited message.
statustext- Operation status (typically 'success').
tstext- Timestamp of the edited message.
Example output
{
"channel": "example_value",
"status": "example_value",
"ts": "example_value"
}Enable a user group
Re-enable a disabled user group. Needs a paid Slack plan, and a workspace setting that lets everyone manage user groups (by default only admins can).
Inputs
- User group
user_group_idtextRequired - The user group (an @team handle) to act on.
Outputs
statustext- Operation status (typically 'success').
user_groupobject- The user group.
Example output
{
"status": "example_value",
"user_group": {
"created_by": "example_value",
"date_create": 1,
"date_update": 1,
"default_channel_ids": [],
"description": "example_value",
"handle": "example_value",
"id": "example_value",
"is_disabled": true,
"name": "example_value",
"user_count": 1,
"user_ids": []
}
}Export a List
Export a Slack List as a CSV or JSON file saved as a Lodol document, for a spreadsheet, a report or another step. Needs a paid Slack plan.
Inputs
- List
list_idtextRequired - The List's ID (it starts with F), as Create a List returns it, or the List's link from Slack (Copy link).
- Format
formattext - The file format.One of:
csv,json. Default:csv. - Include archived items
include_archivedtrue/false - Set to true to include archived items.Default:
false.
Outputs
content_typetext- text/csv or application/json.
document_reftext- Reference to the saved export, for steps that take a file.
filenametext- File name.
list_idtext- List ID.
size_bytesnumber- Size in bytes.
statustext- Operation status (typically 'success').
urltext- Lodol address that serves the saved export.
Example output
{
"content_type": "example_value",
"document_ref": "example_value",
"filename": "example_value",
"list_id": "example_value",
"size_bytes": 1,
"status": "example_value",
"url": "example_value"
}Find a channel by name
Find a channel by its name and get its ID, for example to post in a channel named in a form or spreadsheet. Private channels are found only if the Lodol app is a member.
Inputs
- Channel name
nametextRequired - The channel's name, with or without the #. Matching ignores capitals, and spaces match hyphens.
- Include archived channels
include_archivedtrue/false - Set to true to also match archived channels.Default:
false.
Outputs
channelobject- The matching channel, or null when none was found.
foundtrue/false- Whether a match was found. The other fields are empty when not.
statustext- Operation status (typically 'success').
Example output
{
"channel": {
"created": 1,
"creator": "example_value",
"description": "example_value",
"id": "example_value",
"is_archived": true,
"is_general": true,
"is_member": true,
"is_private": true,
"is_shared": true,
"name": "example_value",
"num_members": 1,
"topic": "example_value"
},
"found": true,
"status": "example_value"
}Find a user by email
Find the workspace member with an email address, for example to message the person behind a form entry or CRM record. Deactivated accounts aren't found.
Inputs
- Email
emailtextRequired - The member's email address.
Outputs
foundtrue/false- Whether a match was found. The other fields are empty when not.
statustext- Operation status (typically 'success').
userobject- The matching member, or null when none was found.
Example output
{
"found": true,
"status": "example_value",
"user": {
"deleted": true,
"display_name": "example_value",
"email": "example_value",
"id": "example_value",
"image_url": "example_value",
"is_admin": true,
"is_bot": true,
"name": "example_value",
"real_name": "example_value",
"status_emoji": "example_value",
"status_text": "example_value",
"timezone": "example_value",
"title": "example_value"
}
}Find a user by name
Find a workspace member by handle, display name or full name, ignoring capitals. Names aren't unique, so the first match is returned with a count of all matches; use an ID or email when you have one.
Inputs
- Name
nametextRequired - The name to look for, with or without the @.
- Include deactivated accounts
include_deactivatedtrue/false - Set to true to also match deactivated members.Default:
false.
Outputs
foundtrue/false- Whether a match was found. The other fields are empty when not.
match_countnumber- How many members matched the name.
statustext- Operation status (typically 'success').
userobject- The matching member, or null when none was found.
Example output
{
"found": true,
"match_count": 1,
"status": "example_value",
"user": {
"deleted": true,
"display_name": "example_value",
"email": "example_value",
"id": "example_value",
"image_url": "example_value",
"is_admin": true,
"is_bot": true,
"name": "example_value",
"real_name": "example_value",
"status_emoji": "example_value",
"status_text": "example_value",
"timezone": "example_value",
"title": "example_value"
}
}Find canvas sections
Find the IDs of a canvas's sections by kind (headings, lists, tables and so on) or by the text they contain, for Edit a canvas. Slack returns IDs only, not the sections' text.
Inputs
- Canvas
canvas_idtextRequired - The canvas: pick one the app can see, or enter its ID (it starts with F) or its link.
- Kinds of section
section_typeslist - Only find these kinds of section.One or more of:
any_header(Any heading),h1(Heading 1),h2(Heading 2),h3(Heading 3),list,table,blockquote(Quote),callout,horizontal_line(Divider),user_mention(Mention). - Containing text
contains_texttext - Only find sections containing this text.
Outputs
canvas_idtext- Canvas ID.
section_idslist- IDs of the matching sections, in order.
statustext- Operation status (typically 'success').
Example output
{
"canvas_id": "example_value",
"section_ids": [],
"status": "example_value"
}Find messages
Return every recent message matching your search criteria. Searches one channel when you pick one, otherwise the recent history of the channels the Lodol app belongs to.
Inputs
- Search text
querytextRequired - Text to look for in the message. Matching ignores upper/lower case.
- Channel
channel_idtext - Limit the search to one channel. Leave empty to search every channel the Lodol app is a member of.
- From user
from_usertext - Only return messages from this person. Leave empty to match any sender.
- Max results
limitnumber - The maximum number of messages to return, from 1 to 1000.From 1 to 1000. Default:
20.
Outputs
messageslist- The matching messages.
statustext- Operation status (typically 'success').
Example output
{
"messages": [],
"status": "example_value"
}Get a channel
Get a channel's details: name, topic, description, creator, whether it is private or archived, and its member count.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
Outputs
channelobject- The channel's details.
statustext- Operation status (typically 'success').
Example output
{
"channel": {
"created": 1,
"creator": "example_value",
"description": "example_value",
"id": "example_value",
"is_archived": true,
"is_general": true,
"is_member": true,
"is_private": true,
"is_shared": true,
"name": "example_value",
"num_members": 1,
"topic": "example_value"
},
"status": "example_value"
}Get a file
Get a file's details: name, type, size, who shared it and where. The Lodol app sees files shared in the channels it belongs to.
Inputs
- File ID
file_idtextRequired - The ID of a Slack file, such as the 'id' Upload a file or List files returns (it starts with F).
Outputs
fileobject- The file's details.
statustext- Operation status (typically 'success').
Example output
{
"file": {
"created": 1,
"filetype": "example_value",
"id": "example_value",
"is_external": true,
"is_public": true,
"mimetype": "example_value",
"name": "example_value",
"permalink": "example_value",
"pretty_type": "example_value",
"public_url_shared": true,
"shared_in": [],
"size": 1,
"title": "example_value",
"url_private": "example_value",
"url_private_download": "example_value",
"user": "example_value"
},
"status": "example_value"
}Get a List item
Get one item from a Slack List, with its values by column name. Needs a paid Slack plan.
Inputs
- List
list_idtextRequired - The List's ID (it starts with F), as Create a List returns it, or the List's link from Slack (Copy link).
- Item ID
item_idtextRequired - The item's ID (it starts with Rec), as Add a List item returns it.
Outputs
itemobject- The List item.
statustext- Operation status (typically 'success').
Example output
{
"item": {
"archived": true,
"created_by": "example_value",
"date_created": 1,
"fields": {},
"id": "example_value",
"list_id": "example_value",
"parent_item_id": "example_value",
"updated_by": "example_value"
},
"status": "example_value"
}Get a message by timestamp
Fetch a single Slack message by its channel and timestamp.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Message timestamp
timestamptextRequired - The timestamp of the message (the 'ts' value returned when the message was sent).
Outputs
messageobject- The message at the requested timestamp.
statustext- Operation status (typically 'success').
Example output
{
"message": {
"channel": "example_value",
"reactions": [],
"reply_count": 1,
"text": "example_value",
"thread_ts": "example_value",
"ts": "example_value",
"user": "example_value"
},
"status": "example_value"
}Get a message link
Get a shareable link to a message, including a reply in a thread. Only people who can see the channel can open it.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Message timestamp
timestamptextRequired - The timestamp of the message (the 'ts' value returned when the message was sent).
Outputs
channeltext- Channel ID.
permalinktext- Link to the message in Slack.
statustext- Operation status (typically 'success').
timestamptext- Timestamp of the message.
Example output
{
"channel": "example_value",
"permalink": "example_value",
"status": "example_value",
"timestamp": "example_value"
}Get a message's reactions
List every emoji reaction on a message and who added each one.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Message timestamp
timestamptextRequired - The timestamp of the message (the 'ts' value returned when the message was sent).
Outputs
channeltext- Channel ID.
permalinktext- Link to the message.
reactionslist- Emoji reactions on the message.
statustext- Operation status (typically 'success').
timestamptext- Timestamp of the message.
total_countnumber- Total number of reactions across all emoji.
Example output
{
"channel": "example_value",
"permalink": "example_value",
"reactions": [],
"status": "example_value",
"timestamp": "example_value",
"total_count": 1
}Get a user
Look up one workspace member's profile details by ID.
Inputs
- Person
user_idtextRequired - The workspace member to look up.
Outputs
statustext- Operation status (typically 'success').
userobject- The requested workspace member.
Example output
{
"status": "example_value",
"user": {
"deleted": true,
"display_name": "example_value",
"email": "example_value",
"id": "example_value",
"image_url": "example_value",
"is_admin": true,
"is_bot": true,
"name": "example_value",
"real_name": "example_value",
"status_emoji": "example_value",
"status_text": "example_value",
"timezone": "example_value",
"title": "example_value"
}
}Get a user's Do Not Disturb status
Check a member's Do Not Disturb schedule, for example before sending a non-urgent message. A snooze the person turned on by hand isn't visible to apps.
Inputs
- Person
user_idtextRequired - The workspace member to act on.
Outputs
dnd_enabledtrue/false- Whether the member has a Do Not Disturb schedule on.
in_do_not_disturb_nowtrue/false- True when the schedule is on and now falls inside that window.
next_dnd_end_tsnumber- End of that window, as a Unix timestamp.
next_dnd_start_tsnumber- Start of the scheduled window Slack reports, as a Unix timestamp.
statustext- Operation status (typically 'success').
user_idtext- Member ID.
Example output
{
"dnd_enabled": true,
"in_do_not_disturb_now": true,
"next_dnd_end_ts": 1,
"next_dnd_start_ts": 1,
"status": "example_value",
"user_id": "example_value"
}Get a user's presence
Check whether a member is active in Slack right now or away.
Inputs
- Person
user_idtextRequired - The workspace member to act on.
Outputs
is_activetrue/false- True when the member is active.
presencetext- 'active' or 'away'.
statustext- Operation status (typically 'success').
user_idtext- Member ID.
Example output
{
"is_active": true,
"presence": "example_value",
"status": "example_value",
"user_id": "example_value"
}Get a user's profile
Get a member's profile: name, title, contact details, status and the workspace's custom profile fields.
Inputs
- Person
user_idtextRequired - The workspace member to act on.
Outputs
profileobject- The member's profile.
statustext- Operation status (typically 'success').
Example output
{
"profile": {
"custom_fields": [],
"display_name": "example_value",
"email": "example_value",
"first_name": "example_value",
"image_url": "example_value",
"last_name": "example_value",
"phone": "example_value",
"pronouns": "example_value",
"real_name": "example_value",
"status_emoji": "example_value",
"status_expiration": 1,
"status_text": "example_value",
"title": "example_value",
"user_id": "example_value"
},
"status": "example_value"
}Get channel history
Read a channel's recent messages, newest first. Optionally restrict the read to a timestamp window.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Max messages
limitnumber - The maximum number of messages to return, from 1 to 1000.From 1 to 1000. Default:
20. - Oldest timestamp
oldesttext - Only return messages at or after this message timestamp (the 'ts' value of an earlier message). Leave empty for no lower bound.
- Newest timestamp
latesttext - Only return messages at or before this message timestamp. Leave empty to start from the most recent message.
Outputs
messageslist- The matching messages.
statustext- Operation status (typically 'success').
Example output
{
"messages": [],
"status": "example_value"
}Get thread messages
List every message in a thread, starting with the message that started it.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Thread timestamp
thread_tstextRequired - The timestamp of the message that started the thread (the 'ts' value returned when that message was sent).
- Max messages
limitnumber - The maximum number of messages to return, from 1 to 1000.From 1 to 1000. Default:
100.
Outputs
messageslist- The matching messages.
statustext- Operation status (typically 'success').
Example output
{
"messages": [],
"status": "example_value"
}Get workspace info
Get the connected workspace's name, address, email domain and icon.
Inputs
None.
Outputs
statustext- Operation status (typically 'success').
workspaceobject- The workspace.
Example output
{
"status": "example_value",
"workspace": {
"domain": "example_value",
"email_domain": "example_value",
"enterprise_id": "example_value",
"enterprise_name": "example_value",
"icon_url": "example_value",
"id": "example_value",
"name": "example_value",
"url": "example_value"
}
}Invite a user to a channel
Add one or more workspace members to a Slack channel.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- People
user_idstextRequired - The people to add to the channel. Enter one member, or several separated by commas.
- Skip people who can't be added
skip_invalidtrue/false - By default Slack adds nobody if any one person can't be added (a deactivated account, say). Set to true to add everyone who can be and skip the rest.Default:
false.
Outputs
channel_idtext- ID of the channel the people were added to.
statustext- Operation status (typically 'success').
user_idslist- IDs of the people who were added.
Example output
{
"channel_id": "example_value",
"status": "example_value",
"user_ids": []
}Join a channel
Add the Lodol app to a public channel so it can read the channel's messages. A private channel has to invite the app with /invite in Slack instead.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
Outputs
already_membertrue/false- True when the app was already in the channel.
channelobject- The channel joined.
statustext- Operation status (typically 'success').
Example output
{
"already_member": true,
"channel": {
"created": 1,
"creator": "example_value",
"description": "example_value",
"id": "example_value",
"is_archived": true,
"is_general": true,
"is_member": true,
"is_private": true,
"is_shared": true,
"name": "example_value",
"num_members": 1,
"topic": "example_value"
},
"status": "example_value"
}Leave a channel
Take the Lodol app out of a channel. Its triggers and read actions stop seeing that channel's messages, and a private channel would have to invite it back. Leaving also gives up the channel manager role the app holds in channels it created, so after rejoining it may no longer be allowed to remove members.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
Outputs
channel_idtext- Channel ID.
statustext- Operation status (typically 'success').
was_membertrue/false- False when the app wasn't in the channel.
Example output
{
"channel_id": "example_value",
"status": "example_value",
"was_member": true
}List a user's channels
List the channels a member belongs to: every public channel they're in, plus private channels the Lodol app shares with them.
Inputs
- Person
user_idtextRequired - The workspace member to act on.
- Hide archived channels
exclude_archivedtrue/false - Set to false to include archived channels.Default:
true. - Max channels
limitnumber - The maximum number of channels to return, from 1 to 1000.From 1 to 1000. Default:
200.
Outputs
channelslist- The member's channels.
statustext- Operation status (typically 'success').
Example output
{
"channels": [],
"status": "example_value"
}List bookmarks
List the bookmarks in a channel's bookmarks bar.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
Outputs
bookmarkslist- The channel's bookmarks.
statustext- Operation status (typically 'success').
Example output
{
"bookmarks": [],
"status": "example_value"
}List channels
List the Slack channels you can access, optionally hiding archived ones.
Inputs
- Hide archived channels
exclude_archivedtrue/false - Set to true to leave out archived channels.Default:
true. - Max channels
limitnumber - The maximum number of channels to return, from 1 to 1000.From 1 to 1000.
- Only channels the app is in
member_onlytrue/false - Set to true to list only the channels the Lodol app is a member of, which are the ones its read actions can see.Default:
false.
Outputs
channelslist- Channels visible to the bot.
statustext- Operation status (typically 'success').
Example output
{
"channels": [],
"status": "example_value"
}List custom emoji
List the workspace's custom emoji, alphabetically.
Inputs
- Include aliases
include_aliasestrue/false - Set to false to leave out aliases (extra names for another emoji).Default:
true.
Outputs
emojilist- The custom emoji.
statustext- Operation status (typically 'success').
Example output
{
"emoji": [],
"status": "example_value"
}List files
List files shared in the workspace, newest first, optionally narrowed to a channel, a person, file types or a date range. Only files the Lodol app can see are listed, and a file shared in the last few seconds may not be listed yet.
Inputs
- Channel
channel_idtext - Only list files shared in this channel.
- Shared by
from_usertext - Only list files this person shared.
- File types
typeslist - Only list these kinds of file. Leave empty for all.One or more of:
spaces(Posts),snippets,images,pdfs,gdocs(Google Docs),zips(Zip files),canvas(Canvases). - Shared after
created_afterdate and time - Only list files shared at or after this time.
- Shared before
created_beforedate and time - Only list files shared at or before this time.
- Max results
limitnumber - The maximum number of results to return, from 1 to 1000.From 1 to 1000. Default:
100.
Outputs
fileslist- The matching files, newest first.
statustext- Operation status (typically 'success').
Example output
{
"files": [],
"status": "example_value"
}List items in a List
Get the items in a Slack List, with its title and columns. Needs a paid Slack plan.
Inputs
- List
list_idtextRequired - The List's ID (it starts with F), as Create a List returns it, or the List's link from Slack (Copy link).
- Max items
limitnumber - The maximum number of items to return, from 1 to 5000.From 1 to 5000. Default:
100. - Archived items
archivedtrue/false - Set to true to get the archived items instead.Default:
false.
Outputs
columnslist- The List's columns.
itemslist- The items.
list_idtext- List ID.
statustext- Operation status (typically 'success').
titletext- The List's title.
Example output
{
"columns": [],
"items": [],
"list_id": "example_value",
"status": "example_value",
"title": "example_value"
}List pinned messages
List the messages pinned in a channel.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
Outputs
itemslist- The pinned messages.
statustext- Operation status (typically 'success').
Example output
{
"items": [],
"status": "example_value"
}List profile fields
List the custom profile fields the workspace defines, such as Team or Start date, with their IDs and allowed values.
Inputs
None.
Outputs
fieldslist- The fields, in display order.
statustext- Operation status (typically 'success').
Example output
{
"fields": [],
"status": "example_value"
}List scheduled messages
List the messages this Slack connection has scheduled that haven't been sent yet. Messages people scheduled in Slack themselves are not included.
Inputs
- Channel
channel_idtext - Only list messages scheduled for this channel.
- Max results
limitnumber - The maximum number of results to return, from 1 to 1000.From 1 to 1000. Default:
100.
Outputs
scheduled_messageslist- Pending scheduled messages, soonest first as Slack returns them.
statustext- Operation status (typically 'success').
Example output
{
"scheduled_messages": [],
"status": "example_value"
}List user group members
List the IDs of the people in a user group. Needs a paid Slack plan.
Inputs
- User group
user_group_idtextRequired - The user group (an @team handle) to act on.
- Include a disabled group
include_disabledtrue/false - Set to true to list the members of a disabled group too.Default:
false.
Outputs
statustext- Operation status (typically 'success').
user_group_idtext- Group ID.
user_idslist- IDs of the group's members.
Example output
{
"status": "example_value",
"user_group_id": "example_value",
"user_ids": []
}List user groups
List the workspace's user groups, the @team handles that notify a set of people at once. Needs a paid Slack plan.
Inputs
- Include disabled groups
include_disabledtrue/false - Set to true to also list disabled user groups.Default:
false. - Include members
include_memberstrue/false - Set to true to include each group's member IDs.Default:
false.
Outputs
statustext- Operation status (typically 'success').
user_groupslist- The user groups.
Example output
{
"status": "example_value",
"user_groups": []
}List users in a channel
List the members of one Slack channel.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Max users
limitnumber - The maximum number of members to return, from 1 to 1000.From 1 to 1000.
Outputs
statustext- Operation status (typically 'success').
userslist- The matching workspace members.
Example output
{
"status": "example_value",
"users": []
}List users in the workspace
List the members of the connected Slack workspace.
Inputs
- Max users
limitnumber - The maximum number of members to return, from 1 to 1000.From 1 to 1000.
- Include bots
include_botstrue/false - Set to false to leave out bot and app users.Default:
true. - Include deactivated accounts
include_deactivatedtrue/false - Set to true to also return deactivated members.Default:
false.
Outputs
statustext- Operation status (typically 'success').
userslist- The matching workspace members.
Example output
{
"status": "example_value",
"users": []
}Pin a message
Pin a message to its channel. Pinning a message that is already pinned succeeds.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Message timestamp
timestamptextRequired - The timestamp of the message (the 'ts' value returned when the message was sent).
Outputs
channel_idtext- Channel ID.
pinnedtrue/false- Always true.
statustext- Operation status (typically 'success').
timestamptext- Timestamp of the pinned message.
Example output
{
"channel_id": "example_value",
"pinned": true,
"status": "example_value",
"timestamp": "example_value"
}Remove a bookmark
Remove a bookmark from a channel's bookmarks bar.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Bookmark
bookmark_idtextRequired - The bookmark to change, from the channel chosen above.
Outputs
bookmark_idtext- ID of the removed bookmark.
channel_idtext- Channel ID.
statustext- Operation status (typically 'success').
Example output
{
"bookmark_id": "example_value",
"channel_id": "example_value",
"status": "example_value"
}Remove a reaction
Remove an emoji reaction the Lodol app added to a message. Reactions other people added can't be removed. If the app hadn't reacted, the step succeeds with removed set to false.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Message timestamp
timestamptextRequired - The timestamp of the message (the 'ts' value returned when the message was sent).
- Emoji
emojitextRequired - The emoji name, for example thumbsup or :thumbsup: (surrounding colons are optional).
Outputs
emojitext- The emoji name.
removedtrue/false- False when the app had no such reaction to remove.
statustext- Operation status (typically 'success').
Example output
{
"emoji": "example_value",
"removed": true,
"status": "example_value"
}Remove a user from a channel
Remove a member from a Slack channel.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Person
user_idtextRequired - The person to remove from the channel.
Outputs
channel_idtext- ID of the channel the person was removed from.
statustext- Operation status (typically 'success').
user_idtext- ID of the person who was removed.
Example output
{
"channel_id": "example_value",
"status": "example_value",
"user_id": "example_value"
}Remove people from a user group
Take people out of a user group, keeping everyone else. Slack won't leave a group empty, so disable it instead of removing everyone. Needs a paid Slack plan, and a workspace setting that lets everyone manage user groups (by default only admins can).
Inputs
- User group
user_group_idtextRequired - The user group (an @team handle) to act on.
- People
user_idslistRequired - The people to act on. Guests and bots can't be in a user group.
Outputs
not_memberslist- IDs of the people who weren't in it.
removedlist- IDs of the people who were removed.
statustext- Operation status (typically 'success').
user_group_idtext- Group ID.
user_idslist- IDs of everyone in the group now.
Example output
{
"not_members": [],
"removed": [],
"status": "example_value",
"user_group_id": "example_value",
"user_ids": []
}Rename a channel
Rename a channel. Slack lets only a channel's creator, admins and channel managers rename it, so the Lodol app can rename channels it created.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- New name
nametextRequired - The channel's new name. Capitals become lowercase and spaces become hyphens automatically.
Outputs
channelobject- The renamed channel.
statustext- Operation status (typically 'success').
Example output
{
"channel": {
"created": 1,
"creator": "example_value",
"description": "example_value",
"id": "example_value",
"is_archived": true,
"is_general": true,
"is_member": true,
"is_private": true,
"is_shared": true,
"name": "example_value",
"num_members": 1,
"topic": "example_value"
},
"status": "example_value"
}Schedule a message
Schedule a message to be posted at a future time.
Inputs
- Channel
channel_idtextRequired - The channel to post the message to.
- Message
texttextRequired - The message text to send.
- Send at
post_atdate and timeRequired - When to send the message. Pick a date and time in the future, at most 120 days ahead.
- Reply To
thread_tstext - To schedule a reply inside a thread, enter the timestamp of the first message in that thread. Leave empty to schedule a new message.
- Text format
text_formattext - How the message text is written. Slack formatting, the default, uses Slack's own markup: *bold*, _italic_ and <https://example.com|a link>. Markdown takes standard Markdown, such as the output of an AI step: **bold**, [a link](https://example.com), headings, lists and tables, up to 12,000 characters. Markdown can't be combined with Block Kit blocks.One of:
slack(Slack formatting),markdown. Default:slack. - Block Kit blocks
blockstext - Optional Block Kit layout as JSON: a list of blocks, or the whole payload Block Kit Builder exports. The message text is still required, because Slack shows it in notifications, which don't display blocks. At most 50 blocks.
- Also send to channel
reply_broadcasttrue/false - For a reply in a thread, set to true to also show the reply in the channel, like ticking 'Also send to #channel' in Slack.Default:
false. - Show link previews
unfurl_linkstrue/false - Set to false to stop Slack adding a preview of web pages linked in the message. Leave empty to use Slack's default.
- Show media previews
unfurl_mediatrue/false - Set to false to stop Slack previewing linked images and videos. Leave empty to use Slack's default.
Outputs
channeltext- ID of the channel where the message is scheduled.
post_attext- Scheduled post timestamp returned by Slack.
scheduled_message_idtext- ID of the scheduled message. Pass it to Delete a scheduled message to cancel it.
statustext- Operation status (typically 'success').
Example output
{
"channel": "example_value",
"post_at": "example_value",
"scheduled_message_id": "example_value",
"status": "example_value"
}Send a direct message
Send a direct message to a Slack user.
Inputs
- Recipient
user_idtextRequired - The person to send the direct message to.
- Message
texttextRequired - The message text to send.
- Text format
text_formattext - How the message text is written. Slack formatting, the default, uses Slack's own markup: *bold*, _italic_ and <https://example.com|a link>. Markdown takes standard Markdown, such as the output of an AI step: **bold**, [a link](https://example.com), headings, lists and tables, up to 12,000 characters. Markdown can't be combined with Block Kit blocks.One of:
slack(Slack formatting),markdown. Default:slack. - Block Kit blocks
blockstext - Optional Block Kit layout as JSON: a list of blocks, or the whole payload Block Kit Builder exports. The message text is still required, because Slack shows it in notifications, which don't display blocks. At most 50 blocks.
- Show link previews
unfurl_linkstrue/false - Set to false to stop Slack adding a preview of web pages linked in the message. Leave empty to use Slack's default.
- Show media previews
unfurl_mediatrue/false - Set to false to stop Slack previewing linked images and videos. Leave empty to use Slack's default.
- Sender name
usernametext - A name to show on this message instead of the app's name, e.g. 'Deploy Bot'. Slack still marks the message as sent by an app. Needs the chat:write.customize scope.
- Sender icon (emoji)
icon_emojitext - An emoji to show as the sender's picture on this message, e.g. rocket or :rocket:. Takes priority over an icon URL. Needs the chat:write.customize scope.
- Sender icon (image URL)
icon_urltext - The web address of an image to show as the sender's picture on this message. Needs the chat:write.customize scope.
Outputs
channeltext- ID of the direct message channel created or used.
statustext- Operation status (typically 'success').
tstext- Timestamp of the posted message. Use this for add-reaction or threading (thread_ts parameter).
Example output
{
"channel": "example_value",
"status": "example_value",
"ts": "example_value"
}Send a direct message by email
Send a direct message to the workspace member with an email address, without looking up their Slack ID first. Fails if no active member has that address.
Inputs
- Email
emailtextRequired - The recipient's email address.
- Message
texttextRequired - The message text to send.
- Text format
text_formattext - How the message text is written. Slack formatting, the default, uses Slack's own markup: *bold*, _italic_ and <https://example.com|a link>. Markdown takes standard Markdown, such as the output of an AI step: **bold**, [a link](https://example.com), headings, lists and tables, up to 12,000 characters. Markdown can't be combined with Block Kit blocks.One of:
slack(Slack formatting),markdown. Default:slack. - Block Kit blocks
blockstext - Optional Block Kit layout as JSON: a list of blocks, or the whole payload Block Kit Builder exports. The message text is still required, because Slack shows it in notifications, which don't display blocks. At most 50 blocks.
- Show link previews
unfurl_linkstrue/false - Set to false to stop Slack adding a preview of web pages linked in the message. Leave empty to use Slack's default.
- Show media previews
unfurl_mediatrue/false - Set to false to stop Slack previewing linked images and videos. Leave empty to use Slack's default.
- Sender name
usernametext - A name to show on this message instead of the app's name, e.g. 'Deploy Bot'. Slack still marks the message as sent by an app. Needs the chat:write.customize scope.
- Sender icon (emoji)
icon_emojitext - An emoji to show as the sender's picture on this message, e.g. rocket or :rocket:. Takes priority over an icon URL. Needs the chat:write.customize scope.
- Sender icon (image URL)
icon_urltext - The web address of an image to show as the sender's picture on this message. Needs the chat:write.customize scope.
Outputs
channeltext- ID of the conversation the message was posted in.
statustext- Operation status (typically 'success').
tstext- Timestamp of the posted message, which is also its ID.
user_idtext- ID of the member the address belongs to.
Example output
{
"channel": "example_value",
"status": "example_value",
"ts": "example_value",
"user_id": "example_value"
}Send a group direct message
Send one message to a group direct message with 2 to 8 people. Running it again for the same people posts in the same conversation.
Inputs
- People
user_idslistRequired - The 2 to 8 people to message together.
- Message
texttextRequired - The message text to send.
- Text format
text_formattext - How the message text is written. Slack formatting, the default, uses Slack's own markup: *bold*, _italic_ and <https://example.com|a link>. Markdown takes standard Markdown, such as the output of an AI step: **bold**, [a link](https://example.com), headings, lists and tables, up to 12,000 characters. Markdown can't be combined with Block Kit blocks.One of:
slack(Slack formatting),markdown. Default:slack. - Block Kit blocks
blockstext - Optional Block Kit layout as JSON: a list of blocks, or the whole payload Block Kit Builder exports. The message text is still required, because Slack shows it in notifications, which don't display blocks. At most 50 blocks.
- Show link previews
unfurl_linkstrue/false - Set to false to stop Slack adding a preview of web pages linked in the message. Leave empty to use Slack's default.
- Show media previews
unfurl_mediatrue/false - Set to false to stop Slack previewing linked images and videos. Leave empty to use Slack's default.
- Sender name
usernametext - A name to show on this message instead of the app's name, e.g. 'Deploy Bot'. Slack still marks the message as sent by an app. Needs the chat:write.customize scope.
- Sender icon (emoji)
icon_emojitext - An emoji to show as the sender's picture on this message, e.g. rocket or :rocket:. Takes priority over an icon URL. Needs the chat:write.customize scope.
- Sender icon (image URL)
icon_urltext - The web address of an image to show as the sender's picture on this message. Needs the chat:write.customize scope.
Outputs
channeltext- ID of the conversation the message was posted in.
statustext- Operation status (typically 'success').
tstext- Timestamp of the posted message, which is also its ID.
user_idslist- IDs of the people in the conversation.
Example output
{
"channel": "example_value",
"status": "example_value",
"ts": "example_value",
"user_ids": []
}Send a message to a channel
Send a message to a public or private Slack channel.
Inputs
- Channel
channel_idtextRequired - The channel to post the message to.
- Message
texttextRequired - The message text to send.
- Reply To
thread_tstext - To reply inside a thread, enter the timestamp of the first message in that thread (the 'ts' value returned when a message is sent). Leave empty to post a new message.
- Text format
text_formattext - How the message text is written. Slack formatting, the default, uses Slack's own markup: *bold*, _italic_ and <https://example.com|a link>. Markdown takes standard Markdown, such as the output of an AI step: **bold**, [a link](https://example.com), headings, lists and tables, up to 12,000 characters. Markdown can't be combined with Block Kit blocks.One of:
slack(Slack formatting),markdown. Default:slack. - Block Kit blocks
blockstext - Optional Block Kit layout as JSON: a list of blocks, or the whole payload Block Kit Builder exports. The message text is still required, because Slack shows it in notifications, which don't display blocks. At most 50 blocks.
- Also send to channel
reply_broadcasttrue/false - For a reply in a thread, set to true to also show the reply in the channel, like ticking 'Also send to #channel' in Slack.Default:
false. - Show link previews
unfurl_linkstrue/false - Set to false to stop Slack adding a preview of web pages linked in the message. Leave empty to use Slack's default.
- Show media previews
unfurl_mediatrue/false - Set to false to stop Slack previewing linked images and videos. Leave empty to use Slack's default.
- Sender name
usernametext - A name to show on this message instead of the app's name, e.g. 'Deploy Bot'. Slack still marks the message as sent by an app. Needs the chat:write.customize scope.
- Sender icon (emoji)
icon_emojitext - An emoji to show as the sender's picture on this message, e.g. rocket or :rocket:. Takes priority over an icon URL. Needs the chat:write.customize scope.
- Sender icon (image URL)
icon_urltext - The web address of an image to show as the sender's picture on this message. Needs the chat:write.customize scope.
Outputs
channeltext- ID of the channel where the message was sent.
statustext- Operation status (typically 'success').
tstext- Timestamp of the posted message. Use this for add-reaction or threading (thread_ts parameter).
Example output
{
"channel": "C0123456789",
"status": "success",
"ts": "1712345678.901234"
}Send an ephemeral message
Show a message in a channel that only one member can see. Slack delivers it only while that person is active in Slack and a member of the channel, and it disappears when they reload, so use it for a nudge rather than a record.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Visible to
user_idtextRequired - The channel member who will see the message.
- Message
texttextRequired - The message text to show.
- Reply To
thread_tstext - To post inside a thread, enter the timestamp of the first message in that thread. Leave empty to post in the channel.
- Text format
text_formattext - How the message text is written. Slack formatting, the default, uses Slack's own markup: *bold*, _italic_ and <https://example.com|a link>. Markdown takes standard Markdown, such as the output of an AI step: **bold**, [a link](https://example.com), headings, lists and tables, up to 12,000 characters. Markdown can't be combined with Block Kit blocks.One of:
slack(Slack formatting),markdown. Default:slack. - Block Kit blocks
blockstext - Optional Block Kit layout as JSON: a list of blocks, or the whole payload Block Kit Builder exports. The message text is still required, because Slack shows it in notifications, which don't display blocks. At most 50 blocks.
- Sender name
usernametext - A name to show on this message instead of the app's name, e.g. 'Deploy Bot'. Slack still marks the message as sent by an app. Needs the chat:write.customize scope.
- Sender icon (emoji)
icon_emojitext - An emoji to show as the sender's picture on this message, e.g. rocket or :rocket:. Takes priority over an icon URL. Needs the chat:write.customize scope.
- Sender icon (image URL)
icon_urltext - The web address of an image to show as the sender's picture on this message. Needs the chat:write.customize scope.
Outputs
channeltext- ID of the channel it was shown in.
message_tstext- Timestamp Slack gave the ephemeral message.
statustext- Operation status (typically 'success').
user_idtext- ID of the member who can see it.
Example output
{
"channel": "example_value",
"message_ts": "example_value",
"status": "example_value",
"user_id": "example_value"
}Set a channel description
Set the description shown in a channel's details, up to 250 characters. The Lodol app must be a member of the channel.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Description
descriptiontextRequired - What the channel is for. Send an empty value to clear it.
Outputs
channel_idtext- Channel ID.
descriptiontext- The description that was set.
statustext- Operation status (typically 'success').
Example output
{
"channel_id": "example_value",
"description": "example_value",
"status": "example_value"
}Set a channel topic
Set the topic shown at the top of a Slack channel.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Topic
topictextRequired - The topic text. Send an empty value to clear the topic.
Outputs
channel_idtext- ID of the channel whose topic was set.
statustext- Operation status (typically 'success').
topictext- The topic Slack stored.
Example output
{
"channel_id": "example_value",
"status": "example_value",
"topic": "example_value"
}Set user group members
Replace a user group's members with exactly these people, for example to hand @oncall to this week's rota. Slack won't empty a group; disable it instead. Needs a paid Slack plan, and a workspace setting that lets everyone manage user groups (by default only admins can).
Inputs
- User group
user_group_idtextRequired - The user group (an @team handle) to act on.
- People
user_idslistRequired - The people to act on. Guests and bots can't be in a user group.
Outputs
statustext- Operation status (typically 'success').
user_groupobject- The user group.
Example output
{
"status": "example_value",
"user_group": {
"created_by": "example_value",
"date_create": 1,
"date_update": 1,
"default_channel_ids": [],
"description": "example_value",
"handle": "example_value",
"id": "example_value",
"is_disabled": true,
"name": "example_value",
"user_count": 1,
"user_ids": []
}
}Share a canvas
Share a canvas with channels or people, as sharing it in Slack does: its link is posted to each channel and sent to each person, with an optional message, and they can then view or edit it. Slack requires the link to be sent before it grants access.
Inputs
- Canvas
canvas_idtextRequired - The canvas: pick one the app can see, or enter its ID (it starts with F) or its link.
- Access
access_leveltext - Whether they can only read it or also edit it.One of:
read(Can view),write(Can edit). Default:read. - Channels
channel_idslist - Channels to act on. Direct messages can't be used here; choose people instead.
- People
user_idslist - People to act on.
- Message
messagetext - A message to post with the canvas's link.
Outputs
access_leveltext- 'read' or 'write'.
canvas_idtext- Canvas ID.
channel_idslist- IDs of the channels given access.
permalinktext- The canvas link that was sent.
statustext- Operation status (typically 'success').
user_idslist- IDs of the people given access.
Example output
{
"access_level": "example_value",
"canvas_id": "example_value",
"channel_ids": [],
"permalink": "example_value",
"status": "example_value",
"user_ids": []
}Share a List
Let channels or people view or edit a Slack List. Needs a paid Slack plan.
Inputs
- List
list_idtextRequired - The List's ID (it starts with F), as Create a List returns it, or the List's link from Slack (Copy link).
- Access
access_leveltext - Whether they can only read it or also edit it.One of:
read(Can view),write(Can edit). Default:read. - Channels
channel_idslist - Channels to act on. Direct messages can't be used here; choose people instead.
- People
user_idslist - People to act on.
Outputs
access_leveltext- 'read' or 'write'.
channel_idslist- IDs of the channels given access.
list_idtext- List ID.
statustext- Operation status (typically 'success').
user_idslist- IDs of the people given access.
Example output
{
"access_level": "example_value",
"channel_ids": [],
"list_id": "example_value",
"status": "example_value",
"user_ids": []
}Start a Slack workflow
Start a Workflow Builder workflow that begins 'From a webhook', passing it up to 20 variables. Workflow Builder webhooks need a paid Slack plan and start about one run a second.
Inputs
- Workflow webhook URL
webhook_urltextRequired - The URL Workflow Builder shows for the workflow's webhook, starting with https://hooks.slack.com/triggers/. Anyone with it can start the workflow, so save it under Secrets and Values and use it here as @secrets.YOUR_NAME rather than pasting it.
- Variables
variablesobject - Values for the variables the workflow's webhook defines, by name: text, a member ID, a channel ID or an email. Up to 20.
Outputs
startedtrue/false- True once Slack accepted the start.
statustext- Operation status (typically 'success').
variables_sentlist- Names of the variables sent to the workflow.
Example output
{
"started": true,
"status": "example_value",
"variables_sent": []
}Unpin a message
Unpin a message from its channel. If it wasn't pinned, the step succeeds with was_pinned set to false.
Inputs
- Channel
channel_idtextRequired - The channel to act on.
- Message timestamp
timestamptextRequired - The timestamp of the message (the 'ts' value returned when the message was sent).
Outputs
channel_idtext- Channel ID.
statustext- Operation status (typically 'success').
timestamptext- Timestamp of the message.
was_pinnedtrue/false- False when the message wasn't pinned.
Example output
{
"channel_id": "example_value",
"status": "example_value",
"timestamp": "example_value",
"was_pinned": true
}Unshare a canvas
Remove channels' or people's access to a canvas. Access given to a channel belongs to the channel, so one of its members can't lose access while the channel keeps it.
Inputs
- Canvas
canvas_idtextRequired - The canvas: pick one the app can see, or enter its ID (it starts with F) or its link.
- Channels
channel_idslist - Channels to act on. Direct messages can't be used here; choose people instead.
- People
user_idslist - People to act on.
Outputs
canvas_idtext- Canvas ID.
channel_idslist- IDs of the channels whose access was removed.
statustext- Operation status (typically 'success').
user_idslist- IDs of the people whose access was removed.
Example output
{
"canvas_id": "example_value",
"channel_ids": [],
"status": "example_value",
"user_ids": []
}Update a List item
Change some of a List item's values; columns you leave empty keep their values. Needs a paid Slack plan.
Inputs
- List
list_idtextRequired - The List's ID (it starts with F), as Create a List returns it, or the List's link from Slack (Copy link).
- Item ID
item_idtextRequired - The item's ID (it starts with Rec), as Add a List item returns it.
- New values
fieldsobjectRequired - Values by column. A choice column takes the choice's name, a people or channel column takes member or channel IDs, and several values are separated by commas. Dates are YYYY-MM-DD and checkboxes true or false.
Outputs
itemobject- The List item.
statustext- Operation status (typically 'success').
Example output
{
"item": {
"archived": true,
"created_by": "example_value",
"date_created": 1,
"fields": {},
"id": "example_value",
"list_id": "example_value",
"parent_item_id": "example_value",
"updated_by": "example_value"
},
"status": "example_value"
}Update a user group
Change a user group's name, handle, description or default channels. Anything left empty stays as it is. Needs a paid Slack plan, and a workspace setting that lets everyone manage user groups (by default only admins can).
Inputs
- User group
user_group_idtextRequired - The user group (an @team handle) to act on.
- New name
nametext - The group's new name.
- New handle
handletext - The new handle people mention, without the @.
- New description
descriptiontext - The group's new description.
- Default channels
default_channel_idslist - Channels that people added to the group are added to as well.
Outputs
statustext- Operation status (typically 'success').
user_groupobject- The user group.
Example output
{
"status": "example_value",
"user_group": {
"created_by": "example_value",
"date_create": 1,
"date_update": 1,
"default_channel_ids": [],
"description": "example_value",
"handle": "example_value",
"id": "example_value",
"is_disabled": true,
"name": "example_value",
"user_count": 1,
"user_ids": []
}
}Upload a file
Share a file in a channel or thread, with an optional message. Upload a file, pass a file from an earlier step, or turn text into a file (a CSV or report, say). The Lodol app must be a member of a private channel to share there.
Inputs
- Channel
channel_idtextRequired - The channel to share the file in.
- File
filetext - The file to share: upload one, or pick a file from an earlier step. Leave empty to send File contents instead.
- File contents
contenttext - Text to save as the file, such as a CSV or report an earlier step wrote. Used only when File is empty; File name is then required.
- File name
filenametext - The file's name in Slack, with its extension, e.g. report.csv. Defaults to the uploaded file's name.
- Title
titletext - A title to show instead of the file name.
- Message
initial_commenttext - A message to post with the file.
- Reply To
thread_tstext - To post inside a thread, enter the timestamp of the first message in that thread. Leave empty to post in the channel.
Outputs
channel_idtext- Channel the file was shared in.
fileobject- The uploaded file.
statustext- Operation status (typically 'success').
Example output
{
"channel_id": "example_value",
"file": {
"id": "example_value",
"name": "example_value",
"title": "example_value"
},
"status": "example_value"
}