PRODUCT VARIANTS

バリアント単位での公開制御がAPIで可能に

商品を残したまま「このバリアントだけ非表示」が正式サポート

ProductVariant A ✓ 公開Variant B ✓ 公開Variant C ✗ 非公開Channel AProductVariant A ✓ 公開Variant B ✗ 非公開Variant C ✓ 公開Channel BpublishablePublish /publishableUnpublishProductVariant ID を受付

Admin GraphQL API バージョン 2026-07 より、ProductVariant が Publishable インターフェースに準拠し、バリアントをチャネル・カタログ単位で個別に公開/非公開できるようになった。商品削除・商品複製・Liquidコードによる表示制御といった回避策が不要になり、EC事業者とアプリ開発者の双方が恩恵を受ける。既存の商品レベルの公開設定は引き続き有効で、後述の通り下位互換性が保たれる。

1Before / After:何が変わったか

BEFORE (〜2026-04)AFTER (2026-07〜)特定バリアントだけ非表示にしたい→ 商品複製 or Liquidハック が必要特定バリアントだけ非表示にしたい→ publishableUnpublish(variantId) 一発先行準備中バリアントを事前非表示→ 作成後すぐ公開されてしまう先行準備中バリアントを事前非表示→ variant.published: false で作成可能チャネルごとに異なるバリアントを公開→ 不可・商品を分けるしかないチャネルごとに異なるバリアントを公開→ チャネル別に publication 単位で制御可publishablePublish / Unpublish: Product のみProductVariant ID も受付 (additive 変更)

2業務に活かせる具体ユースケース

ユースケース① 限定カラーをBtoB専用カタログにのみ公開

課題
法人向けカタログに特定カラーを出したいが、同じバリアントを一般向けストアフロントには表示したくない。従来は商品を複製して管理していた。
打ち手
publishableUnpublish に当該バリアントIDとオンラインストアのpublication IDを渡して非公開化。BtoBカタログ側の publicationは公開のまま維持する。
効果
在庫・価格・メタフィールドを一元管理しながら、チャネルごとに異なる品揃えを実現。商品複製に伴う管理コストが大幅削減。
技術メモ
商品自体がオンラインストアに公開されていない場合、バリアントを公開しても該当チャネルには表示されない(商品の公開が前提条件)。

ユースケース② 新バリアントのローンチ前準備

課題
新SKUを事前にシステムに登録したいが、発売日前にストアへ露出してしまうリスクがあった。
打ち手
productSet または productVariantBulkCreate で variant.published: false を指定してバリアントを未公開状態で作成。発売日に publishablePublish を呼んで一斉公開する。
効果
先行公開ミスがゼロに。スケジュール公開のワークフローをAPI側で完結でき、Liquidコードによるフロントエンド隠蔽が不要になる。
技術メモ
既存の動作として、商品公開後に追加されたバリアントは親商品の全publicationに対してデフォルト「公開」になる。意図しない公開を避けるにはこのフラグの明示指定が必要。

ユースケース③ セール終了後のバリアント単位での除外

課題
タイムセール対象SKUのみセール期間中だけチャネルに公開し、終了後は非表示にしたいが、バリアント削除は在庫・注文履歴に影響するため避けたかった。
打ち手
セール開始時に publishablePublish、終了時に publishableUnpublish を対象バリアントIDで呼ぶだけ。バリアント自体は削除しない。
効果
在庫データ・注文履歴を損なわずにチャネルへの露出を柔軟にオン/オフできる。自動化スクリプトやFlow連携で時間制御も容易。
技術メモ
公開状態は ProductVariant.resourcePublicationsv2 で取得可能。アプリがproduct feedを利用している場合は既存のインクリメンタル同期Webhookがそのまま動作する。

3技術者向けポイント

項目 内容
対応APIバージョン Admin GraphQL API 2026-07 以降
Publishable インターフェース ProductVariant が Product・Collection と同様に Publishable を実装。resourcePublicationv2 と publishedOnPublication フィールドが追加される
APIミューテーション変更 publishablePublish / publishableUnpublish が ProductVariant IDを受け付けるように拡張(非破壊的追加変更)
バリアント作成時のデフォルト 新規バリアントは親商品の全publicationに対して公開がデフォルト(オプトアウト型)。未公開で作りたい場合は productSet または productVariantBulkCreate の variant.published: false を使う
Webhook product feedチャネルではバリアントの公開/非公開に連動してproduct updateのWebhookが発火(インクリメンタル同期)。variant_publication/create/update/delete Webhookは開発中・近日リリース予定(記事時点)
既存アプリへの影響 商品レベルの公開制御は変更なし。Product feedを使うチャネルアプリは修正不要。Product feed非使用でAPI経由で公開状態を読むアプリは ProductVariant.resourcePublicationsv2 の実装を推奨
優先順位ルール 商品がアクティブかつチャネルに公開されていることが大前提。商品レベルの公開設定がバリアントより優先される

バリアント単位の公開制御により、商品複製・Liquidハック・バリアント削除に頼らずチャネル別の品揃え最適化が実現できます。

Source: https://shopify.dev/changelog/publish-and-unpublish-product-variants-independently-from-product | 公開日: 2026年5月7日