No more asking the merchant to "please share the logs" every time. If your app holds the required scopes, the function run log details in the Dev Dashboard appear automatically.
To view function run details, the merchant had to perform a "share" action. The app developer's workflow was request-based.
If your app can read, via the GraphQL Admin API, the scopes that the function's input query requires, the details appear automatically.
| Item | Before | New spec (this change) |
|---|---|---|
| Conditions for viewing log details | Manual An action the merchant shares | Automatic Determined by the app's access scopes |
| Determination criteria | Not documented (merchant's discretion) | the function's input query scopes it requires |
| Merchant request | Required each time | Not required |
| When it takes effect | — | After the required scopes are granted, on the next access it's shown automatically |
| Where it's displayed | Dev Dashboard | Dev Dashboard (same) |
When the required scopes aren't present, the documentation lists three ways to obtain them. Choose the one that fits your use case.
Scopes the app needs permanently. Declare them in the install/auth flow.
Use case : Fields always required for standard operation.
Customer details, addresses, etc. require an additional approval process —they're protected data. Request data-level scopes separately as well.
For temporary needs like debugging, use an optional scope.
Merchants can grant/revoke without reinstalling.
Identify the fields read by the function's input query.
Check whether the app holds the scopes required to read those fields via the Admin GraphQL API.
Choose the best option among the three paths—standard, protected data, or optional—and obtain the scope.
The logic for whether logs can be viewed is derived from the function's input query. In other words, "the permission to read data in production" and "the information visible in logs" follow the same rule.
Items such as customer details / addresses additionally require the protected customer data approval process and data-level scopes. Design them separately from general scopes.
For scopes you don't need permanently but want to see only during incidents, request them as optional. Since merchants can grant or revoke them without reinstalling, the operational burden is low.
A granted scope takes effect "the next time you access the log." There is no mention of immediate-refresh behavior. Watch for this timing difference when running reproduction tests.
When the expected details don't appear, the correct order is to first suspect not the function but the app's scope declaration . Re-read the input query and check whether the corresponding scopes are present in the app's manifest—this usually resolves it.