If you're still reading, we suspect that you either have an existing legacy custom integration, or that you stumbled across this page looking for a general overview of what you can do with apps on Slack.
For developers with those existing legacy integrations, the old docs for each feature are still available, and we'll keep them around in case you need them.
If you're just starting out, we recommend that you learn instead about the replacement for legacy integrations - Slack apps. You'll find a section below filled with tips about the right learning path to take!
If you want to learn how to move your legacy integration to a new Slack app, we have some tips for you below.
If you dream it, you can do it. The Slack platform offers a range of ways for users and apps to interact, all the APIs you need to read and write data from and to conversations and users, and various methods of distribution.
Slack apps can interact with users in lots of different ways, and we leave it up to developers like you to pick the interactions most suited to their audiences.
Once users start interacting with your Slack app, our APIs will let you retrieve the data you need from the various resources in Slack, and send data back to make updates or publish something new.
If you want to build an app that's just for your workspace, you can do that. If you want to build an app to share with the wide world, you can do that too.
If you've built a legacy custom integration in the past, you'll find all of the same functionality available to use in Slack apps. The implementation of these functions has changed though, so below is a handy list of how to replace your legacy features.
Make a new Slack app and add in any of the features you want.
Slack apps generate a new token for every user, and each user has their own set of permissions granted.
Incoming Webhooks are a simple way to post messages from apps into Slack. Creating an Incoming Webhook gives you a unique URL to which you send a JSON payload with the message text and some options.
Using incoming webhooks with Slack apps is very similar to the legacy process you're familiar with. Follow our Getting Started guide to set up new webhooks for use with Slack apps.
Slash Commands let users trigger an interaction with your app directly from the message box in Slack. You can create custom commands for Slack apps quickly and easily by following our Getting Started guide.
The process of handling and responding to those commands is almost identical compared to the legacy process you might have already built.
Let users converse with your app in Slack by building bots. Our guide to Enabling Interactions with Bots will help you recreate any existing legacy bot functionality you might already have in a Slack app.
The Events API provides a fully functional alternative for the features of Outgoing Webhooks.
More specifically, Outgoing Webhooks are used to send a notification to an app about the following activities:
The Events API can be used to replace this by subscribing to the
message.channels event type. This will push a data payload to an app every time a message is posted to a public channel.
When an app receives that data payload, it'll be able to see both the source
channel and the
text of the posted message. Using
channel will help replicate the first Outgoing Webhook feature, and looking for the trigger words in the
text string will replicate the second.
Even better, while Outgoing Webhooks only worked for public channels, the Events API can be used with private channels, direct message conversations, or multi-party direct message conversations. There are also dozens of other event types available for subscription, and for your app to react to. Read the Events API overview for a better idea of all the things you can use it for.
If you were using a legacy token to make calls with the Web API, you'll need to generate a new one for your new Slack app. Follow our guide to the OAuth flow.
To simplify testing and development, you can quickly and easily create a new app and install it in two clicks - just follow our Getting Started guide.
Once it's installed, use the app's settings to add the permission scopes you need for your testing.