{"id":8413,"date":"2026-03-25T09:13:16","date_gmt":"2026-03-25T16:13:16","guid":{"rendered":"https:\/\/slack.dev\/?p=8413"},"modified":"2026-04-14T12:15:46","modified_gmt":"2026-04-14T19:15:46","slug":"introducing-optional-scopes-for-slack-apps","status":"publish","type":"post","link":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/","title":{"rendered":"Give users the power to choose: introducing optional scopes for Slack apps"},"content":{"rendered":"\n<p><span style=\"font-weight: 400;\">When someone installs your Slack app, they&#8217;re making a trust decision. They&#8217;re saying: &#8220;Yes, I want this app, and I&#8217;m okay with it accessing these parts of my workspace.&#8221; But what happens when your app asks for permissions they&#8217;re not comfortable with? Too often, they just&#8230; don&#8217;t install it. And you never even get a chance to show them the value.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">That&#8217;s the problem optional scopes solve.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">The permission problem<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">OAuth scopes are how your Slack app declares what it needs access to. Historically, it&#8217;s been all or nothing. Users either accept every scope your app requests, or they walk away. For apps with a broad feature set, that can mean asking for permissions that only power a subset of features, which, honestly, can feel like a big ask for someone who just wants the basics.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">The result? Higher installation abandonment. Lower trust. Fewer users.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Enter optional scopes<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">Optional scopes let you designate certain permissions as optional during app configuration. When a user installs your app, they see which scopes are required (non-negotiable for the app to function) and which are optional (needed only for specific features they may or may not want).<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">Users get to make an informed choice. Your app gets installed more often. Everyone wins.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Setting it up<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">There are two ways to mark scopes as optional:<\/span><\/p>\n\n\n\n<p><b>Via the App Management Page<\/b><b><br><\/b><span style=\"font-weight: 400;\">Head to <\/span><a href=\"https:\/\/api.slack.com\/apps\"><span style=\"font-weight: 400;\">Apps Settings<\/span><\/a><span style=\"font-weight: 400;\"> page and open your app&#8217;s OAuth &amp; Permissions settings. You&#8217;ll see a checkbox next to each scope. Simply uncheck the ones you want to make optional. That&#8217;s it.<\/span><\/p>\n\n\n\n<p><b>Via App Manifest<\/b><b><br><\/b><span style=\"font-weight: 400;\">If you manage your app configuration as code (and if you\u2019re not yet\u2014you probably should give it a go), add optional scopes to the new <code class=\"\" data-line=\"\">bot_optional<\/code><\/span><span style=\"font-weight: 400;\"> or <code class=\"\" data-line=\"\">user_optional<\/code><\/span><span style=\"font-weight: 400;\">&nbsp;fields in your <\/span><span style=\"font-weight: 400;\">oauth_config<\/span><span style=\"font-weight: 400;\">:<\/span><\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-json\" data-line=\"\">&quot;oauth_config&quot;: {\n\t&quot;scopes&quot;: {\n\t\t&quot;bot&quot;: [\n\t\t\t&quot;chat:write&quot;,\n\t\t\t&quot;commands&quot;,\n\t\t\t&quot;reactions:write&quot;\n\t\t],\n\t\t&quot;bot_optional&quot;: [\n\t\t\t&quot;reactions:write&quot;\n\t\t],\n\t\t&quot;user&quot;: [\n\t\t\t&quot;channels:history&quot;,\n\t\t\t&quot;reactions:read&quot;\n\t\t],\n\t\t&quot;user_optional&quot;: [\n\t\t\t&quot;reactions:read&quot;\n\t\t]\n\t}\n}<\/code><\/pre>\n\n\n\n<p><span style=\"font-weight: 400;\">Optional scopes must be a subset of your declared bot or user scopes respectively. Think of the required scopes as the full list, and optional scopes as the ones users can opt out of.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Building an app that handles it gracefully<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">Here&#8217;s the important part: once you introduce optional scopes, your app needs to be ready for users who don&#8217;t grant them. You\u2019re giving users a choice, your app needs to respect it. An app that crashes or throws errors when an optional permission is missing defeats the whole purpose.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">If you&#8217;re building with the <\/span><a href=\"https:\/\/slack.dev\/context-aware-agents-slack-mcp-server-real-time-search\/\"><span style=\"font-weight: 400;\">Slack MCP Server<\/span><\/a><span style=\"font-weight: 400;\">, some of this comes built in. MCP only exposes the tools a token has permission to use, which means your agent won\u2019t attempt actions it doesn\u2019t have access to in the first place. That reduces the need for manual scope handling in many cases.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">There are a few patterns you\u2019ll want to build into your app:<\/span><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><b> Graceful degradation<\/b><b><br><\/b><span style=\"font-weight: 400;\">When a user hasn&#8217;t granted an optional scope, your API calls may return a <\/span><span style=\"font-weight: 400;\">missing_scope<\/span><span style=\"font-weight: 400;\"> error. Catch these errors explicitly and respond gracefully. Maybe show a prompt explaining what the feature requires and how to enable it, rather than a broken experience.<\/span><\/li>\n\n\n\n<li><b> Token scope storage<\/b><b><br><\/b><span style=\"font-weight: 400;\">When a user completes the OAuth flow, the <\/span><span style=\"font-weight: 400;\">oauth.v2.access<\/span><span style=\"font-weight: 400;\"> response includes the list of scopes that were actually granted. Store these. They&#8217;re your source of truth for what that user has authorized.<\/span><\/li>\n\n\n\n<li><b> Feature gating<\/b><b><br><\/b><span style=\"font-weight: 400;\">Before rendering a feature that requires an optional scope, check whether that scope is in the stored grant list. If it&#8217;s not there, hide the feature or show an upsell prompt \u2014 don&#8217;t let users hit a wall mid-workflow.<\/span><\/li>\n<\/ol>\n\n\n\n<p><span style=\"font-weight: 400;\">Think of optional scopes as progressive enhancement for your app. The core works for everyone; richer features unlock for users who opt in.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">A note for workspace admins<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">If your app is installed in organizations with app approval workflows, workspace admins have an important role here too. When approving an app, admins now control the superset of optional scopes their users can choose from.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">Required scopes are auto-approved as always. Optional scopes show up as checkboxes. Admins decide which ones are on the table, and users can choose from within that set. This gives organizations fine-grained governance without blocking productivity which, as you can imagine, is a big deal for larger teams.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">Admins can manage approvals from the App Management page or directly from the SlackBot DM request.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">What users see<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">From the end user&#8217;s perspective, optional scopes make the install experience feel more respectful. Instead of a take-it-or-leave-it list of permissions, users see a clear distinction between what the app needs and what it would like.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">They&#8217;re in control.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">As a developer, your job is to honor that choice. If a user opts out of an optional scope today, make it easy for them to enable it later if they change their mind. But don&#8217;t make opting out feel like a penalty.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Get started<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">Optional scopes are available now. Here&#8217;s what to do:<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><span style=\"font-weight: 400;\">Review your app&#8217;s scopes and identify which ones are truly optional<\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\">Mark them optional via the App Management page or your App Manifest<\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\">Update your app to store granted scopes from <code class=\"\" data-line=\"\">oauth.v2.access<\/code><\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\">Add <code class=\"\" data-line=\"\">missing_scope<\/code><\/span><span style=\"font-weight: 400;\">&nbsp;error handling and feature gating throughout your code<\/span><\/li>\n<\/ul>\n\n\n\n<p><span style=\"font-weight: 400;\">For the full details, check out:<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/docs.slack.dev\/authentication\/installing-with-oauth\"><span style=\"font-weight: 400;\">Installing with OAuth<\/span><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.slack.dev\/reference\/app-manifest#fields\"><span style=\"font-weight: 400;\">App Manifest reference<\/span><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.slack.dev\/security#governance\"><span style=\"font-weight: 400;\">Security &amp; app governance<\/span><\/a><\/li>\n<\/ul>\n\n\n\n<p><span style=\"font-weight: 400;\">Building apps users trust starts with asking only for what you need, and letting users decide the rest. Optional scopes make that possible.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">Go build something great!<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When someone installs your Slack app, they&#8217;re making a trust decision. They&#8217;re saying: &#8220;Yes, I want this app, and I&#8217;m okay with it accessing these parts of my workspace.&#8221;&#8230;<\/p>\n","protected":false},"author":3,"featured_media":8414,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[{"name":"Uncategorized","slug":"uncategorized","link":"https:\/\/slack.dev\/category\/uncategorized\/"}],"tags":[],"class_list":["post-8413","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"featured_image":{"full":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/prod\/optional_scopes_slack_app.png","large":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/prod\/optional_scopes_slack_app.png?w=1024","medium":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/prod\/optional_scopes_slack_app.png?w=300","thumbnail":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/prod\/optional_scopes_slack_app.png?w=150&h=150&crop=1","alt":""},"authorship":[{"name":"Maria Jose Hernandez","title":"Senior Developer Advocate @ Slack","avatar":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/prod\/66897454d0886d3f2afed4b352fb4f64413d2d6698313ed815997dce79a0778b-1.png"}],"reading_time":5,"acf":{"authorship":{"author_type":"wordpress","wordpress_authors":[5088],"guest_authors":""}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Give users the power to choose: introducing optional scopes for Slack apps | Slack Developers<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Give users the power to choose: introducing optional scopes for Slack apps | Slack Developers\" \/>\n<meta property=\"og:description\" content=\"When someone installs your Slack app, they&#8217;re making a trust decision. They&#8217;re saying: &#8220;Yes, I want this app, and I&#8217;m okay with it accessing these parts of my workspace.&#8221;...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/\" \/>\n<meta property=\"og:site_name\" content=\"Slack Developers\" \/>\n<meta property=\"og:image\" content=\"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/prod\/optional_scopes_slack_app.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1998\" \/>\n\t<meta property=\"og:image:height\" content=\"1132\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Maria Jose Hernandez | Sr Manager Developer Advocacy @ Slack\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SlackAPI\" \/>\n<meta name=\"twitter:site\" content=\"@SlackAPI\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Maria Jose Hernandez | Sr Manager Developer Advocacy @ Slack\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/slack.dev\\\/introducing-optional-scopes-for-slack-apps\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/slack.dev\\\/introducing-optional-scopes-for-slack-apps\\\/\"},\"author\":{\"name\":\"Maria Jose Hernandez | Sr Manager Developer Advocacy @ Slack\",\"@id\":\"https:\\\/\\\/slack.dev\\\/#\\\/schema\\\/person\\\/bfbf7e29321f24608fd814e4bca2726b\"},\"headline\":\"Give users the power to choose: introducing optional scopes for Slack apps\",\"datePublished\":\"2026-03-25T16:13:16+00:00\",\"dateModified\":\"2026-04-14T19:15:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/slack.dev\\\/introducing-optional-scopes-for-slack-apps\\\/\"},\"wordCount\":916,\"publisher\":{\"@id\":\"https:\\\/\\\/slack.dev\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/slack.dev\\\/introducing-optional-scopes-for-slack-apps\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/d34u8crftukxnk.cloudfront.net\\\/slack.dev\\\/prod\\\/optional_scopes_slack_app.png\",\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/slack.dev\\\/introducing-optional-scopes-for-slack-apps\\\/\",\"url\":\"https:\\\/\\\/slack.dev\\\/introducing-optional-scopes-for-slack-apps\\\/\",\"name\":\"Give users the power to choose: introducing optional scopes for Slack apps | Slack Developers\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/slack.dev\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/slack.dev\\\/introducing-optional-scopes-for-slack-apps\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/slack.dev\\\/introducing-optional-scopes-for-slack-apps\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/d34u8crftukxnk.cloudfront.net\\\/slack.dev\\\/prod\\\/optional_scopes_slack_app.png\",\"datePublished\":\"2026-03-25T16:13:16+00:00\",\"dateModified\":\"2026-04-14T19:15:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/slack.dev\\\/introducing-optional-scopes-for-slack-apps\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/slack.dev\\\/introducing-optional-scopes-for-slack-apps\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/slack.dev\\\/introducing-optional-scopes-for-slack-apps\\\/#primaryimage\",\"url\":\"https:\\\/\\\/d34u8crftukxnk.cloudfront.net\\\/slack.dev\\\/prod\\\/optional_scopes_slack_app.png\",\"contentUrl\":\"https:\\\/\\\/d34u8crftukxnk.cloudfront.net\\\/slack.dev\\\/prod\\\/optional_scopes_slack_app.png\",\"width\":1998,\"height\":1132},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/slack.dev\\\/introducing-optional-scopes-for-slack-apps\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/slack.dev\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Give users the power to choose: introducing optional scopes for Slack apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/slack.dev\\\/#website\",\"url\":\"https:\\\/\\\/slack.dev\\\/\",\"name\":\"Slack Developers\",\"description\":\"Your home for all you need in order to build with Slack, the work OS.\\u2028\",\"publisher\":{\"@id\":\"https:\\\/\\\/slack.dev\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/slack.dev\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/slack.dev\\\/#organization\",\"name\":\"Slack Developers\",\"url\":\"https:\\\/\\\/slack.dev\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/slack.dev\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/d34u8crftukxnk.cloudfront.net\\\/slack.dev\\\/local\\\/Logo-3.svg\",\"contentUrl\":\"https:\\\/\\\/d34u8crftukxnk.cloudfront.net\\\/slack.dev\\\/local\\\/Logo-3.svg\",\"width\":176,\"height\":48,\"caption\":\"Slack Developers\"},\"image\":{\"@id\":\"https:\\\/\\\/slack.dev\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/SlackAPI\",\"https:\\\/\\\/bsky.app\\\/profile\\\/slack.dev\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/tiny-spec-inc\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/slack.dev\\\/#\\\/schema\\\/person\\\/bfbf7e29321f24608fd814e4bca2726b\",\"name\":\"Maria Jose Hernandez | Sr Manager Developer Advocacy @ Slack\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/66897454d0886d3f2afed4b352fb4f64413d2d6698313ed815997dce79a0778b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/66897454d0886d3f2afed4b352fb4f64413d2d6698313ed815997dce79a0778b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/66897454d0886d3f2afed4b352fb4f64413d2d6698313ed815997dce79a0778b?s=96&d=mm&r=g\",\"caption\":\"Maria Jose Hernandez | Sr Manager Developer Advocacy @ Slack\"},\"url\":\"https:\\\/\\\/slack.dev\\\/author\\\/mjslack-2-2-2-2-2-2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Give users the power to choose: introducing optional scopes for Slack apps | Slack Developers","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/","og_locale":"en_US","og_type":"article","og_title":"Give users the power to choose: introducing optional scopes for Slack apps | Slack Developers","og_description":"When someone installs your Slack app, they&#8217;re making a trust decision. They&#8217;re saying: &#8220;Yes, I want this app, and I&#8217;m okay with it accessing these parts of my workspace.&#8221;...","og_url":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/","og_site_name":"Slack Developers","og_image":[{"width":1998,"height":1132,"url":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/prod\/optional_scopes_slack_app.png","type":"image\/png"}],"author":"Maria Jose Hernandez | Sr Manager Developer Advocacy @ Slack","twitter_card":"summary_large_image","twitter_creator":"@SlackAPI","twitter_site":"@SlackAPI","twitter_misc":{"Written by":"Maria Jose Hernandez | Sr Manager Developer Advocacy @ Slack","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/#article","isPartOf":{"@id":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/"},"author":{"name":"Maria Jose Hernandez | Sr Manager Developer Advocacy @ Slack","@id":"https:\/\/slack.dev\/#\/schema\/person\/bfbf7e29321f24608fd814e4bca2726b"},"headline":"Give users the power to choose: introducing optional scopes for Slack apps","datePublished":"2026-03-25T16:13:16+00:00","dateModified":"2026-04-14T19:15:46+00:00","mainEntityOfPage":{"@id":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/"},"wordCount":916,"publisher":{"@id":"https:\/\/slack.dev\/#organization"},"image":{"@id":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/prod\/optional_scopes_slack_app.png","inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/","url":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/","name":"Give users the power to choose: introducing optional scopes for Slack apps | Slack Developers","isPartOf":{"@id":"https:\/\/slack.dev\/#website"},"primaryImageOfPage":{"@id":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/#primaryimage"},"image":{"@id":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/prod\/optional_scopes_slack_app.png","datePublished":"2026-03-25T16:13:16+00:00","dateModified":"2026-04-14T19:15:46+00:00","breadcrumb":{"@id":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/#primaryimage","url":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/prod\/optional_scopes_slack_app.png","contentUrl":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/prod\/optional_scopes_slack_app.png","width":1998,"height":1132},{"@type":"BreadcrumbList","@id":"https:\/\/slack.dev\/introducing-optional-scopes-for-slack-apps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/slack.dev\/"},{"@type":"ListItem","position":2,"name":"Give users the power to choose: introducing optional scopes for Slack apps"}]},{"@type":"WebSite","@id":"https:\/\/slack.dev\/#website","url":"https:\/\/slack.dev\/","name":"Slack Developers","description":"Your home for all you need in order to build with Slack, the work OS.\u2028","publisher":{"@id":"https:\/\/slack.dev\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/slack.dev\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/slack.dev\/#organization","name":"Slack Developers","url":"https:\/\/slack.dev\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/slack.dev\/#\/schema\/logo\/image\/","url":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/local\/Logo-3.svg","contentUrl":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/local\/Logo-3.svg","width":176,"height":48,"caption":"Slack Developers"},"image":{"@id":"https:\/\/slack.dev\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/SlackAPI","https:\/\/bsky.app\/profile\/slack.dev","https:\/\/www.linkedin.com\/company\/tiny-spec-inc\/"]},{"@type":"Person","@id":"https:\/\/slack.dev\/#\/schema\/person\/bfbf7e29321f24608fd814e4bca2726b","name":"Maria Jose Hernandez | Sr Manager Developer Advocacy @ Slack","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/66897454d0886d3f2afed4b352fb4f64413d2d6698313ed815997dce79a0778b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/66897454d0886d3f2afed4b352fb4f64413d2d6698313ed815997dce79a0778b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/66897454d0886d3f2afed4b352fb4f64413d2d6698313ed815997dce79a0778b?s=96&d=mm&r=g","caption":"Maria Jose Hernandez | Sr Manager Developer Advocacy @ Slack"},"url":"https:\/\/slack.dev\/author\/mjslack-2-2-2-2-2-2\/"}]}},"jetpack_featured_media_url":"https:\/\/d34u8crftukxnk.cloudfront.net\/slack.dev\/prod\/optional_scopes_slack_app.png","_links":{"self":[{"href":"https:\/\/slack.dev\/wp-json\/wp\/v2\/posts\/8413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/slack.dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/slack.dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/slack.dev\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/slack.dev\/wp-json\/wp\/v2\/comments?post=8413"}],"version-history":[{"count":7,"href":"https:\/\/slack.dev\/wp-json\/wp\/v2\/posts\/8413\/revisions"}],"predecessor-version":[{"id":9061,"href":"https:\/\/slack.dev\/wp-json\/wp\/v2\/posts\/8413\/revisions\/9061"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/slack.dev\/wp-json\/wp\/v2\/media\/8414"}],"wp:attachment":[{"href":"https:\/\/slack.dev\/wp-json\/wp\/v2\/media?parent=8413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/slack.dev\/wp-json\/wp\/v2\/categories?post=8413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/slack.dev\/wp-json\/wp\/v2\/tags?post=8413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}