--- title: webhookSubscriptions - GraphQL Admin description: >- Retrieves a paginated list of webhook subscriptions created using the API for the current app and shop. > Note: Returns only shop-scoped subscriptions, not app-scoped subscriptions configured in TOML files. Subscription details include event topics, endpoint URIs, filtering rules, field inclusion settings, and metafield namespace permissions. Results support cursor-based pagination that you can filter by topic, format, or custom search criteria. Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your `shopify.app.toml` may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read [About managing webhook subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe). api_version: 2026-01 api_name: admin type: query api_type: graphql source_url: html: >- https://shopify.dev/docs/api/admin-graphql/latest/queries/webhookSubscriptions md: >- https://shopify.dev/docs/api/admin-graphql/latest/queries/webhookSubscriptions.md --- # webhook​Subscriptions query Retrieves a paginated list of webhook subscriptions created using the API for the current app and shop. *** Note Returns only shop-scoped subscriptions, not app-scoped subscriptions configured in TOML files. *** Subscription details include event topics, endpoint URIs, filtering rules, field inclusion settings, and metafield namespace permissions. Results support cursor-based pagination that you can filter by topic, format, or custom search criteria. Building an app? If you only use app-specific webhooks, you won't need this. App-specific webhook subscriptions specified in your `shopify.app.toml` may be easier. They are automatically kept up to date by Shopify & require less maintenance. Please read [About managing webhook subscriptions](https://shopify.dev/docs/apps/build/webhooks/subscribe). ## WebhookSubscriptionConnection arguments [WebhookSubscriptionConnection!](https://shopify.dev/docs/api/admin-graphql/latest/connections/WebhookSubscriptionConnection) * after * before * first * format * last * query * reverse * sortKey * topics * uri * callbackUrl: deprecated *** ## Possible returns * edges * nodes * pageInfo *** ## Examples * ### Get the IDs, topics and URIs of the first 2 webhook subscriptions #### Query ```graphql query { webhookSubscriptions(first: 2) { edges { node { id topic uri } } } } ``` #### cURL ```bash curl -X POST \ https://your-development-store.myshopify.com/admin/api/2026-01/graphql.json \ -H 'Content-Type: application/json' \ -H 'X-Shopify-Access-Token: {access_token}' \ -d '{ "query": "query { webhookSubscriptions(first: 2) { edges { node { id topic uri } } } }" }' ``` #### React Router ```javascript import { authenticate } from "../shopify.server"; export const loader = async ({request}) => { const { admin } = await authenticate.admin(request); const response = await admin.graphql( `#graphql query { webhookSubscriptions(first: 2) { edges { node { id topic uri } } } }`, ); const json = await response.json(); return json.data; } ``` #### Ruby ```ruby session = ShopifyAPI::Auth::Session.new( shop: "your-development-store.myshopify.com", access_token: access_token ) client = ShopifyAPI::Clients::Graphql::Admin.new( session: session ) query = <<~QUERY query { webhookSubscriptions(first: 2) { edges { node { id topic uri } } } } QUERY response = client.query(query: query) ``` #### Node.js ```javascript const client = new shopify.clients.Graphql({session}); const data = await client.query({ data: `query { webhookSubscriptions(first: 2) { edges { node { id topic uri } } } }`, }); ``` #### Response ```json { "webhookSubscriptions": { "edges": [ { "node": { "id": "gid://shopify/WebhookSubscription/892403750", "topic": "ORDERS_CANCELLED", "uri": "https://example.org/fully_loaded_1" } }, { "node": { "id": "gid://shopify/WebhookSubscription/901431826", "topic": "APP_UNINSTALLED", "uri": "https://apple.com/uninstall" } } ] } } ``` * ### Get the first two webhook subscriptions with an APP\_UNINSTALLED topic #### Query ```graphql query { webhookSubscriptions(first: 2, topics: APP_UNINSTALLED) { edges { node { id topic uri } } } } ``` #### cURL ```bash curl -X POST \ https://your-development-store.myshopify.com/admin/api/2026-01/graphql.json \ -H 'Content-Type: application/json' \ -H 'X-Shopify-Access-Token: {access_token}' \ -d '{ "query": "query { webhookSubscriptions(first: 2, topics: APP_UNINSTALLED) { edges { node { id topic uri } } } }" }' ``` #### React Router ```javascript import { authenticate } from "../shopify.server"; export const loader = async ({request}) => { const { admin } = await authenticate.admin(request); const response = await admin.graphql( `#graphql query { webhookSubscriptions(first: 2, topics: APP_UNINSTALLED) { edges { node { id topic uri } } } }`, ); const json = await response.json(); return json.data; } ``` #### Ruby ```ruby session = ShopifyAPI::Auth::Session.new( shop: "your-development-store.myshopify.com", access_token: access_token ) client = ShopifyAPI::Clients::Graphql::Admin.new( session: session ) query = <<~QUERY query { webhookSubscriptions(first: 2, topics: APP_UNINSTALLED) { edges { node { id topic uri } } } } QUERY response = client.query(query: query) ``` #### Node.js ```javascript const client = new shopify.clients.Graphql({session}); const data = await client.query({ data: `query { webhookSubscriptions(first: 2, topics: APP_UNINSTALLED) { edges { node { id topic uri } } } }`, }); ``` #### Response ```json { "webhookSubscriptions": { "edges": [ { "node": { "id": "gid://shopify/WebhookSubscription/901431826", "topic": "APP_UNINSTALLED", "uri": "https://apple.com/uninstall" } }, { "node": { "id": "gid://shopify/WebhookSubscription/1014196360", "topic": "APP_UNINSTALLED", "uri": "https://example.org/app_uninstalled" } } ] } } ```