Admin GraphQL API / 2026-07
マーケット単位でディスカウントを出し分け
Target discounts to specific markets
DiscountContextInput に markets が追加。地域マーケット/実店舗ロケーション/B2B カンパニーロケーションごとにディスカウントを効かせられる。全ディスカウントタイプ対応(Basic/BXGY/App/Free Shipping、自動・コード両方)。
1そもそも何が変わるのか
これまでディスカウントの対象を絞る軸は 「全員」「顧客セグメント」「個別顧客」 の 3 つだった。
今回 「マーケット(地域/実店舗/B2B カンパニーロケーション)」 が 4 つ目の軸として追加された。
従来 : 「誰に」しか絞れない
all / customerSegments / customers の 3 軸で絞り込み。「どの市場で」 という地理・チャネル軸での絞り込みは無かった。
新しく : 「どこで」も絞れる
markets に対象マーケットを指定するだけで、地域別/実店舗別/B2B 取引先別にディスカウントを出し分けできる。
2仕組み図解 : マーケット種別と継承ルール
継承は「同種マーケット内」だけ。地域マーケットに付けたディスカウントは B2B や Retail には流れない。同種マーケット内では親→子の継承あり(例 : 「North America」に付ければ子の「Canada」にも自動適用)。
3対応するディスカウントタイプ
全ディスカウントタイプ対応 : 自動ディスカウント・コードベースの両方で markets が指定できる。
自動ディスカウント・コードベースのどちらでもマーケット指定が可能。例外なし。
4既存の eligibility との関係(排他制約)
| 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 が分岐点
API バージョンが 2026-07 より古い場合、マーケット eligibility 付きディスカウントは「無いことにされて」フィルタアウトされる。node クエリでも、ID 直接指定でも取得できない。古いバージョンを使い続けている自社/パートナーアプリは 「ディスカウントが取れない/取りこぼす」事故 の可能性があるため、本機能を使う運用に入る前にバージョンアップ計画必須。
7技術者が押さえるべき5つのポイント
1. 入口は DiscountContextInput.markets
既存の eligibility と並列に増えた新オプション。Basic/BXGY/App/Free Shipping 全タイプ・自動/コード両方に乗る。
2. markets と customerSegments は排他
「日本マーケットの VIP セグメント」のような AND 条件はこの機能だけでは作れない。両方欲しい場合はマーケット側で済ませる、もしくはマーケット内に絞った顧客リスト(customers)で代替。
3. 継承は同種マーケット内のみ
親リージョン(例 : North America)に付与すれば子(Canada)にも継承。ただし 地域 ↔ B2B ↔ Retail を跨ぐ継承は無い。種別を意識した設計が必要。
4. Market から逆引きできる
Market.discounts/discountsCount で、マーケットに紐づくディスカウント一覧/件数を直接取れる。マーケット別のキャンペーン棚卸しが楽になる。
5. API バージョン 2026-07 未満は要注意
古いバージョンを叩いているアプリ・連携 ETL は、マーケット eligibility 付きディスカウントを そもそも取得できない(暗黙にフィルタアウトされる)。注文側・分析側で「ディスカウントが消えて見える」事故が起きるので、本機能を使う前に 全クライアントのバージョン棚卸し をすること。
8業務に活かせる3つのユースケース
USE CASE 1
越境 EC で「国別キャンペーン」を 1 ストアで運用
課題
1 つの Shopify ストアで複数国向けに売っているが、国ごとに走らせたい販促が違う(日本は母の日 15%OFF、EU はサマーセールで BXGY、US は送料無料キャンペーン)。これまでは別ストア分割や複雑なコード運用で逃げていた。
打ち手
各キャンペーンを markets 指定で作成。北米全体は「North America」に付ければカナダ・USA・メキシコまで自動継承。
効果
ストア分割不要・コード乱立解消、キャンペーン棚卸しは Market.discounts で逆引き一発。
技術メモ
マーケット種別を跨ぐ継承は無い点に注意。地域キャンペーンを B2B 取引先にも効かせたい時は別途 B2B 側にも作成。
USE CASE 2
実店舗(POS)の店舗別販促を仕組み化
課題
渋谷店だけ閉店セール、新宿店だけ新装オープン記念といった 店舗単位の販促 を、毎回 POS 側で手作りしていた。
打ち手
Retail マーケット(店舗ロケーション)に対してディスカウントを作成。コード/自動どちらでも乗る。
効果
POS 個別オペレーションが不要。スタッフは普通に会計するだけで対象店舗だけに割引が適用される。本部から一元管理。
技術メモ
店舗別の効果測定は Market.discounts + 注文の payment/store 情報で集計。ロケーション識別の整合性を運用ルール化。
USE CASE 3
B2B 取引先ごとの「契約料率」をディスカウントで表現
課題
B2B 取引先ごとに契約上の値引き率が違う(A 社は 15%、B 社は 20%、C 社は送料無料)。Catalog だけで表現しきれないキャンペーンの差し込みもある。
打ち手
各カンパニーロケーションに markets 指定でディスカウントを紐付け。期間限定キャンペーンも取引先ごとに上乗せ可能。
効果
カタログ価格を歪めずに取引先別の最終単価を表現。営業側は 「契約ロケーション = ディスカウント設定の単位」 として整理しやすい。
技術メモ
顧客セグメントとの併用は不可。「VIP の B2B 取引先のみ」のような表現は、対象会社のロケーションを直接列挙する形にする。
9提案で使える1行サマリ
「ディスカウントを 地域マーケット/実店舗/B2B 取引先 単位で出し分けできるようになった。
全ディスカウントタイプ対応、親マーケットからの自動継承あり、ただし マーケットと顧客セグメントは排他・API バージョン 2026-07 以降が必須。
越境 EC・多店舗 POS・B2B 契約料率の運用がストア分割なしで一元化できる。」