Skip to content
Release: Australia · Updated: 2026-03-12 · Official documentation · View source

Configure Slack modals in ServiceNow instance

Create modal and specify fields that should be displayed in your Slack modal. Modal UI can be generated in two ways; automatically using a ServiceNow table and manually using a custom View Payload.

Before you begin

Role required: admin.

About this task

For example, if you want to create incident using modal in Slack, the Create Incident modal requires Priority, Category, and Short Description fields.

Note: Modals can be triggered from these interactive Slack components:

  • Command,
  • Block action,
  • Global shortcut, and
  • Message shortcut.

Procedure

  1. To create a modal with UI that is automatically generated using a ServiceNow table:

    1. Navigate to Slack > Slack Modal Configuration.

    2. Click New.

    3. On the Slack Modal Configuration form, fill these values.

FieldDescription
NameName to identify the record. For example, `Modal to create incident`.
Modal TitleModal title that is displayed on Slack. For example, `Create Incident`.
TableServiceNow table corresponding to the modal fields. For example, Incident [incident].
Custom ModalOption to configure a custom modal.
Input FieldsInputs fields that should be displayed on Slack. For example, select Priority, Category, and Short Description. Ensure that these modal fields correspond to the selected ServiceNow table. For example, you can't display task related fields on a modal that creates an incident.Note: Only the string, date, and choice field types are supported.
ActiveOption to actively use the record.
Script Validation

Script to validate inputs provided by the user in the modal. To validate the user-provided inputs, ensure that you are aware of the format in which values are retrieved from the modal and parse the response from Slack.The sample payload when user provides values for the Priority, Category, and Short Description fields in the Create Incident modal is:

{"priority":{"4gk":{"type":"static_select","selected_option":{"text":{"type":"plain_text","text":"1 - Critical","emoji":true},"value":"1"}}},"category":{"iV7":{"type":"static_select","selected_option":{"text":{"type":"plain_text","text":"Software","emoji":true},"value":"software"}}},"short_description":{"XS/Q=":{"type":"plain_text_input","value":"hemanth"}}}

To display validation errors in the modal, configure the script to return an object keys, status, and errorObject. errorObject should have a value of object that will be displayed on Slack. The object should have response_action and error.

Also, configure the script to return an object with keys of status and statusMessage when there are no validation errors. statusMessage is optional and you can configure it as per your requirement.

Image omitted: slack-script-validation.png
Script validation.</p></td></tr></tbody>
4.  Right-click the form header and click **Save**.

    The Create Incident modal is created in Slack.
Image omitted: slack-modal.png
Slack modal.
  1. To create a modal with UI that is manually generated using a custom View Payload:

    1. Navigate to Slack > Slack Modal Configuration.

    2. Click New.

    3. On the Slack Modal Configuration form, fill these values.

FieldDescription
NameName to identify the record. For example, `Modal to create incident`.
Custom ModalOption to configure a custom modal. Select this check box.
View PayloadPayload generated by Slack Block Kit Builder that defines the modal UI. For more information, see Block Kit and Building with Block Kit.
ActiveOption to actively use the record.
Script Validation

Script to validate inputs provided by the user in the modal. To validate the user-provided inputs, ensure that you are aware of the format in which values are retrieved from the modal and parse the response from Slack.The sample payload when user provides values for the Priority, Category, and Short Description fields in the Create Incident modal is:

{"priority":{"4gk":{"type":"static_select","selected_option":{"text":{"type":"plain_text","text":"1 - Critical","emoji":true},"value":"1"}}},"category":{"iV7":{"type":"static_select","selected_option":{"text":{"type":"plain_text","text":"Software","emoji":true},"value":"software"}}},"short_description":{"XS/Q=":{"type":"plain_text_input","value":"hemanth"}}}

To display validation errors in the modal, configure the script to return an object keys, status, and errorObject. errorObject should have a value of object that will be displayed on Slack. The object should have response_action and error.

Also, configure the script to return an object with keys of status and statusMessage when there are no validation errors. statusMessage is optional and you can configure it as per your requirement.

Image omitted: slack-script-validation.png
Script validation.</p></td></tr></tbody>
4.  Right-click the form header and click **Save**.

    The Create Incident modal is created in Slack.
  1. Specify conditions to define when the modals should be displayed:

    1. Navigate to Slack > Inbound Decisions For Modals .

    2. On the Decision form, fill these values.

      FieldDescription
      LabelName to identify the inbound modal decision.
      AnswerModal that must be displayed when the specified conditions are met. Ensure that you select the required record from the Slack Modal Configuration [sn_slack_ah_v2_slack_modal_configuration] table.
      Default AnswerOption to specify if this is the default modal. The default modal is applicable when the conditions are not met.
      ConditionConditions to be met in your Slack application to display the modal.

      Note:

      • Copy and record the value of sys_id. You can use this sys_id as the unique value in Callback ID while configuring the shortcut or message shortcut in your Slack app.
Image omitted: modal-slack-sysid-shortcut.png
sys\_id of the modal's inbound policy record.
        **Note:** Two system properties are added to handle the inbound communications:
CategoryProperty nameDescriptionExample
Slash commandssn\_slack\_ah\_v2.command.special\_charactersThe characters encoded using the encodeURIComponent method are handled internally. To replace any additional special characters used in Slash commands in the Slack application with their encoded URI characters, add the characters in a JSON format.\{ "~" : "%7E", "\\\(" : "%28", \}
Interactivity & Shortcuts:sn\_slack\_ah\_v2.interactivity.special\_charactersThe characters encoded using encodeURIComponent method and the following characters are handled internally: `!, ', (, ), *, ~` Fill in the property to replace any additional special characters used in Slack Interactivity & Shortcuts in the Slack application with their Encoded URI characters in a JSON format.\{ "~" : "%7E", "\\\(" : "%28", \}
        To display modals for the required shortcut, in **Condition**, provide the sys\_id of the modal's inbound policy record.
Image omitted: slack-modal-sysid.png
Display modals for Slack shortcuts.
    -   To display modals for the required Slack commands, in **Condition**, provide the required command for which the modal should be displayed.
Image omitted: slack-modal-cmd.png
Display modals for Slack commands.
    -   To display modals for the required Slack block action, in **Condition**, provide the required action ID of the required block action for which the modal should be displayed.
Image omitted: slack-modal-actionid.png
Display modals for Slack block actions.
3.  Click **Submit**.

    When events in Slack meet conditions specified in the policy, the associated modal is displayed.

    **Note:** These inbound decisions are saved in the Decision tables. Users are cautioned against directly updating or modifying data in these tables.
  1. Specify tasks to be performed when user provides values in the modals by creating an inbound policy:

    1. Navigate to Slack > Inbound Decisions.

    2. Click New.

    3. On the Decision form, fill these values.

FieldDescription
LabelName to identify the inbound decision.
AnswerSubflow that must be triggered when the specified conditions are met.
Default Answer

Option to specify if this is the default answer. The default answer is applicable when the conditions are not met.1. Click the lookup icon (

Image omitted: SearchIcon.png
Lookup icon).
2. Select the required subflow from the Document list.

Note: Ensure that the Table name is Flow [sys_hub_flow].

Ensure that you have configured the subflow to process the response payload from Slack to automate tasks.

Condition

Conditions to be met to perform tasks in ServiceNow instance. Specify the modal record in the condition.

Image omitted: slack-modal-subflow.png
Condition to trigger subflow.</p>

Note: Condition must have condition specific to the modal record only.

4.  Click **Submit**.

    When Slack user provides inputs in the modal, the associated subflow is triggered after validating the inputs. Depending on the automations configured in your subflow, tasks are performed.

sndocs is an independent community mirror and is not affiliated with or endorsed by ServiceNow.

ServiceNow, the ServiceNow logo, Now, and other ServiceNow marks are trademarks and/or registered trademarks of ServiceNow, Inc., in the United States and/or other countries. Other company and product names may be trademarks of the respective companies with which they are associated.

© 2026 ServiceNow, Inc. All rights reserved.

Documentation content is redistributed under the Apache License 2.0 from the ServiceNowDocs repository.