SHOPIFY WEBHOOKS
Shopify deleted your webhook subscription after failed deliveries
Shopify retries failed webhook deliveries (19 attempts over ~48 hours), then deletes the subscription entirely. After deletion, the shop fires events at nothing — no subscription, no errors, no events. It’s the most complete silent drop in the ecosystem.
Why Shopify webhooks fail silently
Deletion is permanent and quiet
Once the subscription is removed, your app receives nothing — and nothing in the Shopify admin makes it obvious unless you re-check your webhook list.
Notification goes to the developer email
Shopify warns the app’s developer contact — often an old personal inbox or a developer who left, never the ops channel.
Failure usually starts elsewhere
A deploy that moved the route, an expired SSL cert, or a host change starts the failure chain — Shopify just finishes it.
The fix
- 1
List your webhook subscriptions
Query the Admin API webhook list (or check your app’s shopify.app.toml subscriptions) — if the topic is missing, it was deleted.
- 2
Fix the delivery failure first
Whatever was failing (dead route, cert, slow handler) must be fixed before re-registering, or you’ll be deleted again within 48 hours.
- 3
Re-register the subscription
Re-create the webhook via the Admin API webhookSubscriptionCreate mutation or your app config.
- 4
Backfill the gap
Deleted-subscription events are unrecoverable — reconcile via the REST/GraphQL resources API for the outage window.
- 5
Heartbeat the inbound stream
With HookShield as the ingest target, a heartbeat ping proves the shop→you path is live. When events stop arriving, you’re alerted — before Shopify gives up on you.
DEAD-MAN'S SWITCH
Never find out about a dead webhook from a customer again
Point Shopify at a HookShield ingest URL. Every delivery is logged, signed, and forwarded — and if pings stop arriving, you're alerted before the silence becomes an incident.