Skip to main content
Nudj subscribes to Shopify webhooks so merchants don’t have to wire events manually. This page is the reference for which topics are consumed, how registration happens, and the hotfixes applied along the way.
These Shopify topics drive Nudj’s internal event pipeline, which in turn can trigger achievements, fire outbound Nudj webhooks, and update metrics. For the outbound Nudj webhook catalog and payload shapes, see Webhook Events Catalog.

Programmatic registration

PR #1684 replaced manual webhook registration with programmatic registration on app install. Nudj’s install flow calls Shopify’s webhook API to register every topic the app consumes, so merchants don’t manage subscriptions themselves.

Achievement-trigger topics

PR #1780 added 16 new Shopify webhook topics to drive achievement triggers. They span the core commerce lifecycle:
CategoryExample topics
Ordersorders/create, orders/paid, orders/fulfilled, orders/cancelled
Customerscustomers/create, customers/update
Cartscarts/create, carts/update
Checkoutscheckouts/create, checkouts/update
Productsproducts/create
App lifecycleapp/uninstalled, app/scopes_update
Each incoming webhook resolves to the correct community via the Shopify event → community resolver (PR #1654), then flows into the same handle-event.ts pipeline that drives all Nudj achievements.

Removed / unsupported topics

Not every topic made it into production — Shopify occasionally deprecates scopes, and some topics were pulled to reduce background cost:
  • Subscription contracts — PR #1808 removed subscription contract webhooks and their scope after Shopify’s subscription API shape changed.
  • Unsupported topics — PR #1789 removed webhook topics Shopify no longer accepts from apps, preventing install-time failures.
  • Compliance webhooks config — PR #2323 fixed an invalid [compliance_webhooks] TOML that was blocking the dev deployment pipeline.

Cost-protective hotfixes

Two production incidents drove hotfixes into the webhook layer:
  • PR #2112 — hotfix disabling certain Shopify webhooks to stop a Redis cost spiral caused by high-cardinality event traffic.
  • PR #2124 — return 410 Gone on disabled webhook routes to force Shopify to unregister them. 410 is the Shopify-documented signal to remove a subscription; returning other codes would leave Shopify retrying indefinitely.
These hotfixes are still in force for the affected topics. If your merchant integration depends on a specific topic, confirm it’s in the active set before relying on it.

Session Service

PR #1833 implemented the Shopify Sessions Service — the backing store for merchant access tokens (encrypted per PR #1484). Webhooks arrive pre-authenticated; the Session Service resolves the token needed to make any outbound Shopify API call triggered by the webhook.

Next steps

Webhook events catalog

Outbound Nudj webhook events that these Shopify topics ultimately drive.

Shopify integration overview

Where webhook registration fits in the full install flow.
Last reviewed: 2026-04 · Related PRs: #1484, #1654, #1684, #1780, #1789, #1808, #1833, #2112, #2124, #2323