STOREFRONT API

Storefront APIカート割引フィールド刷新【2026-07】

非推奨フィールドへの対応と新フィールドへの移行で、割引額を正確に・型安全に取得できるようになります

DEPRECATEDcart.discountAllocationsdiscountApplication(配分額が返る/型情報なし)移行NEW FIELDS (2026-07)● cart.discountApplications● sourceDiscountApplication(正確な割引額)● totalAllocatedAmount(カート全体の合計)● cart.deliveryGroups[].discountAllocations● lineLevelOnly 引数(ラインのみ or 全て)

APIバージョン 2026-07 より、Storefront APIのカート割引関連フィールドに非推奨化と新フィールド追加が行われます。ストアフロントアプリやカスタムヘッドレスコマースを開発している すべてのShopify開発者 が対象です。旧フィールドは引き続き動作しますが、正確な割引額・型情報を取得するには新フィールドへの移行が必要です。

1変更内容のBefore / After図解

割引フィールド Before / AfterBEFORE(〜2026-04)cart.discountAllocations→ 全割引を一括取得(廃止予定)discountApplication.value→ 配分額を返す(例: $10割引→$4と表示)lines[].discountAllocations→ 製品割引のみ / 引数なし(配送割引の配分フィールドなし)→ 配送グループ単位で取得不可AFTER(2026-07〜)cart.discountApplications→ 全割引(製品/配送/注文)を一覧取得sourceDiscountApplication.value→ 設定額を正確に返す($10割引→$10)lines[].discountAllocations(lineLevelOnly:)→ 引数でライン限定 or 全割引を選択deliveryGroups[].discountAllocations→ 配送グループ単位で割引配分を取得totalAllocatedAmount→ カート全体への合計割引額を返す

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

課題
カートに適用された割引コードの設定金額をUIに表示したいが、discountApplication.value が行ごとの配分額($4など)を返してしまい、実際の割引設定($10)と食い違う
打ち手
sourceDiscountApplication { value ... on CartCodeDiscountApplication { code } } に切り替えることで、設定割引額と割引コード文字列を同時に取得できる
効果
カート画面の「割引コード適用済み:-$10」の表示が正確になり、顧客の信頼向上につながる
技術メモ
GraphQLフラグメントを使い ... on CartCodeDiscountApplication... on CartAutomaticDiscountApplication で型ごとのフィールドを取得する
課題
送料無料キャンペーンをカート画面に表示したいが、これまで配送割引の配分情報をカートAPIから直接取得する手段がなかった
打ち手
cart.deliveryGroups[].discountAllocations を新たにクエリに追加することで、配送グループごとに適用された割引を個別取得できる
効果
「この注文は送料無料です」バナーをAPIデータだけで動的に出し分けられる。別途在庫・配送ロジック側での判定が不要になる
技術メモ
cart.discountApplications と合わせて使い、割引の種類(製品/配送/注文)をフィルタしてUIを出し分ける設計が推奨
課題
複数割引が同一カートラインに混在する場合(自動割引+送料割引など)、lineLevelOnly: true(デフォルト)だと製品割引しか見えず、合計節約額の表示が不正確になる
打ち手
cart.lines[].discountAllocations(lineLevelOnly: false) を指定することで、そのラインに配分されたすべての割引(配送割引含む)を一括取得できる
効果
「このアイテムで合計$X節約」という表示が正確になり、購買意欲を高める透明性の高いUI実装が可能になる
技術メモ
既存クエリはデフォルト(lineLevelOnly: true)のままなので後方互換性が保たれる。新機能として追加する際のみ引数を明示する

3技術者目線のポイント

観点 詳細 対応優先度
非推奨フィールド cart.discountAllocationscartDiscountAllocation.discountApplication が非推奨に。旧フィールドは即時削除ではないが移行推奨 HIGH
value の挙動修正 discountApplication.value はライン配分額を誤返却。新 sourceDiscountApplication.value は設定額を正確に返す。UIへの影響を必ず確認すること 要検証
後方互換性 lineLevelOnly 引数のデフォルトは true のため、既存の lines[].discountAllocations クエリは変更なしで動作する LOW
型安全なアクセス sourceDiscountApplication はGraphQLのUnion型。... on CartCodeDiscountApplication などのフラグメントで型別フィールドに安全にアクセスできる 推奨
テスト対象 パーセンテージ割引・固定金額割引・送料無料割引の3パターンで計算結果を必ず検証するよう公式が推奨している 必須
移行チェックリスト
  • cart.discountAllocationscart.discountApplications へ置換
  • discountApplicationsourceDiscountApplication へ置換
  • ✅ 製品割引 → lines[].discountAllocations(lineLevelOnly: false)
  • ✅ 配送割引 → deliveryGroups[].discountAllocations
  • ✅ 3種の割引タイプでテスト実施
totalAllocatedAmount の仕様

$10の割引がラインAに$4・ラインBに$6と分配された場合、両方のラインtotalAllocatedAmount: $10 が返ります。これは「このラインに配分された額」ではなく「この割引がカート全体で合計いくら効いているか」を示す値です。UI設計時に二重計上しないよう注意が必要です。

APIバージョン2026-07への移行で、カートの割引情報を製品・配送・注文レベルで型安全かつ正確に取得できるようになり、透明性の高い割引UIの実装コストを大幅に削減できます。

※本記事はShopify公式ではなく独立系メディア「compass」による解説記事です。仕様の最終確認は必ず公式ドキュメントでご確認ください。

Source: https://shopify.dev/changelog/new-discount-fields-in-the-storefront-cart-graphql-api | 公開日: 2026年4月10日