{"id":2682,"date":"2026-03-11T09:31:38","date_gmt":"2026-03-11T10:31:38","guid":{"rendered":"http:\/\/gogetmuscle.com\/?p=2682"},"modified":"2026-03-11T17:40:07","modified_gmt":"2026-03-11T17:40:07","slug":"unexpected-permission-requirements-when-connecting-an-external-app-oauth-scopes-mismatch","status":"publish","type":"post","link":"http:\/\/gogetmuscle.com\/index.php\/2026\/03\/11\/unexpected-permission-requirements-when-connecting-an-external-app-oauth-scopes-mismatch\/","title":{"rendered":"Unexpected permission requirements when connecting an external app (OAuth scopes mismatch)"},"content":{"rendered":"
Hello,<\/P>
I am currently facing an issue when trying to connect an external application to HubSpot.<\/P>
\u00a0<\/P>
The application only requests the following OAuth scopes in the installation URL:<\/P>
crm.objects.owners.read
crm.schemas.companies.write
crm.schemas.companies.read
crm.schemas.contacts.write
crm.schemas.contacts.read
crm.objects.contacts.write
crm.objects.contacts.read
crm.objects.companies.write
crm.objects.companies.read<\/P>
\u00a0<\/P>
However, during the authorization process, HubSpot displays a much broader set of required permissions, including:<\/P>
App Marketplace access<\/P><\/LI>
Workflows > Delete<\/P><\/LI>
Workflows > Edit<\/P><\/LI>
Workflows > Enroll<\/P><\/LI>
Workflows > Publish<\/P><\/LI>
Account Access<\/P><\/LI>
Marketing Access<\/P><\/LI>
Sales Professional<\/P><\/LI>
Add and edit teams<\/P><\/LI>
Segments > Edit<\/P><\/LI>
Partner Admin<\/P><\/LI>
Edit property settings<\/P><\/LI><\/UL>
\u00a0<\/P>
These permissions appear unrelated to the scopes defined by the application and are significantly broader than expected.<\/P>
\u00a0<\/P>
Because of this, users are prompted to grant permissions that the application does not actually request or require.<\/P>
\u00a0<\/P>
Additionally, I have noticed that sometimes HubSpot asks for scopes that are supposed to be conditional scopes<\/STRONG><\/SPAN> for the installed application. From my understanding, these scopes should only be requested if certain features are used or enabled, but they still appear during the authorization process.<\/P> \u00a0<\/P> My questions are:<\/STRONG><\/P> Why are these additional permissions being displayed during the authorization process when they are not included in the requested OAuth scopes?<\/P><\/LI> Could this behavior be related to account-level permissions, app configuration, or HubSpot portal settings?<\/P><\/LI> Why are scopes that are supposed to be conditional still being requested during installation?<\/P><\/LI> Is there a way to ensure that only the scopes explicitly requested by the application are shown to the user?<\/P><\/LI><\/OL> Any clarification would be greatly appreciated.<\/P> \u00a0<\/P> Thank you for your help.<\/P> Hello,I am currently facing an issue when trying to connect an external application to HubSpot.\u00a0The application only requests the following OAuth scopes in the installation URL:crm.objects.owners.readcrm.schemas.companies.writecrm.schemas.companies.readcrm.schemas.contacts.writecrm.schemas.contacts.readcrm.objects.contacts.writecrm.objects.contacts.readcrm.objects.companies.writecrm.objects.companies.read\u00a0However, during the authorization process, HubSpot displays a much broader set of required permissions, including:App Marketplace accessWorkflows > DeleteWorkflows > EditWorkflows > EnrollWorkflows > PublishAccount AccessMarketing AccessSales ProfessionalAdd and edit […]<\/p>\n","protected":false},"author":1,"featured_media":2684,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[14],"tags":[],"_links":{"self":[{"href":"http:\/\/gogetmuscle.com\/index.php\/wp-json\/wp\/v2\/posts\/2682"}],"collection":[{"href":"http:\/\/gogetmuscle.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/gogetmuscle.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/gogetmuscle.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/gogetmuscle.com\/index.php\/wp-json\/wp\/v2\/comments?post=2682"}],"version-history":[{"count":3,"href":"http:\/\/gogetmuscle.com\/index.php\/wp-json\/wp\/v2\/posts\/2682\/revisions"}],"predecessor-version":[{"id":2688,"href":"http:\/\/gogetmuscle.com\/index.php\/wp-json\/wp\/v2\/posts\/2682\/revisions\/2688"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/gogetmuscle.com\/index.php\/wp-json\/wp\/v2\/media\/2684"}],"wp:attachment":[{"href":"http:\/\/gogetmuscle.com\/index.php\/wp-json\/wp\/v2\/media?parent=2682"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/gogetmuscle.com\/index.php\/wp-json\/wp\/v2\/categories?post=2682"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/gogetmuscle.com\/index.php\/wp-json\/wp\/v2\/tags?post=2682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}<\/span>
<\/span>
<\/span><\/P><\/p>\n","protected":false},"excerpt":{"rendered":"