Legacy Steps from Apps configuration view object
We're retiring all Slack app functionality around Steps from Apps in September 2024. Learn more.
Configuration modals are used in Workflow Builder during the addition of Steps from Apps
To define these modals, apps create view objects — packages of information that describe layout, interactivity, and other useful metadata.
Configuration view objects are used within the following Web API methods:
Configuration modals are used just like regular modals, with a few differences.
Below is a reference of all the possible fields within a configuration view object:
Fields
| Field | Type | Required? | Description | 
|---|---|---|---|
| type | String | Yes | The type of view. Always set to workflow_step | 
| blocks | Array | Yes | An array of blocks that defines the content of the view. Max of 100 blocks. | 
| private_metadata | String | No | An optional string that will be sent to your app in view_submissionandblock_actionsevents. Max length of 3000 characters. | 
| callback_id | String | No | An identifier to recognize interactions and submissions of this particular view. Don't use this to store sensitive information (use private_metadatainstead). Max length of 255 characters. | 
| submit_disabled | Boolean | No | When set to true, disables thesubmitbutton until the user has completed one or more inputs. | 
| external_idorview_id | string | Yes | A unique identifier of the view set by the developer. Must be unique for all views on a team. Max length of 255 characters. Note: only one of either view_idorexternal_idis required. | 
If you use non-standard characters (including characters with diacritics), please be aware that these are converted and sent in unicode format when you receive the view callback payloads.
Examples
A configuration modal view:
{
  "type": "workflow_step",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "It's Block Kit...but _in a modal_"
      },
      "block_id": "section1",
      "accessory": {
        "type": "button",
        "text": {
          "type": "plain_text",
          "text": "Click me"
        },
        "action_id": "button_abc",
        "value": "Button value",
        "style": "danger"
      }
    },
    {
      "type": "input",
      "label": {
        "type": "plain_text",
        "text": "Input label"
      },
      "element": {
        "type": "plain_text_input",
        "action_id": "input1",
        "placeholder": {
          "type": "plain_text",
          "text": "Type in here"
        },
        "multiline": false
      },
      "optional": false
    }
  ],
  "private_metadata": "Shhhhhhhh",
  "callback_id": "view_identifier_12"
}