記事のサマリー(TL;DR)
- API 2026-07から
ProductVariantがPublishableインターフェースに対応。バリエーション単位でチャンネル・カタログへの公開制御が可能に - 既存アプリへの破壊的変更なし。商品レベルの公開設定は引き続き有効で、バリエーションはデフォルト「公開」(オプトアウト方式)
- バリエーション作成時に
variant.published: falseを指定することで、バイヤーへの早期露出を防ぐ未公開状態での作成が可能
Shopify Plus 事業者・チャンネルアプリ開発者が確認すべき対応ポイント
今回の変更は API バージョン 2026-07 からの追加機能であり、既存のチャンネルアプリやプロダクトフィードを使う実装は修正なしで動作し続ける。ただし、チャンネルやカタログを独自実装(プロダクトフィードを使わない疑似チャンネル構成)している場合は、ProductVariant.resourcePublicationsV2 を通じてバリエーション単位の公開状態を読み取る実装への移行を検討する必要がある。
国内では B2B カタログや卸・小売チャネルを Shopify Plus で複数運用しているケースがある。これまで「特定チャンネルだけ特定SKUを非表示にしたい」という要件に対してストアフロントコードでの隠蔽や商品複製で対処していた場合、このAPIで構造的に解決できる。また、productSet や productVariantBulkCreate の variant.published: false フィールドにより、新SKUの先行仕込みと公開タイミング制御がAPIレベルで管理できるようになる点は、EC運営の在庫・販売開始フロー設計において実用的な変化だ。
詳細
ProductVariant が Publishable インターフェースに対応(API 2026-07)
ProductVariant が Publishable インターフェースに準拠し、Product や Collection と同様の公開制御が可能になった。これにより、チャンネル(販売チャネル)またはカタログ単位で、各バリエーションがどこに表示されるかをきめ細かく制御できる。
この変更でできること:
- バリエーションを削除・商品複製・ストアフロントコードでの非表示なしに、特定チャンネルへの公開・非公開を切り替え
- バリエーション作成時に未公開状態で作成し、バイヤーへの早期露出を防止
publishablePublish/publishableUnpublishミューテーションがProductVariantID を受け付けるよう拡張
変わらない点(後方互換性):
- 商品レベルの公開設定は変更なし。商品がチャンネルに公開されている場合のみ、バリエーションがそのチャンネルでレンダリングされる
- バリエーションはデフォルトで「公開」(オプトアウト方式)
- 商品レベルで
publishablePublishを呼び出している既存アプリは修正不要
Admin GraphQL API の変更点
publishablePublishおよびpublishableUnpublishミューテーションがProductVariantID を受け付けるよう対応ProductVariantがPublishableインターフェースに準拠(resourcePublicationsV2・publishedOnPublicationフィールドを含む)- 商品フィードの Webhook:バリエーションがフィードのチャンネルに公開・非公開になった際、
variant added/variant deletedとして商品更新の Product Feed Webhook が発火 variant_publication/create・/update・/deleteの専用 Webhook は現在開発中で、近日リリース予定
アプリ種別ごとの対応方針
| アプリ種別 | 対応要否 |
|---|---|
| プロダクトフィードを使うチャンネルアプリ | 修正不要。増分同期 Webhook が自動発火 |
| フィードを使わず Admin GraphQL API で公開状態を読み取る疑似チャンネル | ProductVariant.resourcePublicationsV2 での読み取り実装を追加 |
| 商品公開後にバリエーションを作成するアプリ | 新バリエーションは親商品の全公開先にデフォルト公開。未公開で作成したい場合は productSet または productVariantBulkCreate の variant.published: false を使用 |
| 商品を公開するアプリ | 修正不要。引き続き publishablePublish を商品に対して呼び出す。バリエーション公開制御が業務フロー上必要な場合のみ追加実装を検討 |