GraphQL API / サブスクリプション

サブスク契約APIが刷新
SubscriptionContractCalculation 早期アクセス開始

12以上のドラフトMutationを「計算→ポーリング→コミット」の3ステップに集約。チェックアウトエンジンとの統一で、価格・税・割引の一貫性を実現。

SubscriptionDraft(旧)create → add line → update line→ add discount → apply code→ update delivery → commit12以上のMutationSubscriptionContractCalculation(新)① Calculate(1 Mutation)② Poll(query / webhook)③ Commit(1 Mutation)3ステップで完結

このAPIはサブスクリプション契約を作成・更新・編集するアプリに影響します。2026-10リリース候補APIバージョンで早期アクセスが始まり、2026-10で安定版になる予定です。SubscriptionDraftオブジェクトは同バージョンのGA到達後に非推奨となるため、移行計画の検討を今から始めることが推奨されます。

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

Before:SubscriptionDraft(ステートフル)createDraftaddLineupdateLineremoveLineaddDiscountapplyCodecommit+ updateDelivery など、合計12以上のMutationが必要。サーバー側にドラフト状態を保持。After:SubscriptionContractCalculation(ステートレス)① Calculate1つのMutationで希望する契約状態を送信② Poll(非同期)queryまたはwebhookでSuccess / Failure を確認③ Commit計算済みスナップショットを1 Mutationで永続化Shopifyが価格・税・割引・Functionsをサーバーサイドで計算し、不変のプレビュー(明細・配送・税・関税・割引合計)を返却。状態はクライアント提供のため、省略したフィールドは自動保持。変更分だけ送信すればよい。

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

課題
サブスク契約の商品ラインを変更するたびに12以上のMutationを順番に呼ぶ必要があり、実装が複雑でエラーハンドリングが困難だった。
打ち手
subscriptionContractUpdateCalculate に変更後の契約状態を一括送信し、ポーリングでSuccessを確認してから subscriptionContractCalculationCommit を呼ぶだけで完結させる。
効果
実装コードが大幅に削減でき、状態管理の複雑さを排除。部分的な更新失敗によるデータ不整合リスクを低減できる。
技術メモ
更新時に省略したフィールドは自動的に保持されるため、差分のみ送信すればよい。APIバージョン 2026-10 RC 以降で利用可能。
課題
チェックアウトと定期購入の価格・税計算が別エンジンで動いていたため、購読者が見る価格と実際の課金額が一致しないケースが発生していた。
打ち手
新APIはShopifyのC1チェックアウトエンジンを共有するため、Commitまでの不変プレビューでライン・配送・税・関税・割引の合計を事前確認できる。
効果
チェックアウト・ドラフトオーダー・定期請求の計算ロジックが統一され、購読者へ表示する金額と請求額の乖離を解消できる。
技術メモ
元記事には計算不一致が起きていた具体的なケースの詳細記載なし。最終確認は公式ドキュメントを参照のこと。
課題
バンドル商品をサブスクリプション契約に組み込めず、カートトランスフォームや配送カスタマイズFunctionsも契約編集に適用できなかった。
打ち手
新APIはC1エンジン経由のため、バンドル商品・カートトランスフォーム・配送カスタマイズFunctions・価格・税のアライメントが契約編集でも利用可能になる。
効果
サブスク専用の機能追加を待たずに、チェックアウト新機能を契約編集でも即時活用できる体制になる。
技術メモ
SubscriptionDraftオブジェクトは新APIのGA後も残るが、これらの新機能には対応しない。新機能を使うには移行が必須。

3技術者目線のポイント

項目 内容
対象APIバージョン 2026-10 リリース候補(RC)で早期アクセス開始。安定版も 2026-10 の予定。
影響を受けるアプリ SubscriptionDraftオブジェクトを使って契約を作成・更新・編集しているアプリ。契約の読み取りや subscriptionContractActivate / subscriptionContractPause などステータス変更のみのアプリは影響なし。
新Mutation・Query Calculate: subscriptionContractCreateCalculate / subscriptionContractUpdateCalculate / subscriptionBillingCycleContractEditCalculate。Poll: subscriptionContractCalculation query または webhooks(subscription_contract_calculations/succeed, subscription_contract_calculations/fail)。Commit: subscriptionContractCalculationCommit
移行方針 両APIは共存するため段階的移行が可能。ただし本番統合は 2026-10 安定版リリース後まで待つことが推奨されている。
SubscriptionDraftの今後 2026-10 GAと同時に非推奨(deprecated)予定。利用は継続できるが、バンドル・Functions連携・新チェックアウト機能などの新機能には対応しない。
ライフサイクル詳細

Calculate Mutationは即時ではなく SubscriptionContractCalculationPending を返す非同期設計。PollingまたはWebhookでSuccessを待ってからCommitする。SuccessとFailureの両Webhookが用意されている。

移行ガイドの存在

Shopify公式が全項目をカバーした移行ガイドを公開済み(元記事にリンクあり)。「Migrate to the SubscriptionContractCalculation object」および「Build subscription contracts」ドキュメントを参照。

対応タイムライン今ここ早期アクセス2026-10 RC安定版 GA2026-10SubscriptionDraft非推奨(GA同時)

サブスクリプション契約管理アプリは、12以上のドラフトMutationを3ステップのCalculate-Poll-Commitに置き換えることで、チェックアウトと一貫した価格計算・バンドル・Functions連携が利用可能になります。

Source: https://shopify.dev/changelog/subscription-contract-calculation-api-now-available-in-early-access | 公開日: 2026年7月27日