Storefront APIカート割引フィールド刷新【2026-07】
非推奨フィールドへの対応と新フィールドへの移行で、割引額を正確に・型安全に取得できるようになります
APIバージョン 2026-07 より、Storefront APIのカート割引関連フィールドに非推奨化と新フィールド追加が行われます。ストアフロントアプリやカスタムヘッドレスコマースを開発している すべてのShopify開発者 が対象です。旧フィールドは引き続き動作しますが、正確な割引額・型情報を取得するには新フィールドへの移行が必要です。
1変更内容のBefore / After図解
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.discountAllocations と cartDiscountAllocation.discountApplication が非推奨に。旧フィールドは即時削除ではないが移行推奨 |
HIGH |
| value の挙動修正 | 旧 discountApplication.value はライン配分額を誤返却。新 sourceDiscountApplication.value は設定額を正確に返す。UIへの影響を必ず確認すること |
要検証 |
| 後方互換性 |
lineLevelOnly 引数のデフォルトは true のため、既存の lines[].discountAllocations クエリは変更なしで動作する |
LOW |
| 型安全なアクセス |
sourceDiscountApplication はGraphQLのUnion型。... on CartCodeDiscountApplication などのフラグメントで型別フィールドに安全にアクセスできる |
推奨 |
| テスト対象 | パーセンテージ割引・固定金額割引・送料無料割引の3パターンで計算結果を必ず検証するよう公式が推奨している | 必須 |
- ✅
cart.discountAllocations→cart.discountApplicationsへ置換 - ✅
discountApplication→sourceDiscountApplicationへ置換 - ✅ 製品割引 →
lines[].discountAllocations(lineLevelOnly: false) - ✅ 配送割引 →
deliveryGroups[].discountAllocations - ✅ 3種の割引タイプでテスト実施
$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日






Share:
DraftOrderLineItem.gramsフィールド廃止と移行手順【2026-07】