Developing automations requires a paid plan. Don't have one? Join the Developer Program and provision a sandbox with access to all Slack features for free.
Workflow steps combine the utility of Workflow Builder with the custom functionality of your choosing. Not to be confused with legacy Steps from Apps, workflow steps are functions that you add to an app (via the app manifest or Workflow Steps page in your app's settings) that can then be used as steps in Workflow Builder. You have the flexibility to create an app that contains workflow steps using the Deno SDK, the Bolt SDK, or entirely on your own, sans Slack tooling. This guide will talk through the differences in tooling to create workflow steps, how to manage your apps with workflow steps, and distribution options.
The following Slack SDKs support custom workflow steps.
SDK | Language(s) supported | Hosting | More information |
---|---|---|---|
Deno SDK | TypeScript | Slack-hosted | The Deno SDK is optimized for workflows, so it enables you to build steps, build workflows with your own steps, Slack steps, and connector steps, as well as utilize Slack datastores. Deno SDK apps are hosted on Slack. |
Bolt SDK | Java, JavaScript, Python | Self-hosted | The Bolt SDK supports steps and are self-hosted. |
Slack offers two options for app management.
If your app is created with the Slack CLI, we recommend using the CLI to manage it. Apps built with Deno SDK and Bolt SDK are compatible with the Slack CLI.
β‘οΈ Follow this quickstart guide to get started with the Slack CLI for a Deno app.
β‘οΈ Create a Bolt app.
If your app is created manually, we recommend that you continue to manage it on your app's configuration page.
Adding workflow steps to your app requires it to be an org-ready app. To learn what this means and how to prepare your app in the app settings, refer to our guide on org-ready apps.
To add workflow steps to your app in the app settings, first select your app from the list here, then navigate to App Manifest and add the following event subscription, then save your changes:
"settings": {
...
"event_subscriptions": {
"bot_events": [
"function_executed"
]
},
}
Once that is taken care of, navigate to Workflow Steps in the left nav menu. Click Add Step and heed any immediate warnings that may pop up, such as adding bot scopes and enabling your app for org-wide distribution. Then name your step, define its callback_id
, and add any desiredinput_parameters
and output_parameters
. You will see the step reflected in this screen as well as in the app manifest. Navigate to App Manifest to see your newly created workflow step.
A step called "Update report" with a callback_id
of update_report
and two required input parameters, report_date
and report_update
, is reflected in the manifest like this:
"functions": {
"update_report": {
"title": "Update report",
"description": "",
"input_parameters": {
"report_date": {
"type": "slack#/types/date",
"title": "Report Date",
"description": "",
"is_required": true,
"name": "report_date"
},
"report_update": {
"type": "string",
"title": "Report Update",
"description": "",
"is_required": true,
"name": "report_update"
}
},
"output_parameters": {}
}
}
While steps can be defined in the app settings manifest editor like this, you must implement a function listener in code to determine what happens when the step is invoked.
Distribution works differently for Slack apps that contain workflow steps when the app is within a standalone (non-Enterprise Grid) workspace versus within an Enterprise Grid organization.
Apps containing workflow steps cannot be distributed publicly or submitted to the Slack Marketplace. We recommend sharing your code as a public repository in order to share workflow steps.
To protect your organization, external users (those outside your organization connected through Slack Connect) cannot use a workflow that contains connector steps or workflow steps built by your organization. This may manifest in a home_team_only
warning. Refer to this help center article for more details.
Curious about building your own?
β‘οΈ Read more about building workflow steps with the Deno SDK here.
ββ¨ Then check out a step-by-step tutorial for this functionality.
β‘οΈ Read more about building workflow steps with the Bolt SDK here.
ββ¨ Then check out a step-by-step tutorial for a new app or one for an existing app for this functionality.