fix: disable GDPR compliance webhooks pending Protected Customer Data access

shopify app dev refused to push the 3 mandatory compliance-topic webhooks
(customers/data_request, customers/redact, shop/redact) with "This app is
not approved to subscribe to webhook topics containing protected customer
data" — subscribing to these requires the org to first request and be
granted Protected Customer Data Access in the Partner Dashboard, a manual
approval step outside the CLI/config entirely.

Commented out the three subscription blocks in shopify.app.toml (handlers
are untouched and still fully wired) so dev can proceed now. README.md
gets a new "Before public launch" section as the reminder to re-enable
them once access is granted — this is a hard requirement for BfS/public
submission per CLAUDE.md, not something to forget once dev is unblocked.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
metatroncubeswdev 2026-08-23 23:19:26 -04:00
parent e116a6c87a
commit cc3303d318
2 changed files with 33 additions and 13 deletions

View File

@ -38,6 +38,19 @@ runs the BullMQ worker (jobs/worker.ts) once Phase 4 makes it do anything.
| `npm run test:functions` | Real WASM build + `function-runner` tests for both Shopify Functions, against fixtures | | `npm run test:functions` | Real WASM build + `function-runner` tests for both Shopify Functions, against fixtures |
| `npm run typegen:functions` | Regenerate `extensions/*/generated/api.ts` from each Function's `schema.graphql` + `.graphql` query (also runs automatically before `npm run typecheck`) | | `npm run typegen:functions` | Regenerate `extensions/*/generated/api.ts` from each Function's `schema.graphql` + `.graphql` query (also runs automatically before `npm run typecheck`) |
## Before public launch
The 3 mandatory GDPR compliance webhooks (`customers/data_request`,
`customers/redact`, `shop/redact`) are commented out in `shopify.app.toml`
— Shopify refuses to push them until the org requests and is granted
**Protected customer data access** in the Partner Dashboard (Apps → this
app → API access → Protected customer data), which is a manual
questionnaire/approval step. The handlers already exist and are fully
wired (`app/routes/webhooks.customers.*.tsx`, `webhooks.shop.redact.tsx`) —
once that access is granted, uncomment the three `[[webhooks.subscriptions]]`
blocks near the bottom of the webhooks section. **Required before any
public launch or Built-for-Shopify submission** — don't ship without it.
## Status ## Status
Phase 0 (scaffold & CI) through Phase 4 (enforcement Functions + Phase 0 (scaffold & CI) through Phase 4 (enforcement Functions +

View File

@ -40,21 +40,28 @@ api_version = "2026-10"
uri = "/webhooks/orders/cancelled" uri = "/webhooks/orders/cancelled"
topics = ["orders/cancelled"] topics = ["orders/cancelled"]
# Mandatory GDPR compliance topics — required for Built-for-Shopify / public app review. # Mandatory GDPR compliance topics — required for Built-for-Shopify /
# Handled by: app/routes/webhooks.customers.data_request.tsx # public app review. TEMPORARILY DISABLED: `shopify app dev`/`deploy`
[[webhooks.subscriptions]] # refuses to push these until the org has requested and been granted
uri = "/webhooks/customers/data_request" # "Protected customer data access" in the Partner Dashboard (Apps ->
compliance_topics = ["customers/data_request"] # this app -> API access -> Protected customer data) — that's a manual
# questionnaire/approval step, not something the CLI or config can
# bypass. RE-ENABLE these three blocks (handlers already exist and are
# wired: app/routes/webhooks.customers.data_request.tsx,
# webhooks.customers.redact.tsx, webhooks.shop.redact.tsx) once that
# access is granted, and before any public launch/BfS submission.
# Handled by: app/routes/webhooks.customers.redact.tsx # [[webhooks.subscriptions]]
[[webhooks.subscriptions]] # uri = "/webhooks/customers/data_request"
uri = "/webhooks/customers/redact" # compliance_topics = ["customers/data_request"]
compliance_topics = ["customers/redact"]
# Handled by: app/routes/webhooks.shop.redact.tsx # [[webhooks.subscriptions]]
[[webhooks.subscriptions]] # uri = "/webhooks/customers/redact"
uri = "/webhooks/shop/redact" # compliance_topics = ["customers/redact"]
compliance_topics = ["shop/redact"]
# [[webhooks.subscriptions]]
# uri = "/webhooks/shop/redact"
# compliance_topics = ["shop/redact"]
# App proxy so the storefront Theme App Extension can call our backend # App proxy so the storefront Theme App Extension can call our backend
# without CORS issues (see IMPLEMENTATION_PLAN.md §5.3). `shopify app dev` # without CORS issues (see IMPLEMENTATION_PLAN.md §5.3). `shopify app dev`