Introduction to Slack apps

More doing, less reading
To jump straight into developing your own Slack app, follow our Quickstart. You can get started right now.

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.

Surfaces are composed using a collection of puzzle pieces called Block Kit. Because these visual components are designed by Slack, they have a consistent look and feel across every client, and for every user.

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.

Apps can use a combination of surfaces. Just because the invocation happened in a channel doesn't mean that the other members of that channel need to see the rest of the process, or even the end result.

Perhaps the right thing to do is to take things to a modal - where information can be quietly collected, decisions privately made, and workflows finalized.


Entry points to interactivity

Slack apps can use interactive features to achieve two-way communication between Slack apps and users. The interactive flow is a two step process:

  1. Something happens that invokes the interaction.
  2. The app responds to the interaction.

There are multiple ways to invoke the interaction, and apps have multiple ways to respond.

Your app can be invoked without any direct user input due to the following:

  • Schedulated interactions.
  • Interactions initiated by external services.
  • Interactions initiated by the Events API.

Users can invoke apps by using one of the following entry points:

When you're planning your Slack app, the question is — which of these entry points is most appropriate?

For example, if you know your audience has a lower familiarity with interactivity, Slash commands may be difficult for them to use.

Slack users are people of all ages, races, genders, and ability levels. They may have poor internet connections, use Slack only on mobile, or they might never have used a Slack app before. We want them all to have a great experience on Slack, so be sympathetic of your audience when designing your app.

In many cases, the answer could be using all of the entry points. Your app can accomplish many different tasks, with each being best suited to a different entry point.


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 that can sometimes be confusing. This section will help you find the right API for your project.

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.


Tools and SDKS

Our range of SDKs, frameworks, and construction tools can streamline the process of building a Slack app.

Bolt SDKs

Bolt is a framework that lets you build Slack apps in a flash—available in JavaScript, Python, and Java.

Bolt handles much of the foundational setup so you can focus on your app's functionality. Out of the box, Bolt includes:

  • A basic web server to run your app on
  • Authentication and installation handling for all the ins and outs of OAuth
  • Simplified interfaces for all Slack APIs and app features
  • Automatic token validation, retry, and rate-limiting logic

Bolt also has built-in type support, so you can get more work done right from your code editor.

Follow our guides on getting started with Bolt for JavaScript, Bolt for Python, or Bolt for Java. Or dig deeper by exploring our resources and sample code.

Slack SDKs

If you prefer to build the foundations of your app yourself, you can still avail of an SDK to cut down on boilerplate code.

Our official Python, Node, and Java SDKs provide in-language wrappers for the most commonly used parts of the Slack platform.

Instead of building your own authentication handling or generating HTTP requests for Web API calls, just use built-in SDK classes and methods.

In addition to our official SDKs, we have a list of community-developed libraries that provide similar assistance for languages like C#, Go, .NET, and more.

Other development tools

There are a range of other development tools available to help you out. A few notable ones:

Block Kit Builder

A visual prototyping tool for surfaces. Stack blocks to preview blocks in all surfaces and get a feel for interactive elements.

Steno

Your sidekick for developing tests for your Slack app. Record and replay your HTTP requests to generate fixtures for your tests.

Slack Developer Tools

A Slack app that helps you build Slack apps. Quickly look up documentation from within Slack, investigate the structure of messages, and more.

See a full list on our Tools page.


Onward

There are many different combinations that can be created, from a single-purpose tool to a complex, interactive service integration.

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.

Keep the end-goal in sight like a guiding horizon: a user wants to accomplish something with your app. The rest is getting there as productively and pleasantly as possible.

Ready?

Now is the time to build an app that will help make other people’s working lives simpler, more pleasant, and more productive.

Quickstart Create a Slack app Manage your apps