Admin GraphQL API / 2026-07

マーケット単位でディスカウントを出し分け
Target discounts to specific markets

DiscountContextInput に markets が追加。地域マーケット/実店舗ロケーション/B2B カンパニーロケーションごとにディスカウントを効かせられる。全ディスカウントタイプ対応(Basic/BXGY/App/Free Shipping、自動・コード両方)。

このページの構成
  1. そもそも何が変わるのか(30秒で理解)
  2. 仕組み図解 : マーケット種別と継承ルール
  3. 対応するディスカウントタイプ
  4. 既存の eligibility との関係(排他制約)
  5. API 利用イメージ
  6. バージョンの境界 : 2026-07 が分岐点
  7. 技術者が押さえるべき5つのポイント
  8. 業務に活かせる3つのユースケース
  9. 提案で使える1行サマリ

1そもそも何が変わるのか

これまでディスカウントの対象を絞る軸は 「全員」「顧客セグメント」「個別顧客」 の 3 つだった。
今回 「マーケット(地域/実店舗/B2B カンパニーロケーション)」 が 4 つ目の軸として追加された。

従来 : 「誰に」しか絞れない

all / customerSegments / customers の 3 軸で絞り込み。「どの市場で」 という地理・チャネル軸での絞り込みは無かった。

新しく : 「どこで」も絞れる

markets に対象マーケットを指定するだけで、地域別/実店舗別/B2B 取引先別にディスカウントを出し分けできる。

2仕組み図解 : マーケット種別と継承ルール

3 種類のマーケットは「別の世界」 : ディスカウントは跨いで継承されない ① 地域マーケット(Regional) North America Canada USA Mexico 親に付ければ子に自動適用 例 : North America → Canada 国・通貨・言語の単位 ② 実店舗ロケーション(Retail) 渋谷店 新宿店 店舗単位の販促が可能 POS と連動 店舗別キャンペーン用 ③ B2B カンパニーロケーション 取引先 A 本社 取引先 B 支社 取引先ごとの個別単価 B2B 専用 企業別キャンペーン
継承は「同種マーケット内」だけ。地域マーケットに付けたディスカウントは B2B や Retail には流れない。同種マーケット内では親→子の継承あり(例 : 「North America」に付ければ子の「Canada」にも自動適用)。

3対応するディスカウントタイプ

全ディスカウントタイプ対応 : 自動ディスカウント・コードベースの両方で markets が指定できる。

%
Basic
通常の割引
B G
BXGY
買えば貰える
App
アプリ拡張型
Free Shipping
送料無料
自動ディスカウント・コードベースのどちらでもマーケット指定が可能。例外なし。

4既存の eligibility との関係(排他制約)

パターン A : マーケットで絞る markets : [Japan, Korea] + all / customers は併用可 ⭕ 「日本の特定顧客」みたいな指定 OK パターン B : 顧客セグメントで絞る customerSegments : [VIP] markets との同時指定は不可 ❌ 「日本の VIP セグメント」はこの仕組みでは表現不可
eligibility の組み合わせ使えるか備考
markets のみ OK マーケット単位でブロードに適用
markets + all OK マーケット内の全顧客に適用
markets + customers OK マーケット内の指定顧客に適用
markets + customerSegments 不可 マーケットと顧客セグメントは排他

5API 利用イメージ

作成・更新時 : DiscountContextInput に markets を渡す

# mutation 抜粋(イメージ)
discountCodeBasicCreate(
  basicCodeDiscount: {
    title: "JP Spring Sale",
    discountContext: {
      markets: ["gid://shopify/Market/123"]   # ← 今回追加
      # customers / customerSegments / all はここに並ぶ
    }
    ...
  }
)

マーケット側から逆引き

# Market から紐づくディスカウントを取得
{
  market(id: "gid://shopify/Market/123") {
    discountsCount
    discounts(first: 50) { nodes { ... } }
  }
}

ディスカウント一覧をマーケットで絞り込み

広く

context:market

「何らかのマーケット eligibility が付いているディスカウント」を一括で取得する用。

狭く

market_ids

特定マーケットに紐づくディスカウントだけを discountNodes から取得する用。

※ 上記コードは記事の説明文に基づくイメージ図。正確なフィールド名・引数は Admin GraphQL API リファレンスで要確認。

6バージョンの境界 : 2026-07 が分岐点

〜 2026-04 2026-07 2026-10 以降 マーケット eligibility は フィルタで除外される node/ID 取得でも表現不能 マーケット eligibility 解禁 DiscountContextInput.markets この版以降で利用可能 継続利用可能 最新版で機能維持
API バージョンが 2026-07 より古い場合、マーケット eligibility 付きディスカウントは「無いことにされて」フィルタアウトされる。node クエリでも、ID 直接指定でも取得できない。古いバージョンを使い続けている自社/パートナーアプリは 「ディスカウントが取れない/取りこぼす」事故 の可能性があるため、本機能を使う運用に入る前にバージョンアップ計画必須。

7技術者が押さえるべき5つのポイント

markets

1. 入口は DiscountContextInput.markets

既存の eligibility と並列に増えた新オプション。Basic/BXGY/App/Free Shipping 全タイプ・自動/コード両方に乗る。

市場 Seg

2. markets と customerSegments は排他

「日本マーケットの VIP セグメント」のような AND 条件はこの機能だけでは作れない。両方欲しい場合はマーケット側で済ませる、もしくはマーケット内に絞った顧客リスト(customers)で代替。

3. 継承は同種マーケット内のみ

親リージョン(例 : North America)に付与すれば子(Canada)にも継承。ただし 地域 ↔ B2B ↔ Retail を跨ぐ継承は無い。種別を意識した設計が必要。

Market discounts

4. Market から逆引きできる

Market.discountsdiscountsCount で、マーケットに紐づくディスカウント一覧/件数を直接取れる。マーケット別のキャンペーン棚卸しが楽になる

2026-07 未満は NG

5. API バージョン 2026-07 未満は要注意

古いバージョンを叩いているアプリ・連携 ETL は、マーケット eligibility 付きディスカウントを そもそも取得できない(暗黙にフィルタアウトされる)。注文側・分析側で「ディスカウントが消えて見える」事故が起きるので、本機能を使う前に 全クライアントのバージョン棚卸し をすること。

8業務に活かせる3つのユースケース

JP -15% US 送料0 EU BXGY
USE CASE 1

越境 EC で「国別キャンペーン」を 1 ストアで運用

課題
1 つの Shopify ストアで複数国向けに売っているが、国ごとに走らせたい販促が違う(日本は母の日 15%OFF、EU はサマーセールで BXGY、US は送料無料キャンペーン)。これまでは別ストア分割や複雑なコード運用で逃げていた。
打ち手
各キャンペーンを markets 指定で作成。北米全体は「North America」に付ければカナダ・USA・メキシコまで自動継承。
効果
ストア分割不要・コード乱立解消、キャンペーン棚卸しは Market.discounts で逆引き一発。
技術メモ
マーケット種別を跨ぐ継承は無い点に注意。地域キャンペーンを B2B 取引先にも効かせたい時は別途 B2B 側にも作成。
渋谷 新宿 梅田 -20%
USE CASE 2

実店舗(POS)の店舗別販促を仕組み化

課題
渋谷店だけ閉店セール、新宿店だけ新装オープン記念といった 店舗単位の販促 を、毎回 POS 側で手作りしていた。
打ち手
Retail マーケット(店舗ロケーション)に対してディスカウントを作成。コード/自動どちらでも乗る。
効果
POS 個別オペレーションが不要。スタッフは普通に会計するだけで対象店舗だけに割引が適用される。本部から一元管理。
技術メモ
店舗別の効果測定は Market.discounts + 注文の payment/store 情報で集計。ロケーション識別の整合性を運用ルール化。
取引先A 取引先B 取引先C 取引先D 各社個別レート
USE CASE 3

B2B 取引先ごとの「契約料率」をディスカウントで表現

課題
B2B 取引先ごとに契約上の値引き率が違う(A 社は 15%、B 社は 20%、C 社は送料無料)。Catalog だけで表現しきれないキャンペーンの差し込みもある。
打ち手
各カンパニーロケーションに markets 指定でディスカウントを紐付け。期間限定キャンペーンも取引先ごとに上乗せ可能。
効果
カタログ価格を歪めずに取引先別の最終単価を表現。営業側は 「契約ロケーション = ディスカウント設定の単位」 として整理しやすい。
技術メモ
顧客セグメントとの併用は不可。「VIP の B2B 取引先のみ」のような表現は、対象会社のロケーションを直接列挙する形にする。

9提案で使える1行サマリ

「ディスカウントを 地域マーケット/実店舗/B2B 取引先 単位で出し分けできるようになった。
全ディスカウントタイプ対応、親マーケットからの自動継承あり、ただし マーケットと顧客セグメントは排他API バージョン 2026-07 以降が必須
越境 EC・多店舗 POS・B2B 契約料率の運用がストア分割なしで一元化できる。」