The Slack platform allows you to extend and automate your workspaces to cultivate conversation, inspire action, and synergize services.
The workspace is your sandbox, and this guide will show you some of the toys.
The Slack platform offers a few different paths to enhancing your workspaces:
Read on to determine the best path for you.
Working on the next generation platform is different from traditional HTTP-based APIs. If you’ve developed for Slack before, you may notice some familiarities, and you'll likely arrive with some notions about slash commands, bot users, and OAuth. Don't forget everything you know — but we encourage you to approach this platform with a beginner's mindset.
Learn a new way of building function-oriented, event-driven integrations from our tutorials and sample code. Our Developer Relations team is excited to share what they've learned building with you.
The next generation platform is all about:
So how does it work? You can create functions that serve as modular building blocks for automated work. Chain functions together to create complex functionality, and share these building blocks with others for use in their own workflows.
Functions are the distinct actions your integration can perform, taking specific inputs and producing defined outputs. | |
Workflows are an ordered set of steps, interactions, and functions chained together. | |
Triggers are how workflows begin, whether via automation or direct user interaction. | |
Datastores are secure, Slack-hosted places to stash and retrieve data you need during runtime. | |
The Slack CLI allows you to execute everything on Slack infrastructure, code and all. |
In order to develop apps with the next-generation platform, your workspace must be on a paid plan. Check out our FAQ for more details. In addition, running premium workflows with custom-built functions has pricing attached to it. Learn more about the pricing model in our help center.
While in development, you can keep your project mostly to yourself, or share it with a close collaborator. If your Slack admin requires approval of app installations, they’ll need to approve what you’re building first.
If you don't already know TypeScript (a strongly typed evolution of Javascript) or Deno, that's okay! Start with a sample and look for the things you know and love from other languages.
A next generation Slack app's capabilities are defined by its app manifest. One of the joys of defining your manifest in Typescript is leveraging the language's features to automate its creation. In other words, think of cool tricks you may use to make your manifest less monolithic. Our Deno starter template shows an example.
From your first steps to deploying to production, you'll be interfacing with the Slack CLI to build on the next generation Slack platform.
One caveat (for now): the app management UI on api.slack.com/apps
doesn’t support configuring next generation Slack apps.
The next-generation Slack platform offers a wide range of samples, templates, and tutorials to help you jump right into building:
Create, store, and send friendly welcome messages to your teammates when they join a channel.
Learn how to code functions utilizing the GitHub API, all neatly sequenced in a workflow.
Design and deploy a custom function as a step in Workflow Builder using the next-generation Slack platform CLI and SDK.
Create an app to crowdsource company terms using the next-generation Slack platform.
A social app to log your running activites each week and compare your team's progress with a leaderboard and stats.
Apps have access to the full scope of the platform, paving the way for more enhanced and powerful experiences in Slack. To make this magic happen, every Slack app has access to a bag of tricks — a range of APIs that provide access to read, write, and update all kinds of data in Slack.
Some of these features mirror what users can do in Slack clients:
You can create welcoming spaces for people to use your Slack apps by using the range of possible app surfaces. A surface is anywhere an app can express itself and interact with users.
An App Home is a private, one-to-one space in Slack shared by the user and the app. The user can reach the App Home from a workspace's conversation list or by clicking on the app's name in messages.
Within any App Home, there are multiple tabs. Some tabs like About and Messages are fixed, but Home tabs can be fully customized by apps. The Home tab can be enriched with intricate layouts and deep interactivity.
Modals are popups ideal for requesting and collecting data from users, or for temporarily displaying dynamic, interactive information.
Messages are dynamic yet transient spaces; they allow users to complete workflows within their Slack conversations, forming a conversational interface of potentially limitless complexity.
The Slack platform is composed of several APIs that let you build apps of all shapes and sizes. Generally, these APIs work together but there’s also a bit of overlap.
With the Events API, you pick the events you’re interested in receiving and Slack will send them to an endpoint you specify via HTTP.
If you don't wish to expose a public, static HTTP endpoint to communicate with Slack, Socket Mode can help.
If the Events API is how Slack pings your app, the Web API is how your app pongs back to Slack. Often, this will be because you want to take some action on a Slack workspace, such as composing a message or creating a new channel. Other times, it’s because you want to request something directly, such as a list of all the people in a workspace.
The Conversations API is a subset of the Web API, meaning it’s a set of functions you use to call Slack directly. These functions deal specifically with all of the various channel-like objects that can exist in a Slack workspace, specifically public and private channels, shared channels, external shared channels, DMs, and multiparty DMs.
For the most part, these channel-like objects all behave the same (you can list the users in them, for example), however each conversation will have unique attributes, such as how private it is or whether it's shared across workspaces.
Socket Mode allows you to use the Events API and interactive features of the platform—without exposing a static HTTP endpoint to receive payloads. Instead, you use the WebSocket Protocol and generate a URL at runtime.
There are many different combinations that can be created, from a simple, single-purpose tool to a complex, interactive service integration. The possibilities are limitless!
The following are some resources to guide you along your journey:
Only members on the same workspace as the app can be added as collaborators. This is particularly important on Enterprise Grid, since the member must be a part of the Enterprise Grid workspace where the app was created. If you have single or multi-channel guests in your workspace, you may assign them as collaborators. Guests cannot delete a Slack app; they also cannot modify your carefully pruned roster of co-conspirators.
Create a Slack app Manage your apps
Workflow Builder allows you to create workflows using a limited set of triggers, steps, and variables. You can build your own workflows within Slack, or you can start off with templates.