--- title: Troubleshoot Events description: >- Investigate failed or missing deliveries and fix common subscription configuration errors. source_url: html: 'https://shopify.dev/docs/apps/build/events/troubleshoot' md: 'https://shopify.dev/docs/apps/build/events/troubleshoot.md' --- # Troubleshoot Events **Developer preview:** Events is in developer preview on the [`unstable`](https://shopify.dev/docs/api/usage/versioning#making-requests-to-an-api-version) API version, available today for a [subset of topics](https://shopify.dev/docs/api/events). Use it for early testing ahead of a stable release and broader topic coverage. For topics not yet supported, use webhooks alongside Events in the same `shopify.app.toml`. As Events expands topic coverage, it will become the primary subscription mechanism. If your app uses Events, monitor for and respond to failed delivery notifications. Shopify retries failed deliveries automatically. If your endpoint continues to fail, deliveries for that subscription stop being attempted. If your app was created in the Dev Dashboard or using Shopify CLI, you can use the [delivery metrics](#monitor-performance) report to troubleshoot delivery failures and view performance data. This guide shows you how to use the metrics report to track failed deliveries and fix them before they affect app users. *** ## Monitor performance The **Monitoring** page shows delivery counts and response time for each topic over the past 7 days. For an overview of all monitoring tools in the Dev Dashboard, see [Monitoring and logs](https://shopify.dev/docs/apps/build/dev-dashboard/monitoring-and-logs). 1. From your [Dev Dashboard](https://dev.shopify.com/dashboard), click **Apps**. 2. Click the name of your app. 3. In the sidebar, click **Monitoring**. ![The Monitoring page in the Dev Dashboard showing delivery counts and response time charts, with a table listing total, successful, and failed deliveries by topic.](https://shopify.dev/assets/assets/images/apps/events/dev-dashboard-monitoring-events-CO_BxJFD.png) **Tip:** You can manually trigger an Event to check delivery metrics by updating your dev store. For example, create or update a product to trigger a `Product` event. You can focus on Events and webhooks from the **Webhooks** tab, change the delivery window for the dashboard using the dropdown, and filter on specific delivery types using the **Topic +** selector. From this view you can inspect the following plots: * **Deliveries:** Successful deliveries and errors over the course of the selected delivery window and topic filters. * **Response time:** Average response time for your app within the window. The monitoring table lists the following information for each topic: | Metric | Description | | - | - | | Removed subscriptions | The number of removed subscriptions. Shopify retries failed deliveries automatically. | | Failed delivery rate | The percentage of unsuccessful delivery attempts out of the total number of delivery attempts. | | Total deliveries | The total number of delivery attempts across all subscriptions for the topic. | | Response time | The 90th percentile of your app's response time. 90% of responses were equal to or faster than the listed time. | From the **Monitoring** page, you can also view your app's [delivery logs](#view-delivery-logs) and [delivery details](#view-delivery-details). *** ## View delivery logs The **Logs** page shows individual deliveries filterable by topic, status, and destination shop over the past 7 days. 1. From your [Dev Dashboard](https://dev.shopify.com/dashboard), click **Apps**. 2. Click the name of your app. 3. In the sidebar, click **Logs**. ![The Logs page in the Dev Dashboard showing a list of Events deliveries for the Product topic, with response codes and timestamps.](https://shopify.dev/assets/assets/images/apps/events/dev-dashboard-logs-BbXRYh9F.png) **Note:** The delivery logs dashboard doesn't provide real-time updates. Data could be delayed up to several minutes. You can focus on Events and webhooks from the **Webhooks** tab, change the delivery window for the dashboard using the dropdown, and filter on specific delivery types using the **Topics +**, **Shops +** and **Status +** selectors. The delivery logs list the following information: | Field | Description | | - | - | | Response | The response code your app sent when it received the webhook. | | Topic | The topic the subscription is listening to. | | Shop | The URL of the Shopify store associated with the delivery. | | Time | The date and time of the most recent delivery attempt. | ### Responses and retries A `200` series status response is considered successful. If your app has a high rate of successful responses, then the logs display a sample representation of successful responses. If your app doesn't respond with a `200` series status code, the delivery has failed. Shopify retries failed deliveries automatically. ### Prioritize fixes Use the response code and retry count to decide which subscriptions to fix first. Prioritize subscriptions with any of the following: * **Delivery failed after retries**: Once Shopify exhausts its retry attempts, it stops trying to deliver the event. You might need to reconcile any missing data. * **High failure rates on a single subscription**: A high rate on one subscription may indicate a handler-specific or payload-specific error. * **High failure rates across all subscriptions**: If all your subscriptions have a high failure rate, your backend may not be responding. Use your monitoring tools to investigate. ### View delivery details When you click a delivery from the **Logs** page, a panel opens with the following information: ![The delivery details panel in the Dev Dashboard showing subscription metadata, response status, timing, shop information, payload size, delivery attempt count, HMAC signature, and HTTP headers.](https://shopify.dev/assets/assets/images/apps/events/dev-dashboard-delivery-details-B-rQhsLn.png) The details panel lists the following information for each delivery: | Field | Description | | - | - | | Topic | The topic the subscription is listening to. | | URI | The endpoint the delivery was sent to. | | Subscription method | How the subscription was created, for example App specific. | | API version | The API version configured in your `[events]` block. | | Subscription ID | The ID of the subscription. | | Handle | The handle you assigned to the subscription in `shopify.app.toml`. | | Webhook ID | The unique ID of this delivery. | | Response | The HTTP status code your app returned. | | Time | The timestamp of the delivery attempt in EDT, UTC, and relative time. | | Shop | The domain of the store that triggered the event. | | Shop ID | The ID of the store that triggered the event. | | Payload size | The size of the delivery payload in bytes. | | Response time | The time between the delivery request and your app's response. If your app doesn't respond within five seconds, the delivery fails. | | Delivery attempt | The attempt number for this delivery. | | Delivery method | The method used to deliver the event, for example `http`. | | HMAC SHA-256 | The HMAC signature sent with the delivery. Use this to verify the delivery came from Shopify. See [Verify deliveries](https://shopify.dev/docs/apps/build/events/verify-deliveries). | | Headers | The [HTTP headers](https://shopify.dev/docs/api/events/current#http-headers) sent with the delivery. | | `Fields changed` | The field paths that changed, including entity IDs, normally accessible [within a response](https://shopify.dev/docs/api/events/latest#payload-structure) at `fields_changed`. Values are not shown to protect store data. | *** ## Manage delays You might experience delays receiving Events deliveries. If receiving deliveries up to a day late might cause issues in your app, then compare the timestamp of the delivery to the current date and time. *** ## Next steps * [Events reference](https://shopify.dev/docs/api/events): Browse valid trigger paths, topic definitions, and payload structures. * [Verify deliveries](https://shopify.dev/docs/apps/build/events/verify-deliveries): Verify HMAC signatures and handle duplicate Events deliveries. ***