API CHANGE

割引UIエクステンションでサブスク割引サイクルを制御できるようになりました

purchaseType / recurringCycleLimit がdiscountsプラグインに追加。GraphQL専用だった設定がマーチャントUIへ開放。

BEFOREGraphQL Admin APIpurchaseTypeAPI直接操作のみrecurringCycleLimitAPI直接操作のみMerchant UI設定不可 ✗AFTERdiscounts PluginpurchaseTypeONE_TIME / SUBSCRIPTION / ALLrecurringCycleLimit0=無制限 / n=n回まで適用Merchant UIマーチャントが直接設定可 ✓DISCOUNT TYPESDiscountCodeAppDiscountAutomaticAppチェックアウト時にpurchase type filteringで自動適用制御

Shopify discount UIエクステンションを構築するアプリ開発者とそのマーチャントを対象に、2026年6月17日より有効です。従来はGraphQL Admin APIを直接操作しなければ設定できなかった「割引の適用対象(単発/サブスク/両方)」と「サブスク割引のサイクル数上限」が、discountsプラグインを通じてUIエクステンション上から設定できるようになりました。既存のエクステンションへの後方互換は維持されており、開発者は任意のタイミングで新フィールドを追加するだけで利用開始できます。

OVERVIEW

01何が変わったのか:Before / After

BEFOREApp DeveloperGraphQL Mutation を直接呼ぶpurchaseType / recurringCycleLimitハードコード or バックエンド側で管理MerchantUIから変更できない ✗AFTERApp Developerdiscountsプラグインにフィールド追加のみdiscounts PluginpurchaseType + recurringCycleLimit を受け取るMerchantUIで購入タイプ・サイクルを直接設定 ✓NEWFIELDS

02新フィールドの詳細

purchaseType

対象:割引の適用購入タイプを制御するフィールド。
値:ONE_TIME(単発購入)/ SUBSCRIPTION(サブスクのみ)/ ALL(両方)
効果:チェックアウト時にpurchase type filteringが走り、条件外カートには割引が適用されない。

recurringCycleLimit

対象:サブスク割引が何回の請求サイクルに適用されるかを制御するフィールド。
値:0 = 無制限 / 正の整数n = 最初のn回のみ適用(例: 4なら初回〜4回目まで)
効果:4回目以降の請求には割引が自動的に停止。

両フィールドは DiscountCodeAppDiscountAutomaticApp の両ディスカウントタイプで動作します。チェックアウトでの適用可否は purchase type filtering によってShopify側が自動で制御します。

USE CASES

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

課題
サブスク専用の初回割引を提供したいが、単発購入にも誤って割引コードが使われてしまいコストが膨らんでいた。
打ち手
discountsプラグインで purchaseType: SUBSCRIPTION を設定し、サブスク購入以外のカートでは割引が発動しないよう制御する。マーチャントがUIから切り替えられるので運用コストも削減。
効果
サブスク新規獲得に特化した割引施策をコード変更なしで実現。割引原資の無駄遣いを防止。
技術メモ
チェックアウト時にShopify側でpurchase type filteringが走るため、アプリ側で購入タイプを検証するロジックは不要。
課題
「最初の3ヶ月だけ割引」という期間限定サブスク割引キャンペーンを実施したいが、バックエンドAPIを介した設定変更が都度必要でマーチャントが自走できなかった。
打ち手
recurringCycleLimit: 3 をdiscountsプラグインのUIに組み込む。マーチャントがキャンペーン作成画面で「割引を適用するサイクル数」を数値入力できるようにする。
効果
開発者の介在なしにマーチャントが任意の「n回限定割引」を作成・変更できる。4回目以降は自動で割引停止されるため手動解除も不要。
技術メモ
recurringCycleLimit: 0 は無制限扱い。サブスク継続率UPを目的とした永続割引にも対応可能。
課題
単発購入とサブスク購入の両方を扱う総合ECで、どの購入タイプにでも使える汎用割引コードを発行しつつ、サブスクには追加で「初回5サイクル割引」を適用したい。
打ち手
DiscountAutomaticAppで purchaseType: ALL の割引と purchaseType: SUBSCRIPTION + recurringCycleLimit: 5 の割引を使い分け、UIエクステンション上でマーチャントが切り替えられるよう設計する。
効果
単発・サブスクを混在販売する複雑な割引戦略をノーコードで管理。サブスク獲得コストを最適化しながら単発顧客への割引も維持できる。
技術メモ
DiscountCodeAppとDiscountAutomaticAppの両タイプに対応しているため、コードベース式・自動適用式どちらの割引でも同じプラグイン設定が利用可能。
DEVELOPER NOTES

04技術者目線のポイント

discount UI extension設定UIをここに実装破壊的変更なしdiscounts pluginpurchaseTyperecurringCycleLimitShopify Checkoutpurchase type filtering自動適用制御DiscountCodeAppDiscountAutomaticAppGraphQL Admin API引き続き利用可能DiscountAutomaticAppInputAPIドキュメント参照
項目 内容
対象ディスカウントタイプ DiscountCodeApp / DiscountAutomaticApp(両方)
追加フィールド purchaseType(購入タイプ制御)/ recurringCycleLimit(サイクル数制限)
移行作業 不要。既存エクステンションへの後方互換は維持。新フィールドを追加した場合のみ有効化される。
チェックアウトでの適用制御 Shopify側のpurchase type filteringが自動で処理。アプリ側に追加のバリデーションロジックは不要。
GraphQL Admin API 引き続き利用可能。UIエクステンション経由に切り替える義務はなし。
参照ドキュメント DiscountAutomaticAppInput(公式APIドキュメントを確認)
recurringCycleLimit: 0 無制限を意味する。サブスク全期間に割引を適用し続ける場合に使用。
サブスク割引の「対象購入タイプ」と「適用サイクル数」をマーチャント自身がUIで管理できるようになったことで、割引設計の自由度と運用効率が大幅に向上します。

Source: https://shopify.dev/changelog/new-purchasetype-and-recurringcyclelimit-fields-available-in-the-discount-ui-extension-api | 公開日: 2026年6月17日