How Discounts Behave on Shopify Booking Products
書いた人 大島慎平

Shopify の予約サイトでクーポンがおかしな効き方をするのは、たいてい設定ミスではありません。Shopify の割引は「注文」に対して効く仕組みで、予約枠は「商品」として売られている。この2つがずれているせいで、予約に出したつもりのクーポンが物販に回り込んだり、2枠取った人に2回引かれたりします。この記事は、Shopify の予約でクーポンと割引をどう効かせるかだけを扱います。
Shopify の割引仕様は静かに変わるので、ここに書いた挙動は 2026年9月19日に Shopify 公式ヘルプセンター(日本語版)で確認したもの です。実装前にはリンク先を開いて、現在の記述と突き合わせてください。
この記事の守備範囲は「予約にクーポン・割引をどう効かせるか」です。次回予約そのものの取り方は 予約客をリピーターにする導線、回数券や物販を絡めた客単価の設計は 予約とECのクロスセル、予約フォームの追加項目は 予約オプションの設計 に分けてあります。
わたしは Shopify の予約アプリ「まるっと予約」を開発しています。予約枠を Shopify の商品として登録するタイプのアプリなので、ここで書く挙動はそのまま自分のアプリにも当てはまります。なお、まるっと予約は2026年3月公開で、レビューは3件(★5.0、2026年10月6日確認)です。3件とも、わたしがお付き合いのある事業者様にお願いして投稿していただいたもので、Built for Shopify も未取得です。実績で選ぶ段階のストアには、正直まだ薦めにくい状態です。
出典:Shopify App Store「まるっと予約|来店・イベント予約」(2026年9月19日確認)
Shopify予約のクーポンは、どこから設定する?
まず土台から。Shopify の割引は、追加アプリなしで管理画面の「ディスカウント」から作れます。種類は次の3つです。
- 01
割引額ディスカウント
割合(25%など)または定額を割り引く。特定の商品、特定のコレクション、注文全体のいずれかに適用できる - 02
Xを購入してYをゲット
購入条件を満たしたときに特典を出す。コード型と自動適用型の両方を選べる - 03
無料配送ディスカウント
送料を無料にする。予約だけのストアでは出番が少ない
予約枠に使うのは、ほぼ1番目の割引額ディスカウントです。作成の流れはこうなります。
- 1
ディスカウントを作成する
管理画面の「ディスカウント」から「ディスカウントを作成」を開き、「商品価格から割引」または「注文金額から割引」を選びます。予約枠だけを狙うなら「商品価格から割引」です。
- 2
方法を決める
「ディスカウントコード」か「自動ディスカウント」かをここで選びます。作成後に方法や種類を変更することはできません。変えたい場合は削除して作り直しになります。
- 3
適用対象を絞る
「適用対象」で「特定の商品」か「特定のコレクション」を選びます。ここを既定のままにすると、ストア内の物販商品にも割引が乗ります。
- 4
対象となる要件を決める
「すべてのお客様」「特定のお客様」「顧客セグメント」「マーケット」から選びます。初回限定を作りたいときに使うのは顧客セグメントです。
- 5
利用回数と有効期間を入れる
「このディスカウントを使用できる合計回数を制限する」で先着人数を、「お客様1人につき1回に制限する」で1人1回を設定します。開始日と終了日はストアのタイムゾーンで解釈されます。
- 6
決済せずにテストする
カートに予約枠を入れてチェックアウトに進み、コードを入力して金額を確認したら、決済せずにチェックアウトページを閉じます。公式ヘルプが案内しているテスト方法で、テスト用ゲートウェイを立てなくても確認できます。
出典:Shopifyヘルプセンター「金額割引ディスカウント」

開始日と終了日は、Shopify 管理画面で選んでいるタイムゾーンで解釈されます。ストアのタイムゾーンが日本時間になっていないと、「明日の0時から」のつもりが数時間ずれます。予約は開始時刻そのものが商品なので、ここのずれは物販より痛いです。
予約枠と物販が同じカートに入ると、割引はどう配分される?
ここが、予約枠を商品として売っているストアで最初にぶつかる壁です。
Shopify の公式ヘルプは、全商品対象の定額割引について「カート内のすべてのアイテムに比例して適用されます」と明記しています。例として挙げられているのは、50米ドルの商品と100米ドルの商品が入ったカートに50米ドルの割引を当てた場合で、割引は16.50米ドルと33.50米ドルに分かれます。
出典:Shopifyヘルプセンター「金額割引ディスカウント」
これを予約に置き換えると、こうなります。
つまり「予約枠が1,000円安くなる」のではなく、「注文全体が1,000円安くなる」のです。予約と物販を同じストアで売っている限り、この差は必ず出ます。
定額割引と「特定の商品・コレクション」を組み合わせるときは、もうひとつ注意点があります。公式ヘルプは、この組み合わせのときに「注文ごとにディスカウントを1回のみ適用する」というチェックがあり、これを入れない場合は「ディスカウントは注文内のすべての対象商品に適用されます」と書いています。予約枠を2枠まとめてカートに入れた人には、500円オフが2回、つまり1,000円分引かれます。
「注文ごとに1回のみ適用」のチェック
割合(パーセンテージ)の割引ならこの問題は起きませんが、代わりに単価の高い予約枠ほど値引き額が膨らみます。定額と割合のどちらが安全かは、扱っている予約メニューの価格差で決まります。
予約枠だけにクーポンを効かせるには?
答えは、商品の個別指定ではなくコレクション指定です。
ディスカウントの「適用対象」では「特定の商品」と「特定のコレクション」を選べますが、公式ヘルプは、1つのディスカウントコードに指定できる特定のお客様・商品・バリエーションの上限を100件としています。上限を超えると「Item entitlements exceeded max number」というエラーが出ます。
予約アプリの中には、時間帯やスタッフをバリエーションとして持たせるものがあります。1メニューにつきバリエーションが何十個も生えるタイプだと、メニューを数個指定しただけで100件に届きます。
予約枠だけをまとめた「予約メニュー」コレクションを1つ作り、ディスカウントの適用対象はそのコレクションだけにします。新しい予約メニューを足してもコレクションの条件に入るので、割引の設定を触り直す必要がありません。物販だけのクーポンも、物販コレクションを指定すれば同じ理屈で予約に漏れません。
最低購入金額を設定する場合も、コレクション指定が効きます。公式ヘルプは「ディスカウントが特定の商品またはコレクションに適用される場合、それらの商品のみが最低購入金額にカウントされます」としています。予約コレクションに絞ったうえで最低購入金額を1万円にすれば、物販をカートに足して条件を満たす、という抜け道をふさげます。なお、最低購入金額には商品価格だけが計算され、送料も税も含まれません。
出典:Shopifyヘルプセンター「金額割引ディスカウント」
Shopify予約で初回限定クーポンはどう作る?
結論から書くと、Shopify に「初回限定」という専用の設定項目はありません。近いものを2つの方法で作ることになります。
公式ヘルプは、顧客要件の説明のなかで「まだ購入したことのないお客様をターゲットにするには、注文数 = 0」と具体例を挙げています。この条件で顧客セグメントを作り、ディスカウントの「対象となる要件」でそのセグメントを指定すれば、未購入の人だけが使えるコードになります。
ヘルプはあわせて「これらのお客様は、有効なメールアドレスまたは電話番号を使用してチェックアウトする際に識別されます」と書いています。裏を返すと、別のメールアドレスを使われると別人として扱われます。完全な初回判定ではありません。
セグメントを指定できる数にも上限があり、自動ディスカウントは1つにつき最大5セグメント、ディスカウントコードは最大100セグメントです。
出典:Shopifyヘルプセンター「ディスカウントの管理と編集」
顧客タグで代替する方法もよく紹介されますが、Shopify 標準のディスカウント画面が直接受け取るのは顧客セグメントです。タグを条件に含んだセグメントを作れば結果は同じになります。タグを手で付け外しする運用は、予約のたびに発生するので長続きしません。
配布経路を絞りたいときは、共有可能なリンクや QR コードが使えます。ただし公式ヘルプは、このリンクで適用された割引は「お客様のカートとブラウザに保存されるため、削除されるまで適用されたままになります」と書いています。一度リンクを踏んだ人は、次にストアへ来たときも割引が乗ったままになる可能性があります。初回限定のつもりのリンクを SNS に貼ると、初回の定義がかなり緩くなります。
出典:Shopifyヘルプセンター「ディスカウントの管理と編集」
自動割引と割引コードは、どちらを使えばいい?
- 自動ディスカウント
- 条件を満たしたカートに自動で乗る割引。お客様はコードを入力しません。管理画面で作成したものはチェックアウトの購入完了後ページには適用されません。
- ディスカウントコード
- お客様がチェックアウトで文字列を入力して適用する割引。配布経路を絞れる代わりに、入力し忘れがカート放棄につながることがあります。
併用できるかどうかは、公式ヘルプの FAQ に答えがあります。「各ディスカウントが他のディスカウントのクラスと組み合わせるように設定されていれば、自動ディスカウントとディスカウントコードの両方を同じカートに適用できます」。ただし「ディスカウントが異なるクラスでない限り、1つのアイテムに複数のディスカウントを適用することはできません」とも書かれています。
クラスは3つに分かれます。
| クラス | 何に効くか | 予約での使いどころ |
|---|---|---|
| 商品ディスカウント | 特定の商品・コレクション | 予約コレクションだけを値引きする |
| 注文ディスカウント | カートの小計 | 予約と物販の合計から引く |
| 配送ディスカウント | 送料 | 物販を同梱したときだけ意味がある |
適用の順番も決まっています。商品ディスカウントが先に個々のアイテムへ効き、その後の小計に注文ディスカウントが効き、配送ディスカウントが最後です。予約コレクションに20%オフ、注文全体に500円オフを重ねると、500円は20%引きのあとの小計から引かれます。
組み合わせには上限もあります。有効な自動ディスカウントはアプリ由来を含めて最大25件、お客様が同じ注文で使える商品または注文のディスカウントコードは最大5件、配送のコードは1件です。同じ商品に複数の商品ディスカウントを重ねられるのは Shopify Plus だけです。
出典:Shopifyヘルプセンター「ディスカウントの組み合わせ」
組み合わせが許可されていない割引が同時に成立する場面では、Shopify は「お客様のカートに最適なディスカウント」、つまりお客様にとって得な方を自動で選びます。店側が「小さい方が当たるはず」と見込んでいると、そこがずれます。
キャンセルして再予約されたとき、クーポンは再利用される?
予約は物販と違って、日程変更のためのキャンセルと再予約が日常的に起きます。ここで割引が二重に効かないか、という質問には、確実に答えられる部分と、確かめるしかない部分があります。
確実に言えるのは次の2つです。
- 「お客様1人につき1回」の制限は、その特定のディスカウントにだけ効く
- 同じ条件で作り直すと、以前使った人がもう1回使える
公式ヘルプはこう書いています。「お客様1人につき1回までという上限が設定されたディスカウントは、その特定のディスカウントにのみ適用されます。そのディスカウントを削除してから、同じ上限利用回数の制限を設けた複製ディスカウントを追加した場合、以前のディスカウントを利用したお客様も、この新しいディスカウントを1回利用できます」。
キャンペーンを延長するときにコードを作り直す運用は、ここに引っかかります。延長するなら、削除して作り直すのではなく、既存のディスカウントの終了日を後ろへずらしてください。
一方で、注文をキャンセルしたときに利用回数のカウントが戻るかどうかは、公式ヘルプに記述が見当たりません。注文のキャンセルに関するヘルプが触れているのは在庫の補充、返金方法、決済状況の変化までで、割引の利用回数には言及がありません。ここは自分のストアでテスト注文を1件通して、キャンセル後に同じコードがもう一度通るかを確かめるのが確実です。
- 1日目
テスト注文を1件通す
初回限定コードを適用して予約枠を購入する - 1日目
キャンセルして返金する
管理画面から注文をキャンセルし、元の決済方法へ全額返金する - 1日目
同じコードを再入力する
通ったなら再利用できる設計、弾かれたなら1回で消費される設計だと分かる - 2日目以降
運用ルールを決める
再利用できるなら、日程変更は返金ではなく予約アプリ側の枠変更で処理する
予約の日程変更を「キャンセルして取り直し」で処理している店ほど、この確認をしておく価値があります。無断キャンセルそのものの対策は 無断キャンセルを減らす仕組み に分けてあります。
回数券や前払いに割引を重ねたら、返金額はいくらになる?
回数券を Shopify の商品として売り、そこに割引を重ねた場合、返金でつまずきやすいポイントが3つあります。
戻るのは割引後に実際に決済された金額です。10,000円の5回券を20%オフの8,000円で売ったなら、返金の上限は8,000円で、定価の10,000円ではありません。返金画面では返金額を手で編集できるので、上限の範囲で調整することになります。
Shopify の返金画面は「返金するアイテムの数量」を入力する方式です。回数券は商品としては1点なので、残り3回分という按分は Shopify 側では計算されません。残回数から金額を自分で出して、返金額の欄に手入力する形になります。返金の理由欄はお客様には表示されないので、按分の根拠は注文メモやタイムラインに残しておくと後で揉めません。
戻りません。公式ヘルプは「注文がShopifyペイメントで処理された場合、クレジットカード手数料は返金されません」と明記しています。これは返金でもキャンセルでも同じです。割引して売ったものを返金すると、値引き分と手数料分の両方が持ち出しになります。回数券の割引率を決めるときは、ここを勘定に入れてください。
注文レベルで無料配送ディスカウントが適用されている注文は、配送料を返金できません。予約枠に物販を同梱して無料配送クーポンを当てた注文をキャンセルするときに効いてきます。
できません。公式ヘルプは「Shopify 管理画面で返金を開始した後は、その返金をキャンセルしたり元に戻したりすることはできません」としています。誤って返金した場合は、新しい下書き注文を作って改めて決済を受ける形になります。割引が絡む返金ほど金額を間違えやすいので、実行前に一度読み返してください。
回数券そのものの設計や、物販と組み合わせた客単価の作り方は 予約とECのクロスセル にまとめてあります。

初回限定価格は、景品表示法にどう引っかかる?
ここは Shopify の設定ではなく、表示の話です。「通常8,000円のところ初回5,000円」と書いた瞬間、それは二重価格表示になります。
景品表示法第5条第2号は、価格その他の取引条件について「実際のもの」よりも「著しく有利であると一般消費者に誤認される表示」を禁じています。同法第7条は、違反行為があったときに内閣総理大臣が措置命令を出せると定めています。
では「通常価格」として何を出せるのか。消費者庁の「不当な価格表示についての景品表示法上の考え方」に、かなり具体的な線が引かれています。
過去の販売価格を比較対照価格に使う場合、それが「最近相当期間にわたって販売されていた価格」といえないときは、いつの時点でどの程度の期間販売していた価格かを正確に表示しない限り、不当表示に該当するおそれがあるとされています。
「最近相当期間」の判断基準として、同資料は次の3点を示しています。
- 01
さかのぼる期間は8週間
セール開始時点からさかのぼる8週間について検討する。その商品の販売期間が8週間未満なら、その期間について検討する - 02
過半を占めていること
その価格で販売していた期間が、商品を販売していた期間の過半を占めているなら「最近相当期間」とみてよい - 03
2週間の二重の足切り
通算2週間未満しか販売していない場合、またはその価格で売った最後の日から2週間以上経っている場合は該当しない
出典:消費者庁「不当な価格表示についての景品表示法上の考え方」(PDF)
同資料は、セール実施を決めたあとに販売を開始した商品についても触れていて、この場合は「セール前価格は実績作りとみられる」ため、販売期間を正確に表示しても不当表示に該当するおそれがあるとしています。また、事例として「販売実績の全くない商品」の価格を「当店通常価格」として比較対照価格に用いることを、不当表示に該当するおそれのある表示に挙げています。
予約メニューに引き写すと、こうなります。
「通常8,000円 → 初回5,000円」と書けるか
比較対照価格を出さない書き方なら、この論点自体を回避できます。「初回のお客様は5,000円」とだけ書けば二重価格表示になりません。集客のために「通常◯◯円」と添えたくなったときに、その◯◯円を本当に8週間の過半で出していたか、を確認する習慣にしてください。
なお、割引率の効果を数字で断言する書き方にも同じ注意が要ります。「このクーポンで予約が◯%増えます」のような表示は、根拠資料を出せなければ景品表示法上のリスクになります。わたしは弁護士ではないので、実際の表示を決める前に専門家に確認してください。
Shopify予約のクーポン設定でつまずいたら?
管理画面での設定そのもので詰まりやすい箇所をまとめます。
確認の順番を決めておくと早いです。開始日が未来になっていないか、終了日を過ぎていないか、適用対象のコレクションに該当の予約メニューが入っているか、最低購入金額を満たしているか、そのお客様が利用上限に達していないか、全体の利用上限に達していないか。開始日と終了日はストアのタイムゾーン基準なので、時刻のずれもここで疑います。
適用対象が「すべての商品」のままになっています。予約メニューだけを集めたコレクションを作り、適用対象をそのコレクションに変更してください。商品を個別指定する方法でも直せますが、上限100件の制約とメニュー追加のたびの手直しが付いてきます。
Shopify の仕様です。公式ヘルプは「既存のディスカウントでは、ディスカウントタイプと方法を変更することはできません。これらの設定を変更する必要がある場合は、そのディスカウントを削除し、再作成する必要があります」としています。削除して作り直すと、1人1回の利用履歴がリセットされる点に注意してください。
公式ヘルプが「0米ドルまたは0%の値のディスカウントは、チェックアウト時に正しく機能しない場合があります」と書いています。最小限の割引を作るなら、少なくとも1%または最小通貨単位の値を使うよう案内されています。
ディスカウントコードを設定したあとは「ディスカウントによる売上」レポートで使用頻度を確認できます。売上レポート自体は割引適用後の金額で集計されるため、値引き総額を知りたいときはこちらを別に見ます。
そのディスカウントを無効化するのが最速です。公式ヘルプは、有効期限が切れていないディスカウントを一時的に無効化する手順と、一括で無効にする手順の両方を案内しています。無効化されたコードを入力したお客様には、一致する有効なディスカウントが見つからない旨のエラーが表示されます。そのうえで新しいコードを作り、配布先をメールや予約完了画面に絞り直してください。
出典:Shopifyヘルプセンター「ディスカウントの管理と編集」
クーポンの効果は、どう見ればいい?
クーポンの成果を語る記事はたくさんありますが、業種も価格帯も客層も違うストアの数字は、自分のストアの予測にはなりません。ここでは「何を見るか」だけを置きます。
クーポンを出したら見る3つ
- そのコードが使われた注文数と、値引きの総額
- 値引き後に残った粗利が、施策前の同じ期間と比べてどうか
- コードを使った顧客が、その後もう一度予約しているか
3つ目がいちばん大事で、いちばん時間がかかります。初回限定クーポンは、2回目が来ないなら単に単価を下げただけです。判断にはクーポンを出していない期間との比較が要るので、最初のキャンペーンでは結論を出さず、条件を変えずに2回まわしてから見てください。
まとめ
Shopify の予約クーポンでつまずく原因は、ほぼ「割引は注文に効き、予約は商品である」というずれに集約されます。
- 適用対象は予約専用コレクションで指定する。商品の個別指定は上限100件とメニュー追加の手直しが付いてくる
- 定額割引を特定の商品・コレクションに当てるときは「注文ごとに1回のみ適用」を入れる。入れないとまとめ取りで枠の数だけ引かれる
- 初回限定は専用機能ではなく、顧客セグメントの「注文数ゼロ」と1人1回の制限の組み合わせで近似する
- 自動割引と割引コードは併用できる。ただし同じアイテムに商品ディスカウントを重ねられるのは Shopify Plus だけ
- キャンペーン延長でコードを作り直すと、1人1回の履歴がリセットされる。終了日をずらす
- 「通常◯◯円」と書くなら、直近8週間の過半をその価格で販売していた実績が要る
まずやることを1つに絞るなら、予約メニューだけを集めたコレクションを作ることです。それだけで、物販への回り込みと上限100件の問題が同時に消えます。予約サイトそのものの立ち上げは Shopifyでサロン予約サイトを作る方法、予約フォームで受け取る項目の設計は 予約オプションの設計 を参照してください。

この記事の執筆者
大島慎平(SHIN)個人開発者 / ソロプレナー
日本のShopifyストア向けアプリ「まるっとシリーズ」を、AIのコーディングツールと一緒に1人で企画・開発・運営しています。書籍編集者からWebエンジニアに転じて約10年。YouTubeでは、1人で事業をつくる過程を話しています。

この記事を読んだ方におすすめ
Shopify予約アプリ
まるっと予約
来店予約・イベント予約の受付カレンダー、スタッフ・設備管理、来店履歴つきの顧客管理、予約のGoogleカレンダー追加に対応。
💡 無料プランあり・7日間トライアル / $19.99〜
他のまるっとシリーズもチェック
Shopifyストアの 構築・運用も お任せください
「自分でShopifyを設定するのは不安」という方へ。まるっとシリーズを開発している弊社が、ストアの構築・移行から公開後の改善まで伴走します。新規構築は50万円〜(税別)です。
関連記事

How Salons Build a System for Booking the Next Appointment On the Spot

How to Increase Average Order Value by Adding Retail Products to Bookings on Shopify

Shopify Booking Options: Where Native Features End and an App Starts

How to Sell Products and Take Bookings at the Same Time on One Shopify Store

How to Take Event Bookings on Shopify (2026): Time-Slot vs Ticketing Apps


