Our public embedded app needs to register webhook subscriptions for protected topics (ORDERS_CREATE, ORDERS_PAID, ORDERS_FULFILLED, ORDERS_CANCELLED, REFUNDS_CREATE, CUSTOMERS_CREATE) via the Admin GraphQL API using a token-exchange (new embedded auth) offline access token.
Symptom: On our development stores, every Admin GraphQL operation that touches protected customer data returns HTTP 403 {"errors":{"networkStatusCode":403,"message":"GraphQL Client: Forbidden"}}, while non-protected queries on the same endpoint with the same token succeed:
{ shop { name } }→ HTTP 200
{ webhookSubscriptions(first:1){edges{node{id topic}}} }→ HTTP 403
webhookSubscriptionCreate(topic: ORDERS_CREATE, …)→ HTTP 403
This worked previously when the app used custom/development distribution; it began 403-ing after the app moved to public distribution.
Everything in the documented setup is complete:
- Partner Dashboard → API access requests → Protected customer data access: base access + all four fields (Name, Email, Phone, Address) selected, usage reasons provided, Data protection details completed (all questions). Status badge shows Draft (we understand from your team that Draft should not block development-store access).
- Granted scopes on the install include
write_orders(implies read_orders) andread_customers— verified in our session store. - Released a current app version (
wafonic-4) and reinstalled — grant updated correctly, but the 403 persists. - Both stores are Development stores.
Question: Why is protected customer data access not being honored on our development stores despite the access being configured (Draft)? Is a review submission now mandatory for public apps even for development-store testing, or is this the known new-Dev-Dashboard PCD issue? How do we unblock webhook registration for protected topics?