| Skip to main content | https://docs.slack.dev/surfaces/modals#__docusaurus_skipToContent_fallback |
| https://docs.slack.dev/ |
| Guides | https://docs.slack.dev/ |
| Reference | https://docs.slack.dev/reference |
| Samples | https://docs.slack.dev/samples |
| Tools | https://docs.slack.dev/tools |
| Changelog | https://docs.slack.dev/changelog |
| Dev Program | https://api.slack.com/developer-program |
| MANAGE APPS | https://api.slack.com/apps |
| Welcome! | https://docs.slack.dev/ |
| Quickstart | https://docs.slack.dev/quickstart |
| Resources | https://docs.slack.dev/developer-support |
| Slack platform concepts | https://docs.slack.dev/concepts/overview |
| AI in Slack | https://docs.slack.dev/ai/ |
| APIs | https://docs.slack.dev/apis/ |
| App management | https://docs.slack.dev/app-management/ |
| App manifests | https://docs.slack.dev/app-manifests/ |
| Admin resources | https://docs.slack.dev/admins/ |
| Authentication | https://docs.slack.dev/authentication/ |
| Block Kit | https://docs.slack.dev/block-kit/ |
| Enterprise | https://docs.slack.dev/enterprise/ |
| Enterprise Search for apps | https://docs.slack.dev/enterprise-search/ |
| GovSlack | https://docs.slack.dev/govslack |
| Interactivity | https://docs.slack.dev/interactivity/ |
| Messaging | https://docs.slack.dev/messaging/ |
| Slack Marketplace | https://docs.slack.dev/slack-marketplace/ |
| Surfaces | https://docs.slack.dev/surfaces/ |
| Overview | https://docs.slack.dev/surfaces/ |
| App Home | https://docs.slack.dev/surfaces/app-home |
| Canvases | https://docs.slack.dev/surfaces/canvases |
| Lists | https://docs.slack.dev/surfaces/lists |
| Modals | https://docs.slack.dev/surfaces/modals |
| Split view | https://docs.slack.dev/surfaces/split-view |
| Workflows | https://docs.slack.dev/workflows/ |
| Legacy | https://docs.slack.dev/legacy/ |
| 日本語版ページ | https://docs.slack.dev/ja-jp/ |
| https://docs.slack.dev/ |
| Surfaces | https://docs.slack.dev/surfaces/ |
| messages | https://docs.slack.dev/messaging |
| Home tabs | https://docs.slack.dev/surfaces/app-home |
| button | https://docs.slack.dev/reference/block-kit/block-elements/button-element |
| input | https://docs.slack.dev/reference/block-kit/blocks/input-block |
| plain text | https://docs.slack.dev/reference/block-kit/block-elements/plain-text-input-element |
| select from a list of categories | https://docs.slack.dev/reference/block-kit/block-elements/select-menu-element |
| message | https://docs.slack.dev/messaging |
| View in Block Kit Builder | https://api.slack.com/block-kit-builder?blocks=%5B%7B"type"%3A"input"%2C"element"%3A%7B"type"%3A"plain_text_input"%2C"action_id"%3A"sl_input"%2C"placeholder"%3A%7B"type"%3A"plain_text"%2C"text"%3A"Placeholder%20text%20for%20single-line%20input"%7D%7D%2C"label"%3A%7B"type"%3A"plain_text"%2C"text"%3A"Label"%7D%2C"hint"%3A%7B"type"%3A"plain_text"%2C"text"%3A"Hint%20text"%7D%7D%2C%7B"type"%3A"input"%2C"element"%3A%7B"type"%3A"plain_text_input"%2C"action_id"%3A"ml_input"%2C"multiline"%3Atrue%2C"placeholder"%3A%7B"type"%3A"plain_text"%2C"text"%3A"Placeholder%20text%20for%20multi-line%20input"%7D%7D%2C"label"%3A%7B"type"%3A"plain_text"%2C"text"%3A"Label"%7D%2C"hint"%3A%7B"type"%3A"plain_text"%2C"text"%3A"Hint%20text"%7D%7D%5D&mode=modal |
| Block Kit | https://docs.slack.dev/block-kit |
| guide to upgrading dialogs to modals | https://docs.slack.dev/block-kit/upgrading-outmoded-dialogs-to-modals |
| | https://docs.slack.dev/surfaces/modals#lifecycle |
| entry points | https://docs.slack.dev/interactivity |
| interaction payload | https://docs.slack.dev/reference/interaction-payloads |
| trigger_id | https://docs.slack.dev/interactivity/handling-user-interaction#modal_responses |
| interacts | https://docs.slack.dev/interactivity |
| interactive component | https://docs.slack.dev/block-kit#making-things-interactive |
| interaction payload | https://docs.slack.dev/reference/interaction-payloads |
| update the currently visible view A | https://docs.slack.dev/surfaces/modals#updating_views |
| push a new view (view B) on to the modal's view stack | https://docs.slack.dev/surfaces/modals#adding_views |
| input blocks | https://docs.slack.dev/surfaces/modals#gathering_user_input |
| different type of interaction payload | https://docs.slack.dev/surfaces/modals#interactions |
| handles the view submission and responds | https://docs.slack.dev/surfaces/modals#interactions |
| clearing the view stack | https://docs.slack.dev/surfaces/modals#close_all_views |
| Updating a view | https://docs.slack.dev/surfaces/modals#updating_views |
| inputs | https://docs.slack.dev/surfaces/modals#gathering_input |
| Adding a new view. | https://docs.slack.dev/surfaces/modals#adding_views |
| push a new view onto the modal's view stack | https://docs.slack.dev/surfaces/modals#adding_views |
| inputs | https://docs.slack.dev/surfaces/modals#gathering_input |
| Closing a view. | https://docs.slack.dev/surfaces/modals#closing_views |
| inputs | https://docs.slack.dev/surfaces/modals#gathering_input |
| close that specific view | https://docs.slack.dev/surfaces/modals#closing_views |
| all views in the view stack | https://docs.slack.dev/surfaces/modals#close_all_views |
| | https://docs.slack.dev/surfaces/modals#gathering_input |
| Block Kit component | https://docs.slack.dev/block-kit |
| input block | https://docs.slack.dev/reference/block-kit/blocks/input-block |
| plain-text input | https://docs.slack.dev/reference/block-kit/block-elements/plain-text-input-element |
| select menu | https://docs.slack.dev/reference/block-kit/block-elements/select-menu-element |
| multi-select menu | https://docs.slack.dev/reference/block-kit/block-elements/multi-select-menu-element |
| input block reference | https://docs.slack.dev/reference/block-kit/blocks/input-block |
| input blocks | https://docs.slack.dev/reference/block-kit/blocks/input-block |
| submit field when defining your view | https://docs.slack.dev/surfaces/modals#composing_views |
| | https://docs.slack.dev/surfaces/modals#preparing_for_modals |
| Create an app | https://api.slack.com/apps?new_app=1 |
| access token | https://docs.slack.dev/authentication/tokens |
| guide to app distribution | https://docs.slack.dev/app-management/distribution |
| guide to handling user interaction | https://docs.slack.dev/interactivity/handling-user-interaction |
| quickstart guide | https://docs.slack.dev/tools/deno-slack-sdk/guides/getting-started |
| | https://docs.slack.dev/surfaces/modals#composing_views |
| | https://docs.slack.dev/surfaces/modals#defining-view-objects |
| Web API | https://docs.slack.dev/apis/web-api/ |
| views.open | https://docs.slack.dev/reference/methods/views.open |
| views.update | https://docs.slack.dev/reference/methods/views.update |
| views.push | https://docs.slack.dev/reference/methods/views.push |
| | https://docs.slack.dev/surfaces/modals#view-object-fields |
| plain_text text element | https://docs.slack.dev/reference/block-kit/composition-objects/text-object |
| blocks | https://docs.slack.dev/reference/block-kit/blocks |
| plain_text element | https://docs.slack.dev/reference/block-kit/composition-objects/text-object |
| plain_text element | https://docs.slack.dev/reference/block-kit/composition-objects/text-object |
| configuration modals | https://docs.slack.dev/changelog/2023-08-workflow-steps-from-apps-step-back |
| | https://docs.slack.dev/surfaces/modals#example |
| Block Kit | https://docs.slack.dev/block-kit |
| View in Block Kit Builder | https://app.slack.com/block-kit-builder/#%7B%22title%22:%7B%22type%22:%22plain_text%22,%22text%22:%22Modal%20title%22%7D,%22submit%22:%7B%22type%22:%22plain_text%22,%22text%22:%22Submit%22%7D,%22type%22:%22modal%22,%22blocks%22:%5B%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22It's%20Block%20Kit...but%20_in%20a%20modal_%22%7D,%22block_id%22:%22section1%22%7D%5D,%22private_metadata%22:%22Shhhhhhhh%22,%22callback_id%22:%22view_identifier_12%22%7D |
| comprehensive guide to composing layouts with Block Kit | https://docs.slack.dev/block-kit |
| returned in view_submission payloads | https://docs.slack.dev/reference/interaction-payloads/view-interactions-payload#view_submission |
| input blocks | https://docs.slack.dev/reference/block-kit/blocks/input-block |
| | https://docs.slack.dev/surfaces/modals#opening_modals |
| interaction payload | https://docs.slack.dev/interactivity/handling-user-interaction#payloads |
| app's entry points | https://docs.slack.dev/interactivity |
| entry point features | https://docs.slack.dev/interactivity |
| views.open | https://docs.slack.dev/reference/methods/views.open |
| created above | https://docs.slack.dev/surfaces/modals#composing_views |
| receive a response | https://docs.slack.dev/reference/methods/views.open#response |
| views.open | https://docs.slack.dev/reference/methods/views.open#response |
| update the contents of that view | https://docs.slack.dev/surfaces/modals#updating_views |
| | https://docs.slack.dev/surfaces/modals#interactions |
| your modal's initial view was composed | https://docs.slack.dev/surfaces/modals#composing_views |
| interactive component | https://docs.slack.dev/reference/block-kit/block-elements |
| block_actions | https://docs.slack.dev/reference/interaction-payloads/block_actions-payload |
| input | https://docs.slack.dev/reference/block-kit/blocks/input-block |
| view_submission payload | https://docs.slack.dev/reference/interaction-payloads/view-interactions-payload#view_submission |
| view.state.values | https://docs.slack.dev/reference/interaction-payloads/view-interactions-payload#view_submission_fields |
| view_closed | https://docs.slack.dev/reference/interaction-payloads/view-interactions-payload#view_closed |
| views.open | https://docs.slack.dev/reference/methods/views.open |
| views.push | https://docs.slack.dev/reference/methods/views.push |
| multitude of responses | https://docs.slack.dev/interactivity/handling-user-interaction#responses |
| return a required acknowledgment response | https://docs.slack.dev/interactivity/handling-user-interaction#acknowledgment_response |
| send the acknowledgment response | https://docs.slack.dev/interactivity/handling-user-interaction#acknowledgment_response |
| explained below | https://docs.slack.dev/surfaces/modals#modifying |
| acknowledgment response | https://docs.slack.dev/interactivity/handling-user-interaction#acknowledgment_response |
| below | https://docs.slack.dev/surfaces/modals#modifying |
| | https://docs.slack.dev/surfaces/modals#updating_views |
| via response_action | https://docs.slack.dev/surfaces/modals#updating_response |
| via API | https://docs.slack.dev/surfaces/modals#updating_apis |
| | https://docs.slack.dev/surfaces/modals#updating_response |
| view_submission | https://docs.slack.dev/surfaces/modals#handling_submissions |
| view | https://docs.slack.dev/surfaces/modals#composing_views |
| | https://docs.slack.dev/surfaces/modals#updating_apis |
| included in the success response | https://docs.slack.dev/surfaces/modals#success_response |
| earlier | https://docs.slack.dev/surfaces/modals#opening_modals |
| views.update | https://docs.slack.dev/reference/methods/views.update |
| | https://docs.slack.dev/surfaces/modals#handling_race_conditions |
| block_actions | https://docs.slack.dev/reference/interaction-payloads/block_actions-payload |
| views.update | https://docs.slack.dev/reference/methods/views.update |
| | https://docs.slack.dev/surfaces/modals#adding_views |
| via response_action | https://docs.slack.dev/surfaces/modals#pushing_response |
| via API | https://docs.slack.dev/surfaces/modals#pushing_api |
| | https://docs.slack.dev/surfaces/modals#add_response |
| view_submission | https://docs.slack.dev/surfaces/modals#handling_submissions |
| newly composed view | https://docs.slack.dev/surfaces/modals#composing_views |
| external_id | https://docs.slack.dev/reference/methods/views.update#arg_external_id |
| views.update | https://docs.slack.dev/reference/methods/views.update |
| | https://docs.slack.dev/surfaces/modals#add_api |
| views.push | https://docs.slack.dev/reference/methods/views.push |
| View in Block Kit Builder | https://app.slack.com/block-kit-builder/#%7B%22title%22:%7B%22type%22:%22plain_text%22,%22text%22:%22Modal%20title%22%7D,%22submit%22:%7B%22type%22:%22plain_text%22,%22text%22:%22Save%22%7D,%22type%22:%22modal%22,%22blocks%22:%5B%7B%22type%22:%22input%22,%22block_id%22:%22edit-task-title%22,%22label%22:%7B%22type%22:%22plain_text%22,%22text%22:%22Task%20title%22%7D,%22element%22:%7B%22type%22:%22plain_text_input%22,%22action_id%22:%22task-title-value%22,%22initial_value%22:%22Block%20Kit%20documentation%22%7D%7D,%7B%22type%22:%22input%22,%22block_id%22:%22edit-ticket-desc%22,%22label%22:%7B%22type%22:%22plain_text%22,%22text%22:%22Ticket%20description%22%7D,%22element%22:%7B%22type%22:%22plain_text_input%22,%22multiline%22:true,%22action_id%22:%22ticket-desc-value%22,%22initial_value%22:%22Update%20Block%20Kit%20documentation%20to%20include%20Block%20Kit%20in%20new%20surface%20areas%20(like%20modals).%22%7D%7D%5D,%22close%22:%7B%22type%22:%22plain_text%22,%22text%22:%22Cancel%22%7D,%22private_metadata%22:%22Shhhhhhhh%22,%22callback_id%22:%22view_identifier_12%22%7D |
| views.push | https://docs.slack.dev/reference/methods/views.push |
| | https://docs.slack.dev/surfaces/modals#closing_views |
| view_submission | https://docs.slack.dev/surfaces/modals#handling_submissions |
| Close the current view | https://docs.slack.dev/surfaces/modals#close_current_view |
| Close all view | https://docs.slack.dev/surfaces/modals#close_all_views |
| can optionally receive a notification if that happens | https://docs.slack.dev/surfaces/modals#modal_cancellations |
| | https://docs.slack.dev/surfaces/modals#close_current_view |
| acknowledgment response | https://docs.slack.dev/interactivity/handling-user-interaction#acknowledgment_response |
| | https://docs.slack.dev/surfaces/modals#close_all_views |
| | https://docs.slack.dev/surfaces/modals#displaying_errors |
| inputs | https://docs.slack.dev/surfaces/modals#gathering_input |
| composing views | https://docs.slack.dev/surfaces/modals#composing_views |
| | https://docs.slack.dev/surfaces/modals#private_metadata |
| opens a modal with an initial view | https://docs.slack.dev/surfaces/modals#opening_modals |
| updates an existing view | https://docs.slack.dev/surfaces/modals#updating_views |
| Bolt for JavaScript | https://docs.slack.dev/tools/bolt-js |
| Bolt for Python | https://docs.slack.dev/tools/bolt-python |
| | https://docs.slack.dev/surfaces/modals#modal_response_url |
| Web API | https://docs.slack.dev/messaging/sending-and-scheduling-messages#publishing |
| use a webhook | https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks |
| shortcuts | https://docs.slack.dev/interactivity/implementing-shortcuts |
| Compose a modal view | https://docs.slack.dev/surfaces/modals#composing_views |
| conversations_select | https://docs.slack.dev/reference/block-kit/block-elements/select-menu-element#conversations_select |
| channels_select | https://docs.slack.dev/reference/block-kit/block-elements/select-menu-element#channels_select |
| input blocks | https://docs.slack.dev/reference/block-kit/blocks/input-block |
| default_to_current_conversation | https://docs.slack.dev/reference/block-kit/block-elements/select-menu-element#conversations_select |
| view_submission | https://docs.slack.dev/surfaces/modals#handling_submissions |
| our guide to handling interactions | https://docs.slack.dev/interactivity/handling-user-interaction#message_responses |
| | https://docs.slack.dev/surfaces/modals#designing |
| invoke a modal | https://docs.slack.dev/surfaces/modals |
| Handle these cancellations | https://docs.slack.dev/surfaces/modals#modal_cancellations |
| | https://docs.slack.dev/surfaces/modals#keep-modals-glanceable |
| | https://docs.slack.dev/surfaces/modals#indicate-outcome |
| | https://docs.slack.dev/surfaces/modals#show-progress |
| | https://docs.slack.dev/surfaces/modals#dont-prompt-for-login-information |
| | https://docs.slack.dev/surfaces/modals#use-cases |
| PreviousLists | https://docs.slack.dev/surfaces/lists |
| NextSplit view | https://docs.slack.dev/surfaces/split-view |
| Understanding the lifecycle of a modal | https://docs.slack.dev/surfaces/modals#lifecycle |
| Gathering user input | https://docs.slack.dev/surfaces/modals#gathering_input |
| Preparing your app | https://docs.slack.dev/surfaces/modals#preparing_for_modals |
| Composing modal views | https://docs.slack.dev/surfaces/modals#composing_views |
| Defining modal view objects | https://docs.slack.dev/surfaces/modals#defining-view-objects |
| Opening modals | https://docs.slack.dev/surfaces/modals#opening_modals |
| Handling and responding to interactions | https://docs.slack.dev/surfaces/modals#interactions |
| Updating modal views | https://docs.slack.dev/surfaces/modals#updating_views |
| Update a view via response_action | https://docs.slack.dev/surfaces/modals#updating_response |
| Update a view via API | https://docs.slack.dev/surfaces/modals#updating_apis |
| Adding a new view | https://docs.slack.dev/surfaces/modals#adding_views |
| Add a new view via response_action | https://docs.slack.dev/surfaces/modals#add_response |
| Add a new view via API | https://docs.slack.dev/surfaces/modals#add_api |
| Closing views | https://docs.slack.dev/surfaces/modals#closing_views |
| Close the current view | https://docs.slack.dev/surfaces/modals#close_current_view |
| Close all views | https://docs.slack.dev/surfaces/modals#close_all_views |
| Display errors in views | https://docs.slack.dev/surfaces/modals#displaying_errors |
| Carry data between views | https://docs.slack.dev/surfaces/modals#private_metadata |
| Publishing messages after modals are submitted | https://docs.slack.dev/surfaces/modals#modal_response_url |
| Designing modals | https://docs.slack.dev/surfaces/modals#designing |
| Keep modals glanceable | https://docs.slack.dev/surfaces/modals#keep-modals-glanceable |
| Indicate outcome | https://docs.slack.dev/surfaces/modals#indicate-outcome |
| Show progress | https://docs.slack.dev/surfaces/modals#show-progress |
| Don’t prompt for login information | https://docs.slack.dev/surfaces/modals#dont-prompt-for-login-information |
| https://docs.slack.dev/ |
| Slack CLI | https://docs.slack.dev/tools/slack-cli/ |
| Bolt frameworks | https://docs.slack.dev/tools/#bolt |
| Slack SDKs | https://docs.slack.dev/tools/#sdks |
| Block Kit Builder | https://app.slack.com/block-kit-builder/ |
| Developer program | https://api.slack.com/developer-program |
| Code samples & tutorials | https://docs.slack.dev/samples/ |
| All tools | https://docs.slack.dev/tools/ |
| Learning paths | https://slack.dev/learning-paths/ |
| Workshops | https://slack.dev/workshops |
| Slack certifications | https://trailheadacademy.salesforce.com/all-offerings#f-assetType=Certification&f-products=Slack&f-siteLanguage=en_US |
| Trailhead | https://trailhead.salesforce.com/ |
| Resource library | https://slack.dev/resource-library |
| All learning resources | https://slack.dev/learn |
| Slack community | https://slack.dev/community |
| Slack events | https://slack.dev/events |
| Docs | https://docs.slack.dev/ |
| Blog | https://slack.dev/blog |
| Slack marketplace | https://slack.com/marketplace |
| Developer newsletter | https://slack.dev/newsletter |
| Your apps | https://api.slack.com/apps |
| Status | https://slack-status.com/ |
| Privacy | https://slack.com/trust/privacy/privacy-policy |
| Terms | https://slack.com/terms-of-service/api |
| Cookie Preferences | https://docs.slack.dev/surfaces/modals |
| Support | https://docs.slack.dev/developer-support |
| Changelog | https://docs.slack.dev/changelog |
| Your Privacy Choices | https://www.salesforce.com/form/other/privacy-request/ |
|
| https://www.linkedin.com/company/tiny-spec-inc/ |
|
| https://bsky.app/profile/slack.dev |
|
| https://www.youtube.com/channel/UCY3YECgeBcLCzIrFLP4gblw |