Hi Shopify team,
I’m building a public app that uses an app proxy configured via shopify.app.toml, and I’d like to confirm the officially supported behavior around optional scopes and proxy configuration.
From the docs:
- About app proxies and dynamic data states that “configuring an app proxy requires the
write_app_proxyaccess scope.” - Manage access scopes describes how to use
optional_scopesand dynamically request additional scopes after the initial installation.
My intended setup is:
[access_scopes]
# Baseline permissions for core functionality
scopes = "whatever"
# App proxy is optional, used only for the storefront feature
optional_scopes = "write_app_proxy"
[app_proxy]
url = "/storefront-portal"
prefix = "apps"
subpath = "portal"
This is an existing app that doesn’t currently use app_proxy. The feature would only be used after the merchant completes a specific onboarding on the Dashboard, so the optional nature of the scope would be appropriate..
Question:
For a shop that has already installed my app without write_app_proxy:
- Would the
[app_proxy]entry even be accepted if we don’t havewrite_app_proxyamong the regularscopes? - If I later request
write_app_proxyas an optional scope and the merchant approves it,
- does Shopify automatically apply the
[app_proxy]configuration fromshopify.app.tomlfor that existing installation? - Or, is there an additional step (either via the Partner Dashboard, Admin UI, or an API) that I must perform to ensure the app proxy is actually configured for that shop once the scope is granted?
- More generally, is there any documented guarantee or contract about how
[app_proxy]inshopify.app.tomlis applied to:
- New installs (when
write_app_proxyis not granted at install time), and - Existing installs that only grant
write_app_proxylater through the optional scopes flow?
I want to make sure I’m not relying on documented features and not unintended bugs.
Thanks in advance for clarifying how this is intended to work.
Best regards,
Ferenc