Unlocking Rollout Visibility: New Admin GraphQL Queries and Webhooks for Shopify Apps

Shopify’s latest Developer Changelog introduces Rollout queries and webhooks in the Admin GraphQL API, letting apps discover, monitor, and react to coordinated launches, experiments, and temporary events. Learn what changed, who needs to act, and how to integrate the new capabilities today.

Unlocking Rollout Visibility: New Admin GraphQL Queries and Webhooks for Shopify Apps
7 sections

Shopify merchants and developers constantly juggle discounts, theme updates, catalog changes, and checkout experiments. Until now, apps had limited visibility into those coordinated launches—known as Rollouts—making it hard to stay in sync with a store’s live configuration. The recent Developer Changelog release adds dedicated Rollout queries and webhook subscriptions to the Admin GraphQL API, giving apps the tools they need to discover, track, and respond to every rollout event in real time.

What’s New in the Rollouts API

  • Root rollouts query – List and search all Rollouts across a merchant’s account.
  • rollout(id:) – Fetch a single Rollout by its global ID.
  • Treatment details – Inspect how each treatment impacts discounts, catalogs, themes, checkout, and account configurations.
  • Schedule & allocation fields – Retrieve planned activation/conclusion times, configured trafficAllocation, effectiveTrafficAllocation, and split values for each treatment.
  • Webhook events – Subscribe to lifecycle, effective‑allocation, and resource‑change notifications so your app stays up‑to‑date without constant polling.
  • Who Is Affected – Developers vs. Merchants

    The update is primarily a developer‑facing change, but its ripple effects reach merchants too. Any public or custom app that reads discounts, catalogs, themes, or checkout settings will now receive richer context about when and why those resources change. Merchants benefit indirectly through more stable apps that can react to experiments (e.g., A/B pricing tests) without manual intervention.

    How to Query Rollouts with GraphQL

    First, request the read_rollouts scope when installing or updating your app. Existing installations may need a re‑authorization prompt.

    A basic query to list active Rollouts looks like this:

    graphql

    query GetRollouts($first: Int, $after: String) {

    rollouts(first: $first, after: $after) {

    edges {

    node {

    id

    name

    status

    scheduledActivation {

    startDate

    endDate

    }

    trafficAllocation {

    percentage

    }

    treatments {

    name

    discountChanges {

    discountId

    newValue

    }

    }

    }

    }

    }

    }

    Replace $first and $after with pagination values as needed. To fetch a single Rollout by ID:

    graphql

    query GetRollout($id: ID!) {

    rollout(id: $id) {

    id

    name

    effectiveTrafficAllocation {

    percentage

    }

    treatments {

    name

    catalogChanges {

    productIds

    action

    }

    }

    }

    }

    Understanding Schedules, Allocation, and Treatments

  • scheduledActivation – The planned window when the Rollout becomes active. Use this to anticipate upcoming changes and schedule any prerequisite data syncs.
  • trafficAllocation vs. effectiveTrafficAllocation – The former is the configuration you set (e.g., 30% of traffic). The latter reflects the actual reach after Shopify’s internal throttling or overlapping experiments. Always rely on effectiveTrafficAllocation when deciding how much of your logic should be applied.
  • treatments – Each treatment represents a variant (control, experiment A, B, etc.). The payload details exactly which resources change per treatment, letting your app apply conditional logic only when the relevant treatment is live.
  • Subscribing to Rollout Webhooks

    Shopify now emits three webhook topics for Rollouts:

  • rollouts/lifecycle – Fires on creation, activation, pause, and deletion.
  • rollouts/effective_allocation – Notifies when the effective traffic allocation changes.
  • rollouts/resource_change – Alerts when the underlying resource payload (discount, catalog, theme, etc.) is altered.
  • Register them just like any other admin webhook:

    POST https://your-app.com/webhooks

    {

    "webhook": {

    "topic": "rollouts/resource_change",

    "address": "https://your-app.com/webhooks/rollout",

    "format": "json"

    }

    }

    When a webhook arrives, immediately refetch the affected Rollout (rollout(id:)) to get the latest treatment details and apply any necessary updates to your store‑side data.

    Action Checklist for Your Apps

  • Add the `read_rollouts` scope to your OAuth flow and prompt merchants for re‑authorization if they’re already installed.
  • Implement the root `rollouts` query to surface active experiments in your admin UI (optional but helpful for support teams).
  • Update discount‑related logic to check effectiveTrafficAllocation before applying discount calculations.
  • Set up webhook subscriptions for the three Rollout topics; store the Rollout ID from the payload for quick refetches.
  • Test in a development store by creating a temporary Rollout via the Partner Dashboard or using the Admin API’s mutation rolloutCreate (available in the API reference).
  • Log and monitor any mismatches between configured and effective allocation; this helps you detect throttling or overlapping experiments early.
  • Conclusion

    The new Rollout queries and webhook events turn what used to be a black box into a transparent, programmable workflow. By adding a few lines of GraphQL and webhook registration, your app can stay in lockstep with Shopify’s coordinated launches, reduce support tickets, and deliver a smoother experience for merchants. If you haven’t yet upgraded, start with the OAuth scope change and a simple rollout list query today—your future‑proof app will thank you.

    Tags
    Sources

    Related Articles

    Orders Webhooks Now Deliver Subscription Selling Plan IDs Directly

    Orders Webhooks Now Deliver Subscription Selling Plan IDs Directly

    Shopify’s latest webhook update adds a selling_plan_id field to order line items, letting developers identify subscription plans without extra API calls. Learn what changed, who it impacts, and how to adapt your apps today.

    October 1, 20263 min
    Unlocking Fiscal Compliance: New fiscalDeviceIdentifier Field on PointOfSaleDevice

    Unlocking Fiscal Compliance: New fiscalDeviceIdentifier Field on PointOfSaleDevice

    Shopify’s 2026-10 API adds a fiscalDeviceIdentifier to PointOfSaleDevice, giving developers a reliable way to access a device’s tax‑registered identifier for in‑person fiscal workflows. Learn what changed, who it impacts, and how to implement it today.

    October 1, 20264 min
    Why metafieldInteger Is Gone: Migrating to metafieldInt in API 2027‑01

    Why metafieldInteger Is Gone: Migrating to metafieldInt in API 2027‑01

    Shopify’s 2027‑01 API drops the metafieldInteger collection condition in favor of metafieldInt. Learn what changed, who’s affected, and step‑by‑step how to update your queries, mutations, and value types before the upgrade.

    October 1, 20264 min
    How Discount Rollouts Change Your Shopify Discount Strategy

    How Discount Rollouts Change Your Shopify Discount Strategy

    Shopify’s 2026‑10 API now lets merchants bundle discounts into Rollouts, giving you granular control over launch timing, buyer allocation, and channel availability. Learn what changed, who is affected, and how to update your apps and stores to take full advantage.

    October 1, 20264 min