Title: [CRITICAL] subscription_contracts/update Webhook not firing & API returning empty edges despite correct scopes

Hi everyone,

I am facing a major roadblock with the Shopify API and the first-party “Shopify Subscriptions” app. I’ve spent days troubleshooting and have ruled out every “beginner” mistake, but the system simply refuses to communicate.

The Goal:
Automatically remove access to an external platform when a subscription is cancelled via the free “Shopify Subscriptions” app.

The Problem:
The webhook for subscription_contracts/update never fires, and GraphQL queries for subscription contracts return empty edges [], even though active/cancelled contracts exist.

What I have done to ensure this is not a configuration error:

  1. Scopes & App Permissions:

    • My custom app has read_own_subscription_contracts and write_own_subscription_contracts.

    • I have reinstalled/updated the app multiple times after changing scopes to ensure they are active.

  2. Webhook Registration:

    • I successfully registered the SUBSCRIPTION_CONTRACTS_UPDATE webhook via Postman/GraphQL.

    • A query of webhookSubscriptions confirms it exists with the correct callbackUrl.

  3. Proof of Connectivity:

    • I registered a test webhook for products/create. This works perfectly.

    • This proves: My endpoint is reachable, the Access Token is valid, and the webhook infrastructure is generally working.

  4. Data Inaccessibility:

    • Running a GraphQL query for subscriptionContracts(query: “status:cancelled”) returns {“edges”: []}.

    • Even triggering a customers/update webhook (which fires successfully on cancellation) and then trying to fetch the customer’s subscriptionContracts returns an empty list.

The Logic Flaw:
It seems that a Custom App, even with the correct scopes, cannot “see” or “hear” events from the first-party “Shopify Subscriptions” app. This makes it impossible to automate any post-cancellation logic.

Has anyone found a workaround for this? Is there a hidden scope or a specific API version requirement to allow Custom Apps to read data from the official Subscriptions app?