We cannot simply remove the scope for all merchants and require them to manually approve it again, as this could disrupt existing functionality.
Is there a supported migration path that would allow us to:
Preserve the already approved scope for existing installations
Make the scope optional for new installations
Keep the email feature working without interruption for existing merchants
For example, could this be handled through an access-token migration, token rotation, or selective token expiration, rather than requiring every existing merchant to approve the scope again?
Any guidance on the recommended migration approach would be appreciated!
You should be able to move the scope from scopes to optional_scopes in shopify.app.toml, then deploy the change without any issue. Existing stores retain the scope as an approved optional scope, without a new prompt or revocation. Your app doesn’t need to request it again for those installations. New installations won’t receive the scope until your app requests it dynamically and the merchant approves it.
There’s no separate access-token migration step in the documented flow. and you can find the migration details here: Manage access scopes