--- title: >- Publish and unpublish product variants independently from product - Shopify developer changelog description: >- Shopify’s developer changelog documents all changes to Shopify’s platform. Find the latest news and learn about new platform opportunities. source_url: html: >- https://shopify.dev/changelog/publish-and-unpublish-product-variants-independently-from-product md: >- https://shopify.dev/changelog/publish-and-unpublish-product-variants-independently-from-product.md metadata: effectiveApiVersion: 2026-07 affectedApi: - displayName: Admin GraphQL API handle: admin-graphql - displayName: Storefront GraphQL API handle: storefront-graphql primaryTag: displayName: API handle: api secondaryTag: displayName: New handle: new indicatesActionRequired: false createdAt: '2026-05-06T19:54:44-04:00' postedAt: '2026-05-07T13:00:00-04:00' updatedAt: '2026-05-07T13:14:08-04:00' effectiveAt: '2026-05-07T12:00:00-04:00' --- May 7, 2026 Tags: * Admin GraphQL API * Storefront GraphQL API * 2026-07 # Publish and unpublish product variants independently from product `ProductVariant` is now a `Publishable`. Variants can be published or unpublished per publication (channel or catalog) in API version 2026-07, giving merchants — and your apps — fine-grained control over where each variant is visible without deleting variants, duplicating products, or hiding them via storefront code. This is a non-breaking, additive change: * Product-level publishing is unchanged and still takes precedence. A product must be active and published to a channel for any of its variants to render there. * Variants default to published (opt-out model). Existing apps that publish at the product level continue to work without modification. * Variants can be created in an unpublished state in order to prevent early exposure to buyers. #### What's new in the Admin GraphQL API * `publishablePublish` and `publishableUnpublish` now accept `ProductVariant` IDs. * `ProductVariant` now adheres to the `Publishable` interface, similar to `Product` and `Collection`, which includes `resourcePublicationv2` and `publishedOnPublication` * Product feed webhooks fire with a product update for variant added and deleted when variants are published to the feed’s channel. * `variant_publication/create/update/delete` webhooks are still under development and will be shipped imminently. #### What this means for your app * Channel apps using product feeds should not require any changes to work - the product feed adds and removes variants to the product and an incremental sync webhook is triggered. * Channels or pseudo channels that do not use product feeds and rely on reading publication state via the admin graphql API should implement support by reading the respective publication state of variants via `ProductVariant.resourcePublicationsv2`. * Apps that create variants after product publication occurs: new variants default to published in all of the parent product's publications. If your app plans to create variants in an unpublished state, `productSet` and `productVariantBulkCreate` both include a `variant.published: false` field to create variants as unpublished. * Apps that publish products: no changes required. Continue calling publishablePublish on products as before. Consider implementing variant publishing support if unpublishing variants is relevant to your apps workflows. [Read the developer guide →](https://shopify.dev/docs/apps/build/sales-channels/product-publishing#variant-level-publishing)