October 25, 2026 · Muhammad Rehan · More by Muhammad Rehan
Shopify Rollouts Now Gate Discounts and Catalogs
Shopify's Rollouts system now overrides discount and catalog state for a slice of traffic — here's what pricing syncs must read instead.
On October 1, 2026, Shopify's Admin GraphQL API version 2026-10 added a read-only rollouts connection to Discount types. Three weeks later, on October 23, Rollouts gained a second new capability: scheduling and testing catalog changes. Rollouts had already covered themes and checkout and accounts configuration since mid-2026. With discounts and catalogs now in scope, any integration that reads pricing or product availability directly from Shopify — an ERP, a PIM, a ticketing or ops dashboard — needs to understand a mechanic that didn't used to apply to it.
What changed, and what it doesn't change
A discount's rollouts connection lets an app see which Rollouts affect a given discount, alongside the discount's existing startsAt and endsAt fields. A catalog change inside a Rollout is narrower: it only ever toggles a catalog between Active and Draft. Unlike a theme change, a catalog change in a Rollout does not carry content changes — there's no partial-pricing or partial-availability edit happening inside the rollout itself, just a scheduled flip of the catalog's own state.
Why native fields stop telling the whole story
A discount that's part of a Rollout keeps its own active dates, and those dates keep applying independently of the Rollout. That means a discount is active for a given customer when its own dates say so, or when an active Rollout that activates it applies to that customer — and a Rollout that deactivates a discount makes it inactive for rollout customers even when the discount's own dates say it should be live. Reading startsAt and endsAt alone, or a catalog's Active/Draft flag alone, no longer tells you what a buyer actually sees once either resource is attached to a Rollout.
The channel split a sync job can't skip
The most consequential detail for integration reliability is a scope distinction: a discount activated at 100% effective traffic allocation is available across all sales channels, subject to the discount's normal eligibility rules. A discount activated at partial traffic, by contrast, applies on the Online Store only. Shopify's own documentation is explicit that configured traffic allocation alone does not determine effective reach — the field to read is effectiveTrafficAllocation, not the percentage a merchant typed into the Rollout's audience settings.
What an integration needs to add
Getting the real picture requires three things beyond a resource's own fields: the read_rollouts scope (existing installations may need merchant reauthorization to add it), the Discount.rollouts connection or the root rollouts / rollout(id:) queries to find what's affecting a resource directly, and a subscription to Rollout webhooks, which Shopify groups into lifecycle, effective-allocation, and resource-change categories — treated as a signal to refetch the affected Rollout, not as a full diff. One more compatibility detail matters for anyone still on an older API version: on Admin GraphQL API versions earlier than 2026-10, discounts get filtered out of query results if they're active but may not reach all buyers, or if their status differs from what their native dates imply. Pinning to an old version doesn't avoid the problem — it just hides the discounts where the problem exists.