From cc3303d318e2c4c3dccc9041a42300e02983c4e1 Mon Sep 17 00:00:00 2001 From: metatroncubeswdev Date: Sun, 23 Aug 2026 23:19:26 -0400 Subject: [PATCH] fix: disable GDPR compliance webhooks pending Protected Customer Data access MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- README.md | 13 +++++++++++++ shopify.app.toml | 33 ++++++++++++++++++++------------- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 8a732f0..e2b9488 100644 --- a/README.md +++ b/README.md @@ -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 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 Phase 0 (scaffold & CI) through Phase 4 (enforcement Functions + diff --git a/shopify.app.toml b/shopify.app.toml index 6db0785..74ce3ce 100644 --- a/shopify.app.toml +++ b/shopify.app.toml @@ -40,21 +40,28 @@ api_version = "2026-10" uri = "/webhooks/orders/cancelled" topics = ["orders/cancelled"] - # Mandatory GDPR compliance topics — required for Built-for-Shopify / public app review. - # Handled by: app/routes/webhooks.customers.data_request.tsx - [[webhooks.subscriptions]] - uri = "/webhooks/customers/data_request" - compliance_topics = ["customers/data_request"] + # Mandatory GDPR compliance topics — required for Built-for-Shopify / + # public app review. TEMPORARILY DISABLED: `shopify app dev`/`deploy` + # refuses to push these until the org has requested and been granted + # "Protected customer data access" in the Partner Dashboard (Apps -> + # 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]] - uri = "/webhooks/customers/redact" - compliance_topics = ["customers/redact"] + # [[webhooks.subscriptions]] + # uri = "/webhooks/customers/data_request" + # compliance_topics = ["customers/data_request"] - # Handled by: app/routes/webhooks.shop.redact.tsx - [[webhooks.subscriptions]] - uri = "/webhooks/shop/redact" - compliance_topics = ["shop/redact"] + # [[webhooks.subscriptions]] + # uri = "/webhooks/customers/redact" + # compliance_topics = ["customers/redact"] + + # [[webhooks.subscriptions]] + # uri = "/webhooks/shop/redact" + # compliance_topics = ["shop/redact"] # App proxy so the storefront Theme App Extension can call our backend # without CORS issues (see IMPLEMENTATION_PLAN.md §5.3). `shopify app dev`