Blog / Shopify

Shopify webhooks fail silently because Shopify retries failed deliveries 19 times over 48 hours without notifying you. If all retries fail, Shopify automatically deletes the webhook subscription — also without warning. The only way to catch the first failure early is to poll Shopify's webhook delivery logs via the Admin API every few minutes.

Why Shopify Webhooks Fail Silently — and How to Catch Them

· 7 min read · Shopify monitoring

Your orders/paid webhook stopped firing three days ago. Your fulfilment system hasn't received a new order since then. Shopify retried 19 times, gave up, and silently deleted the webhook subscription — and you're finding out now because a customer emailed asking where their order is.

This is one of the most common causes of silent breakdowns in Shopify-integrated apps. Here's the mechanics of why it happens and how to catch it before the damage compounds.

How does Shopify handle webhook delivery failures?

When your endpoint fails to respond with a 2xx HTTP status within 5 seconds, Shopify marks the delivery as failed and schedules a retry. Unlike Stripe's gradual backoff, Shopify retries aggressively:

The deletion is the part that surprises most developers. With Stripe, a failed webhook can be manually redelivered. With Shopify, once the subscription is deleted, you have to re-register it — and any events that happened during the failure window are gone.

Why does Shopify delete webhook subscriptions after failures?

Shopify's webhook delivery system is designed to protect its infrastructure from sending events to endpoints that are permanently offline. From Shopify's perspective, 19 failures over 48 hours is a strong signal that the endpoint doesn't exist anymore or isn't going to come back.

The problem is that this logic doesn't distinguish between a permanently dead endpoint and a temporarily broken one. A misconfigured deploy, an expired SSL certificate, a handler crash — any of these can cause 48+ hours of failures if not caught early.

Where are Shopify webhook delivery logs?

For admin-registered webhooks (added via Shopify admin → Settings → Notifications): go to Settings → Notifications → Webhooks → [webhook] → Recent Deliveries.

For app-registered webhooks (registered via Admin API), delivery history is available via the API:

# Get delivery events for a webhook subscription
GET /admin/api/2024-01/webhooks/{webhook_id}/events.json
Authorization: Bearer {access_token}

# Response includes
id · topic · status · created_at · response_code

Shopify retains delivery history for recent events. This is the same endpoint that monitoring tools poll to detect failures.

What causes a Shopify webhook to fail?

The most common root causes, in order of frequency:

How can you detect a Shopify webhook failure within minutes?

The only way to detect Shopify webhook failures early is to actively poll the delivery log API. Shopify does not push failure notifications — it only records them.

Option 1: Poll the Shopify Admin API yourself

Using your app's access token, you can poll the webhook events endpoint every few minutes and check for failed deliveries. You'll need to:

Option 2: Use a dedicated webhook monitor

Webhook Guardian connects to your Shopify store via read-only OAuth (read_orders + read_webhooks scopes) and polls delivery logs every 5 minutes. When a failure is detected, it fires a Slack or email alert with the topic, store, error code, retry count, and a link to the delivery log — long before Shopify reaches its 19-retry limit.

What events are most critical to monitor in Shopify?

A missed event in any of these topics causes downstream failures that compound over time:

FAQ: Shopify webhook failures

Why is my Shopify webhook not firing?
Shopify webhooks stop firing if your endpoint returns non-2xx, responds in over 5 seconds, has an invalid SSL certificate, or if Shopify deleted the subscription after 19 consecutive failures. Check Settings → Notifications → Webhooks → [webhook] → Recent Deliveries to see the delivery history.
Does Shopify delete webhook subscriptions after failures?
Yes. After 19 consecutive delivery failures over approximately 48 hours, Shopify automatically deletes the webhook subscription with no notification. You have to re-register it manually — and events from the failure window are lost.
How do I check Shopify webhook delivery logs?
For admin-registered webhooks: Settings → Notifications → Webhooks → [webhook] → Recent Deliveries. For app-registered webhooks: query GET /admin/api/2024-01/webhooks/{id}/events.json with your access token.

Catch Shopify webhook failures before Shopify's retries run out. Connect Shopify to Webhook Guardian and get alerted within 5 minutes of the first failure — before Shopify has a chance to delete your subscription. Start free for 14 days →