Automation platform FAQ

If you came here expecting an answer to a question that you did not find, please let us know.

Slack developer questions

How do I set up my developer environment?

Head to the Quickstart guide to use our automated installer script, or download the latest version of the slack CLI and follow instructions to install it manually.

If you have installed the Slack CLI previously and have an older version, note that the minimum required CLI version for Enterprise Grid as of September 19th, 2023 is v2.9.0. If you attempt to log in with an older version, you'll receive a cli_update_required error from the Slack API. Run slack upgrade to get the latest version.

Using a combination of your favorite text editor, the slack CLI tool, and the included future generation SDK, you will program in TypeScript with a Deno runtime environment.

Which hosts are involved in the creation and execution of apps created with the CLI?

The new Slack platform is closely tied to specific language runtimes and SDKs. As you install and utilize your developer tools, you should expect requests from your network to the following non-exhaustive list of hosts:

  • api.slack.com, configuration information and documentation resources
  • downloads.slack-edge.com, where binaries and other static resources are hosted by Slack
  • slack.com, where most of the individual APIs reside called by the CLI and your app
  • slackb.com, general logging for your triggers, functions, and workflows
  • slackd.com, where we send information about errors, warnings, and other special conditions
  • deno.land, where the Typescript runtime, Deno, resolves & retrieves dependencies and versions

How can two or more developers collaborate on an app?

For more information, refer to team collaboration.

How do I build a slash command on the next generation platform?

Workflows can be started manually by users via link triggers. There are multiple ways to invoke a link trigger, and one of them is with a / keystroke via the Shortcut menu.

In other words, you can use a slash command to invoke a link trigger that will kick off a workflow.

Which languages are supported in Slack's managed infrastructure?

At this time, apps deployed to Slack's managed infrastructure are built with Typescript in a Deno runtime environment.

What's the difference between running and deploying an app?

When you use slack run, the local development version of your app connects to Slack via socket mode directly from where you're developing. As you use Slack (or other tools) to interact with your app's triggers, workflows, and functions, data is sent back and forth against your latest saved code. Use this while you're still tweaking things. Your development app is generally only shared with other collaborators, though you can test the full range of trigger options anyway.

When you use slack deploy, the fine computer instructions you've written are packaged up and deployed to Slack. As users interact with your app, data is swiftly and securely sent back and forth between Slack servers. Treat this instance of your app with care, especially as your userbase grows.

The local and deployed environments have different triggers associated with them. Triggers you create in a local context will not automatically be created in a deployed context when you deploy your app.

How do I call a third-party API?

An example of how to do this is shown in the GitHub Issue tutorial, but the long and short of it is this:

  • Store API credentials as local environment variables. In the GitHub tutorial, for instance, your .env file could look like this.
github_name = slackbotsbestpal
github_token = ABC123DEF
  • Use the env context property to call environment variables from within your function.
import { DefineFunction, Schema, SlackFunction } from "deno-slack-sdk/mod.ts";

export const MyFunctionDefinition = DefineFunction({
  callback_id: "my_function",
  title: "my function",
  source_file: "functions/my_function.ts",
  input_parameters: { properties: {}, required: [] },
  output_parameters: { properties: {}, required: [] },
});

export default SlackFunction(
  MyFunctionDefinition,
  async ({ inputs, env }) => { // Add this
    const headers = {
      Authorization: `Bearer ${env.GITHUB_TOKEN}`,
      "Content-Type": "application/json",
    };
    try {
      const endpoint = "https://api.github.com/users/repos";
      const response = await fetch(endpoint, { method: "GET", headers });
      if (response.status != 200) {
        // In the case where the API responded with non 200 status
        const body = await response.text();
        const error =
          `Failed to call an API (status: ${response.status}, body: ${body})`;
        return { error };
      }
      // Do cool stuff with your repo info here
      const repos = await response.json();

      return { outputs: {} };
    } catch (err) {
      const error = `Failed to call GitHub API due to ${err}`;
      return { error };
    }
  },
);

That's all! When you run your app, it will use the environment variables stored within your .env file. Of course, you won't be using your .env file when your app is deployed (nor should you ever commit that file to source control), so the real power of environment variables is seen when you use the env Slack CLI helper. Once your app is deployed using slack deploy, add your environment variable with the following command:

slack env add github_token ABC123DEF

If your token contains non-alphanumeric characters, wrap it in double quotes. Environment variables added via the slack env add command can be accessed via the env CLI helper, which also allows you to update and remove them.

Can I import additional libraries and SDKs?

Yes, you can! To use a Deno Third Party Module, Deno imports modules using URLs. You can see how we do this for a test file in the Deno GitHub functions sample app

// /functions/create_issue_test.ts

import * as mf from "https://deno.land/x/mock_fetch@0.3.0/mod.ts";

How can I use the CLI to set up a CI/CD pipeline?

The CLI is commonly used in local development (usually in an interactive mode with prompts), but can also be used for automating testing and deployments (done without interactivity by using flags) by way of a Continuous Integration and Continuous Delivery (CI/CD) pipeline. Refer to CI/CD setup for more information.

Running this type of automation requires authorization with a service token. Refer to CI/CD authorization for more details.

Can I use Bolt with the next-generation Slack platform?

Bolt is not part of the next-generation Slack platform. Follow the Quickstart guide to get up and running with the Slack CLI and our Deno SDK to build and deploy next-generation automations for your workspace and beyond.


Slack administrator questions

Even some Slack developers are themselves Slack administrators, but of course if you're an admin you might find yourself here wondering these very same questions. If you don't find the answer to your administrative questions here, do consult the Slack help center for more user and admin-facing content.

What's new?

  • Previously, workflows could only be created with Workflow Builder. Now, developers can build and publish workflows for anyone in their Slack workspace or Enterprise Grid organization to use. They can also build custom functions that people will soon be able to add to workflows they create with Workflow Builder.
  • When developers build workflows and functions, they can set access permissions to determine who can run a workflow or add a function to a workflow. Admins can further restrict access to functions, if they’d like.
  • You can now view some workflows on the published workflow dashboard. Workflows built with Workflow Builder will still need to be viewed and managed from the All Published Workflows tab in Workflow Builder, but we’re working to move all workflows to the dashboard.

How do I turn off developer access to functions and workflows?

The new custom functions and workflows introduced to the Slack platform cannot be completely disabled. Instead, you can manage their installation via the app approvals feature.

How do I discover and manage which functions and workflows are installed in my workspace?

From the published workflow dashboard, you can view a list of workflows in your workspace or Enterprise Grid organization. You’ll also see a banner at the top of the dashboard page showing how much of your premium workflow allotment has been used.

How will I be charged for using the platform?

For the most up to date information about pricing, please consult this help center page on pricing.

These changes to our platform are designed to simplify and streamline development through new capabilities, like reusing custom functions and running your app on our managed infrastructure. To reflect that added value, our next-generation platform has a paid component.

Whether a workflow is standard or premium depends on the type of functions it includes, and usage is determined by how many times a workflow is run. Paid Slack plans include standard workflow runs and an allotment of premium workflow runs.

Note: Premium workflows are chargeable. If you exceed your allotment of premium workflow runs, pricing is based on how many times you run a premium workflow.

Learn more about pricing

Is there a promotional pricing period?

From April 24, 2023 to October 31, 2023, customers will not be charged for any premium workflow runs. Starting November 1st 2023, you’ll be charged for any premium workflow runs that exceed your plan’s allotment. If you don’t exceed your allotment, you won’t be charged.

What makes a workflow standard or premium?

Currently, workflows are considered standard if they use Slack functions and premium if they include at least one custom function. Right now, developers and customers in our Workflow Builder pilot program can build workflows using custom functions.

How do I know when our workspace will be charged for premium workflow runs?

If you’re a Workspace Primary Owner or admin with permissions, you can also go to your Billing page to see how many premium workflow runs included in your plan’s allotment have been used. Questions? Let our Support team know, or reach out to your account executive

Will existing custom integrations and Slack apps continue working?

Your existing apps will continue working as expected. Some classic or traditional Slack apps might even produce activity in Slack you can build custom functions and workflows around. That said, the next generation automation platform is meant to co-exist with our existing platform and your existing integrations and customizations.


Errata

Deployment and installation

The slack deploy command performs two operations:

  1. Deploys all functions associated with your app to the platform, and
  2. Installs your app into the selected workspace.
  • Slack is currently optimized for the first-party developer use case, in which the expectation is that the developer has access to the workspace in which they’re building the app.
  • When the app is installed as part of slack deploy, the workflows that belong to that app are also “installed” (made available) in that workspace. Currently, there is no way for a coded workflow to be "installed" (via the parent app being installed) by anyone other than the developer. However, coded workflows do not have to be deployed alongside a trigger; since triggers don't belong to apps, all deployment and installation happens first and then a trigger is created separately afterward.
  • JSON or YAML-based app manifests are no longer how your app's configuration is canonically defined. Instead, both your app's configuration and your function definitions will reside in manifest.ts.

Have 2 minutes to provide some feedback?

We'd love to hear about your experience building modular Slack apps. Please complete our short survey so we can use your feedback to improve.