Feature request: App-defined staff permissions for custom apps and POS extensions

I’d love to see Shopify support app-defined staff permissions that merchants can assign through Shopify roles.

I’ve run into this while building an approval workflow around discounts for a large merchant.

The app can read broad Shopify staff permissions today, but the actual workflow needs much more specific authorization, for example:

  • create/edit discounts
  • approve discounts
  • publish / activate discounts

Today, the options are generally to either:

  • reuse a broad native Shopify permission as a proxy for the app-specific role, or
  • build a separate RBAC system inside the app

Both work, but they create some awkward edge cases.

For example, a merchant may want staff to manage discounts only through the custom app so the approval workflow can always be enforced. If they remove access to the native Discounts admin, that can also remove the Shopify permission the app was using as its signal for whether that staff member is allowed to approve.

It would be useful if apps could declare their own permissions, for example:

discounts.create

discounts.approve

discounts.publish

customer_email.send

Those permissions could then be assigned to staff through Shopify roles / custom roles, alongside Shopify’s native permissions.

The app could read the current staff member’s app-specific permissions at runtime and use them for authorization.

I think the same model could be useful for POS extensions as well. For example, extension visibility or specific actions could depend on app-defined staff permissions.

The general idea would be:

Shopify owns staff identity, roles and permission assignment. Apps define the domain-specific permissions that matter to their workflow.

This would avoid each app having to create a second staff-role system beside Shopify and would make more complex enterprise approval workflows much easier to manage.

Curious whether anything like this is being considered, or how others are handling granular app-specific permissions today.