So you want to build an app that other Slack teams can use. Well, you've come to the right place.
Slack apps bundle several of our custom integration tools into an easy-to-install application.
If you want to distribute your app for other teams to install, you can submit it to our App Directory. Our team will review your submission and work with you to get it listed. Of course, you'll want to add a Slack Button to your website to make installation easy for your users.
Your app does not need to be listed in the App Directory for it to work for your own or other Slack teams.
Let's walk through what it takes to build a Slack app.
You know you want to build a Slack app, but which platform features do you need to get there?
Once you're ready to share your app with the world, you can easily convert a collection of custom integrations in to a packaged Slack app.
You will be able to combine the following custom integration tools into a bundled app:
Send data into Slack with Incoming Webhooks
Incoming webhooks are the simplest way to automatically post messages from your service into Slack.
You can prototype this behavior using custom incoming webhooks, and easily transition to an app when you're ready. Once you have created an app and a team has authenticated it, you will receive a payload containing the Webhook URL, which you can use to send notifications straight into Slack.
Note: As a Slack app, you will not be able to set all of the message parameters available in custom integrations.
channel will always correspond to the channel selected by the team member installing your application, while the
icon_emoji values will inherit the options you've already configured in your application record.
Read the full incoming webhook documentation.
Invoke actions outside of Slack with Commands
Commands can be used to trigger an external service action, or to request an on-demand update. You can prototype your app command using custom slash commands. Later, when setting up or editing your Slack app, you can attach one or more commands to your app.
Note: App commands can only be sent to your externally hosted server as POST and GET requests over HTTPS. Valid certificates are required, and they cannot be self-signed.
Read the full slash command documentation.
Build a bot user
Bot users connect to Slack in real-time via websockets, allowing users to converse with them just like they would with another human user. You can prototype your real-time bot with a custom bot user integration. When creating or editing your Slack app, you'll be asked to choose a suggested username for the bot, which should correspond with the name of your app.
Read the full bot user documentation.
Use Advanced APIs
When you're ready to turn your custom integration into an app, you'll first need to create your Slack app. You must be logged in to a Slack account to do this, as the application record will be connected to this account. You'll be asked to fill out some basic information (name, description, icon) and will be given a
client_secret that you will use in your OAuth client.
You can also add commands and a bot user to your Slack app at this point. These will be installed on a user's team once they authenticate your app.
We provide a wide range of granular scopes that allow you to request the exact permissions that your app needs. For example, if you only need to post updates to a channel once an hour, you should only request the
incoming-webhook scope. The full inventory of scopes list the API methods that each scope corresponds to. Here are some examples:
emoji:readscopes, your app can use related API methods to build a leaderboard of team members' reactions.
incoming-webhookscope, users can grant your app access to post messages to a Slack channel of their choice, just like a custom incoming webhook integration.
commandsscope, authenticated users will have access to any commands that you have configured in your app.
botscope, you will receive a bot user token upon completion of an OAuth flow. You can use this bot user token to connect to the Real Time Messaging API.
files:write, you will be able to call their corresponding Web API methods.
See Slack app scopes for more information on
The simplest way for teams to install Slack apps is with an "Add to Slack" button.
Use this handy button code widget to choose your Slack app and select the scopes that you need. The widget generates some HTML code that you can use to add the "Add to Slack" button on your site.
If you'd prefer to use your own button or link, you can simply use the OAuth URL generated by the widget.
To sign individual team members into your app, use Sign in with Slack.
Want to distribute your Slack app so other teams can discover and install it? Once you're ready, submit it for review and consideration in our directory.
Apps submitted to the directory should be easy for teams to install and use. Our application review team will install and use your application and follow up with you for additional detail. As we receive many submissions, there may be a short delay before your application will be reviewed or approved.
Our Slack App Directory Checklist outlines the entire review and submission process.
When you're ready to submit: