Hi everyone,
We got the “Complete your migration to expiring offline access tokens” email. It lists:
- myCoolApp: 6 tokens to migrate
As far as we can tell, this doesn’t match what our app actually does:
- Our backend handles OAuth itself (authorization code grant). It sends expiring=1 when it first exchanges the code.
- Every token we have stored is an expiring token with a refresh token and an expiry time. We removed all code for non-expiring tokens in July 2026.
- We make no API calls with non-expiring tokens. The API health page where alerts of using non-expiring tokens is gone, so we can’t see if that really is the case.
So the email seems to count tokens our app doesn’t hold or use. Our guess is that these are non-expiring tokens issued a while ago, from installs that came before we switched to expiring tokens. When those shops later got a new expiring token, the old one was apparently never revoked. If that’s right, we can’t migrate these tokens with token exchange, because we no longer have the subject_token to send.
The dashboard doesn’t give us any way to check this per install. As far as we can see, the API health warning only covers the whole app and only reflects recent API usage. It doesn’t tell us whether a given shop still has an active non-expiring token.
Our questions:
- What exactly does “tokens to migrate” count? Is it every non-expiring offline token still active for the app, even if it hasn’t been used in months, or only tokens that made API calls recently?
- How can we find out which shops or installs these tokens belong to? Is there a page in the Partner or Dev Dashboard, an API, or a support route that lists them?
- How do we retire a non-expiring token we no longer have? Uninstalling revokes it, but we don’t want to ask active merchants to reinstall. Will these tokens count against us on January 1, 2027 even though we never use them?
- Do dev and staging apps installed on development stores (e.g. through shopify app dev) count? Do they affect the App Store listing of the production app?
We can share app IDs and shop domains privately with Shopify staff if that helps.
Thanks!