Market-driven shipping Admin API 配送設定を「マーケットに直付け」できる新 API
原題: Market-driven shipping Admin API
- Markets
- Shipping
- Admin API
- GraphQL
- Delivery
- Fulfillment
- 越境EC
- 新機能
図解 : Market-driven shipping Admin API(マーケット単位で配送を設定できる新 API) Admin GraphQL API / 2026-07 Market-driven shipping Admin API 配送設定を「マーケットに直付け」できる新 API API バージョン 2026-07 から、Market オブジェクトに delivery.shipping が追加。別途 shipping profile を作らなくても、マーケットごとに配送料・配送方式を GraphQL で設定できるようになった。 このページの構成 そもそも何が変わるのか(30秒で理解) 仕組み図解 : Market に配送がぶら下がる 4つの配送オプションタイプ 継承モデル : null / isEnabled / removeShipping 操作一覧(読み取り・作成・更新・削除) 必要な権限スコープ 技術者が押さえるべき5つのポイント 業務に活かせる3つのユースケース 提案で使える1行サマリ 1 そもそも何が変わるのか これまで、マーケットごとに配送戦略を変えるには 別々の shipping profile リソースを作る 必要があった。 2026-07 からは、配送設定を Market オブジェクトに直接( Market.delivery.shipping ) 持たせられる。アプリはプロファイルを増やさずにマーケット別の配送を実装できる。 従来 : 別リソースで紐付け マーケット別に配送を出し分けたいとき、独立した shipping profile を作って対応。リソースが分散し、アプリの管理が複雑化。 新 : マーケットに直付け Market.delivery.shipping で読み書き。 marketCreate / marketUpdate の既存ミューテーションで完結。 2 仕組み図解 : Market に配送がぶら下がる ルート直下のクエリ/ミューテーションは無い。 市場配送設定に専用のトップレベル操作は存在せず、読み書きは必ず Market ・ marketCreate ・ marketUpdate を経由する。 3 4つの配送オプションタイプ 配送オプションは DeliveryOptionDefinitionCreateInput / DeliveryOptionDefinitionUpdateInput で管理。API がサポートするタイプは次の4つ。 定額(Flat) DeliveryFlatRateOptionDefinition 固定価格。rate group を複数持てる 金額別(Value) DeliveryValueBasedOptionDefinition カート金額でレート決定。複数 group 可 重量別(Weight) DeliveryWeightBasedOptionDefinition 重量でレート決定。group は ちょうど1つ 配送業者計算(Carrier) DeliveryCarrierCalculatedOptionDefinition carrier service が算出。group は 単一 各オプションは currency と isActive を持ち、任意で freeDeliveryMinimumValue (送料無料になる下限金額)を設定できる。rate group は conditions で特定の商品コレクション・出荷元ロケーションに限定 可能。 4 継承モデル : null / isEnabled / removeShipping 「設定しない」「設定はするが表示しない」「親から継承に戻す」の3つを、それぞれ別のフィールドで表現する。混同注意。 状態 指定 顧客への見え方 未設定 = 親から継承 Market.delivery.shipping が null 継承 親マーケットの配送を継承。親が無いマーケットはショップ既定(=配送なし)を継承 設定は保持・表示のみ停止 shipping.isEnabled: false 非表示 チェックアウトで配送オプションを出さない。アプリ管理の配送も同時に無効化 マーケット固有設定を削除 delivery.removeShipping: true 継承に復帰 自前の設定を捨て、親から配送を継承する状態に戻す isEnabled: false と removeShipping: true は別物。前者は 設定を残したまま表示だけ止める 、後者は 設定自体を消して継承に戻す 。「一時的に売らない」と「この市場の独自ルールを撤廃」で使い分ける。 5 操作一覧(読み取り・作成・更新・削除) やりたいこと 使う入力フィールド マーケットの配送設定を 読む Market.delivery.shipping (isEnabled / activeOptionDefinitionsCount / optionDefinitions) 作成時に配送を 追加 MarketCreateInput.delivery.shipping 既存マーケットの配送を 更新 MarketUpdateInput.delivery.shipping マーケット単位の配送を 削除(継承へ) MarketUpdateInput.delivery.removeShipping オプションを 新規作成 shipping.optionDefinitionsToCreate (flatRate / valueBased / weightBased / carrierCalculated) オプションを 更新 optionDefinitionsToUpdate (id 指定。flat は rateGroupsToUpdate で個別更新可) オプションを 削除 optionDefinitionsToDelete (オプション ID の配列) Flat と Value-based は rate group を 複数 持てる。Weight-based は rate group が ちょうど1つ 、Carrier-calculated も rate group は 単一 で既存の carrier service を参照する( carrierServiceId / autoIncludeNewServices / percentageAdjustment )。 6 必要な権限スコープ 読み取り(Query) read_markets が必要。 書き込み(Mutation) read_markets と write_markets の 両方 が必要。 7 技術者が押さえるべき5つのポイント 1. プロファイル不要でマーケット別配送 別リソース(shipping profile)を作らずに、Market に配送を直接ぶら下げられる。アプリは異なるマーケットへ異なる配送戦略を、より少ないリソースで実装できる。 2. トップレベル操作が無い 市場配送のためのルートクエリ/単独ミューテーションは存在しない。必ず Market / marketCreate / marketUpdate 経由でアクセスする設計。 3. null は「継承」を意味する shipping が null は「未設定」ではなく 親から継承 。親が無ければショップ既定(配送なし)を継承。空扱いでロジックを組むと誤判定になる。 4. 無効化と削除を混同しない isEnabled:false は設定を残して表示だけ停止(アプリ管理の配送も止まる)。 removeShipping:true は設定を消して継承へ復帰。挙動が根本的に違う。 5. rate group の個数制約はタイプで異なる Flat / Value-based は複数の rate group を持てるが、 Weight-based はちょうど1つ 、 Carrier-calculated は単一 。さらに rate group は conditions で 商品コレクション や 出荷元ロケーション に限定できる。実装時はタイプごとに group 数のバリデーションを分岐させる。 8 業務に活かせる3つのユースケース USE CASE 1 越境 EC : 国ごとに配送料テーブルをコードで一括管理 課題 複数マーケットを持つストアで、国ごとに定額・重量別・金額別の送料を出し分けたいが、shipping profile が乱立して保守がつらい。 打ち手 各 Market に marketUpdate で delivery.shipping を設定。定額(Flat)と重量別(Weight)をマーケット別に投入し、設定を IaC 的に GraphQL スクリプトで管理。 効果 プロファイル増殖を回避し、配送ルールをコードレビュー可能な単一ソースに集約。 技術メモ Weight-based は rate group がちょうど1つの制約に注意。Flat は複数 group + conditions でコレクション別も可。 USE CASE 2 カート金額連動の送料無料キャンペーンをマーケット別に 課題 「◯◯円以上で送料無料」を市場ごとに閾値・通貨を変えて出したいが、手動設定はミスと運用負荷が高い。 打ち手 Value-based オプションで min/max 金額別レートを組み、 freeDeliveryMinimumValue で市場ごとの送料無料下限を設定。キャンペーン期間だけ API で切り替え。 効果 市場別の送料無料ラインを CVR 施策としてプログラム的に運用。終了時は optionDefinitionsToUpdate で戻す。 技術メモ 通貨は各オプションの currency と一致させる。金額は amount / currencyCode で明示。 USE CASE 3 配送業者リアルタイム料金を市場別に接続+マージン調整 課題 特定市場だけ配送業者の実費計算レートを見せたい。新サービス追加のたびの手作業も避けたい。 打ち手 Carrier-calculated オプションで既存の carrierServiceId を参照。 autoIncludeNewServices:true で新サービス自動取り込み、 percentageAdjustment でマージンを上乗せ。 効果 市場ごとに実費ベース送料+任意マージンを自動運用。配送コストの取りこぼしを防ぐ。 技術メモ Carrier-calculated は rate group が単一。carrier service は事前に用意が必要。 9 提案で使える1行サマリ 「2026-07 の Admin API で、配送を Market に直付け できるように。 shipping profile を増やさず、定額/金額別/重量別/配送業者計算の4タイプを マーケット単位 で設定。 null は親から継承・isEnabled:false は表示停止・removeShipping で継承復帰 の3状態を使い分ける。」 source : shopify.dev / changelog / market-driven shipping Admin API generated 2026-07-01