We have a Public App with two subscriptions per store (it’s a development store) for “APP_UNINSTALLED“ webhook - for the frontend and backend parts. Recently the app was uninstalled from the store, the webhook for the frontend subscription was received, but it was never received by backend subscription. Could anyone advise possible reasons of this behaviour?
For the frontend subscription on “APP_UNINSTALLED” webhook uses Shopify.Webhooks.Registry.addHandler. For the backend subscription on “APP_UNINSTALLED” webhook uses webhookSubscriptionCreate mutation (2025-04 Shopify Graphql version).
We have a Public App with two subscriptions per store (it’s a development store) for “APP_UNINSTALLED“ webhook - for the frontend and backend parts.
Can you explain what you mean by this? An app relationship event (install, uninstall, etc) is a backend event. By frontend, we typically mean client side code.
Recently the app was uninstalled from the store, the webhook for the frontend subscription was received, but it was never received by backend subscription. Could anyone advise possible reasons of this behaviour?
Shopify doesn’t guarantee webhook delivery.
So it really could just be a single dropped event, or your webhook URL isn’t reachable.
Just +1ing what @Dylan said here, webhook delivery isn’t always guaranteed. There’s a bit more information on this here in our webhook best practices documentation:
We usually do recommend building in a reconciliation job (sort of like cron jobs) that polls your needed data endpoints at regular intervals to synchronise as needed. For example, running an order query to confirm order data you retrieved from webhooks is up to date. For this instance though, you can always run a query to check if/when an app has been uninstalled using the partner API if needed: