Skip to main content

Action designer

Learn about how action components are used to design actions

Action designer is a flexible no-code visual designer tool, used for creating and customizing actions. If you are looking to design Slack apps from scratch, action designer is the right tool for you by enabling productivity and automation accessible by everyone.

Design mode

Design mode is the interface that lets you access and update your action's components. You can design and test your actions by navigating between Inputs, Outputs, Requests and Functions of your action on the same screen.

Design mode

In design mode, your progress on your actions is automatically saved as a draft as you update any component. When your action is ready to be run, you can apply your changes, or revert them and save the action without your progress and delete your draft.

Actions and action components


Actions are the atomic units of work you do in your everyday applications. Actions run in Actioner range from listing your customer activities to updating your deals, from streamlining your incident management process to answering your customer questions.

An action takes inputs, executes requests, and produces outputs. In this section, we'll take a closer look to each component and how they relate to each other, with two example actions:

Create issue and Search issues in Jira.


To design actions, you first need to create an app. An app is a container holding your actions together, enabling them to be run with continuity.

When you are designing actions for your regular tasks in Jira; Create issue and Search issues are your actions, while Jira is your app.


To send API requests to your tools, you can add a connection between Actioner and your tool. Connections are setup on app level so that they can be used by any request in your app.

To connect to your Jira instance, you can add a Jira OAuth2 connection.


Inputs are the components used for gathering info from users while running the action. They can be text fields, select components, checkboxes, radio buttons or date-time pickers. You can think of a form that users fill out to create an issue or the filters they select from to search issues.

For Create issue action, you can add select components listing your Jira projects and issue types and text inputs for issue summary and description fields. When the action is run, values of the inputs are passed to an API request component that creates a new Jira issue.

For Search issues action, you can add select components listing your Jira projects and issue types and a text input for a search with a keyword. When the action is run, values of the inputs are passed to an API request component that lists Jira issues.


Outputs are the components showing the results of your actions. They can be visual tables, charts, informational texts or the raw responses of API requests.

For Create issue action, you can add a markdown text informing the users that the issue is created successfully with a permalink opening the issue in Jira.

For Search issues action, you can add a table that lists issues. Table columns can be setup to show the properties of issues while each row displaying an issue with specified properties.

API requests

API requests are the HTTP calls sent to the REST APIs of your tools and the retrieved responses from them. They are used in two ways.

  • They can be sent to perform an action in your tool.
  • Their responses can be dynamic sources for your input and output components

API requests are typically associated with connections. When a request is associated with a connection, URL and authentication credentials of the connection are automatically applied to the API request when it is triggered. This means that you do not have to configure the same URLs or credentials each time adding a new API request.

In this example, Jira app has a connection named Jira OAuth2. While adding each API request, you can associate them with Jira OAuth2 connection.

For Create issue action, you can add API request components;

  • to create a new issue in Jira REST API. This request creates the new issue with the selected project and issue type and entered summary and description.
  • to dynamically generate a list of your projects and issue types. Responses of these requests are used as the source for project and issue type inputs.

For Search issues action, similarly, you can add requests:

  • to search issues in Jira REST API. This request searches issues with selected project, issue type and entered keyword.
  • to dynamically generate a list of your projects and issue types. Responses of these requests are used as a source for project and issue type inputs.
  • to show user names instead of user ids in your table output. Search issue request returns IDs of each user in its response. You can configure a new API request to get the list of your Jira users and replace the user IDs with their names in your table output.

Other request types

Besides API requests, Actioner also has Slack, utility and link request types. These requests extend the features of your actions. Let's go over each of them one by one.

Slack requests

Slack requests enable your to take Slack native actions, such as creating a collaboration channel or posting a message in your channel.

Utility requests

Utility requests enable you to add extended functionality to your actions, such as a translation of a phrase or a contextual gif.

Link requests enable you to open any external link when your action is run. External links can be static or a dynamically generated URLs from your inputs, or other action components.


A function in Actioner is a building block written in JavaScript. It is a set of statements that performs a task or calculates a value. Functions let you write larger, reusable, blocks of code and enable you to extend the capabilities of your actions.

Once created, functions are scoped to the action. By adding a function, you can manipulate and transform any data generated by the action. If you find yourself using the same or similar blocks of code multiple times throughout your action, it might be worth pulling that out into a function.

More than the ability to write longer JavaScript code, functions also enable you to store values in key value pairs and call them whenever they are needed.

You can store variables —and their values— both on action level and on app level and extend the functionality of your actions to workflows and other actions across your app.