An introduction to the Slack platform

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.


What can the Slack platform do?

The Slack platform offers a few different paths to enhancing your workspaces:

Read on to determine the best path for you.


The next generation Slack platform

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:

  1. Using Slack functions and creating custom functions to encapsulate your capabilities within workflows
  2. Leveraging the Slack CLI to develop, test, and deploy your functions and workflows
  3. Empowering users to remix and recombine your functions in Workflow Builder (under development)

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.

Clip art depicting a stack of multi-colored blocks, representing Slack functions Functions are the distinct actions your integration can perform, taking specific inputs and producing defined outputs.
Here we see arrows bouncing between workflow sandwiches in clip art representing workflows Workflows are an ordered set of steps, interactions, and functions chained together.
This clip art suggests a marble culprit knocking down sandwiches arrayed like dominoes, certainly evoking how we think about triggers and you should too. Triggers are how workflows begin, whether via automation or direct user interaction.
This clip art shows what looks like a stack of miniature computer hard drives you might find on a desk in another era. This symbolizes where you can store data for functions and workflows on Slack. Datastores are secure, Slack-hosted places to stash and retrieve data you need during runtime.
This image shows a neat little box with the Slack logo on it. You can run your apps on Slack, the image seems to suggest. The Slack CLI allows you to execute everything on Slack infrastructure, code and all.

Before you begin

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.

Getting started with the next generation platform

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.

Ready?

Begin with our quickstart

The next-generation Slack platform offers a wide range of samples, templates, and tutorials to help you jump right into building:

Beginner
Give Kudos

Learn the ropes of next generation Slack apps by giving kudos to your team.

Beginner
Hello World

Get started by taking a tour around our Hello World next generation Slack app.

Intermediate
Announcement Bot

Create and post announcements to your channels.

Intermediate
Welcome Bot

Create, store, and send friendly welcome messages to your teammates when they join a channel.

Intermediate
GitHub Issue

Learn how to code functions utilizing the GitHub API, all neatly sequenced in a workflow.

Intermediate
Create a custom function for Workflow Builder

Design and deploy a custom function as a step in Workflow Builder using the next-generation Slack platform CLI and SDK.

Intermediate
Define App

Create an app to crowdsource company terms using the next-generation Slack platform.

Advanced
Request Time Off

Request approval for time off with workflows using Typescript and Deno.

Advanced
Virtual Running Buddies

A social app to log your running activites each week and compare your team's progress with a leaderboard and stats.

Advanced
Open Authorization

Access Google services in your app with OAuth2.


Slack apps and APIs

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:

Send messages to conversations using Web APIs and webhooks.

Create, archive, and manage conversations using conversation-specific Web APIs.

Receive notifications about mentions, app home opens, and other various goings-on via Events APIs.


Apps can also do things in Slack that human users cannot, such as the following:

Create and update a Home tab to give users a persistent space to interact and stay informed.

Empower users to invoke interaction at any time with shortcuts.

Open modals to collect info and provide a space for displaying dynamic details.

Publish interactive components in messages, modals, and Home tabs to enable action and reaction.

Automate the management of users, apps, and workspaces using various enterprise-focused APIs.


App surfaces

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.

App Home

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

Modals are popups ideal for requesting and collecting data from users, or for temporarily displaying dynamic, interactive information.

Messages

Messages are dynamic yet transient spaces; they allow users to complete workflows within their Slack conversations, forming a conversational interface of potentially limitless complexity.


APIs

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.

The Events API

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.

The Web API

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

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

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.

Getting started with Slack apps

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.

Ready?

Create a Slack app Manage your apps


Workflow Builder

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.

  • Triggers initiate a workflow. They may be user-invoked actions, such as selecting a shortcut or reacting with an emoji. Or they could be automatic, such as scheduled dates and times.
  • Steps follow the trigger’s lead and are actions you want your workflow to take. A step performs a basic task, such as posting a message to a conversation or prompting a user for information in a modal.
  • Variables allow you to references information submitted to your workflow in steps, so that you don't have to manually add that information multiple times.