Shopifyの購入制限、アプリなしでできます — おひとり様◯点・同時購入NG・倍数販売 7つのパターンを整理

Shopifyで購入制限する方法【個数・同時購入NG・倍数販売】

「サンプル品はおひとり様1点まで」「業務用は6個単位で注文してほしい」「冷凍品と常温品は同梱できない」——Shopifyでストアを運営していると、受けてはいけない注文をどう防ぐかという問題に必ず突き当たります。受けたあとに気づけば、再梱包・分割発送・キャンセル連絡という見えないコストが発生します。

結論からお伝えすると、Shopifyの購入制限はアプリなしで実装できます。テーマのJavaScriptでカートの変更を監視し、ルール違反を検知したら警告して元に戻す、という仕組みです。

ただしこの方式には、テーマ実装だけでは確実に止められない範囲が存在します。ここを曖昧にしている解説が多いので、この記事では現役Shopify Plusパートナー企業エンジニアの立場から、できること・できないことを正直に整理します。

購入制限でよくある7つのパターン

  1. 商品ごとの数量制限: おひとり様◯点まで / 最低◯点から
  2. カート全体の数量制限: 1注文あたり最大◯点・最低◯点
  3. 商品同士の同時購入NG: 通常品と予約品、通常配送とメーカー直送
  4. コレクション同士の同時購入NG: 冷凍と常温など、カテゴリ単位の制御
  5. タグ同士の同時購入NG: 商品を個別指定せず、タグでまとめて制御
  6. グループ単位の数量制限: セール対象は合計3点まで、など
  7. 購入単位(倍数)の強制: 6個単位・12個入りケース単位での販売

自分のストアがどのパターンに当てはまるかで、必要な実装が変わります。

実現方法は3つ — それぞれの守備範囲

① テーマのJSで制御 ② 購入制限アプリ ③ Shopify Functions(要アプリ開発)
費用 実装コストのみ(月額なし) 月額 ¥700〜3,000 が相場 開発コスト大
制御の強さ 警告 + カートの自動復元 アプリによる チェックアウトを確実にブロック
動的チェックアウトボタン(Shop Pay等)経由 完全には防げない アプリによる 防げる
サイト速度への影響 なし(テーマ直組み込み) 外部スクリプト分あり なし
導入の手軽さ △(開発が必要)

重要なのは、「注意喚起 + 誤操作の防止」で足りるのか、「システム的に絶対に通さない」が必要なのかの見極めです。

一般的なストアの購入制限(同梱NG・ロット販売・おひとり様制限)は、①の「カートの時点で気づかせて直させる」方式でほぼ実用になります。一方、限定品の転売対策のように確実性が求められる場合は、チェックアウトの検証レイヤーで止められるShopify Functions(Cart and Checkout Validation)の領域です。

自分で実装する場合の考え方

💡 コードを書かずに済ませたい方へ: ここからは自作する方向けの技術解説です。読み飛ばして、導入10分の既製セクションの紹介へ進んでいただいて大丈夫です。

テーマ実装の基本構成は次のとおりです。

  1. カート変更の検知: Cart API(/cart/add.js 等)の呼び出しをフックし、テーマが発火するイベント(cart:update など)も併用して、カートが変わった瞬間にルール判定を走らせる
  2. ルール判定: カートの中身(商品ID・コレクション・タグ・数量)を設定済みルールと突き合わせる
  3. 違反時の処理: 警告メッセージを表示する。より確実にするなら、直前の正常なカート状態を記憶しておき、違反した変更を数量ごと巻き戻す

ハマりどころ

  • 「購入ボタンを無効化する」方式は茨の道: ボタンのHTML構造はテーマごとに違い、動的チェックアウトボタン(Shop Pay・Apple Pay)はテーマの外側でレンダリングされます。ボタン制御ではなく「カートの中身を正す」方向で設計する方が壊れにくいです
  • 正常な削除と違反の区別: 「数量が最小を割った」ケースでも、お客様が意図して商品を削除した操作まで巻き戻すと、買い物が続けられなくなります。差分を見て「新規追加による違反」と「意図的な削除」を区別する判定が必要です
  • 表示と実データの同期: JSでカートを書き換えたあと、テーマ側のカート表示(ドロワー・バッジ)が古いままになりがちです。確実なのは復元後にリロードして同期させる方法です

ここまで真面目に作ると、ルール7種 × カート監視 × テーマ非依存で8〜15時間程度の工数になります。

最短で済ませたい方へ: 導入10分の既製セクション

上記をすべて実装済みの購入制限セクションをCopilifyで提供しています。

  • 冒頭の7パターンすべてのルールをブロック追加で設定(最大50ルール。並び順どおりに判定・表示)
  • 違反したカート変更を直前の正常な状態へ自動で巻き戻し、理由をポップアップで案内
  • ヘッダー/フッターグループに追加するだけの常駐型。通常時は何も表示せず、全ページでカートを監視
  • メッセージは [product] [quantity] [max] などのプレースホルダで自由にカスタマイズ。ルール単位で「警告のみ / 自動復元」も選択可能

正直な注意点: このセクションが提供するのは「カート内容の自動復元と購入前の注意喚起」です。動的チェックアウトボタンなど一部の導線までは完全に保証できないため、厳密に守らせたい場合はテーマ設定で動的チェックアウトボタンを無効化してご利用ください。チェックアウトの強制ブロックが必要なケースはShopify Functionsの領域です。

▼ デモと詳しい機能はこちら
購入制限セクションの商品ページ

よくある質問

Q. 転売対策として確実に1点制限できますか?
カート操作経由の購入はほぼ制御できますが、「絶対に1点しか買えない」を保証するにはチェックアウト検証(Shopify Functions)が必要です。用途が「うっかり複数購入の防止」「制限の明示」なら本方式で十分です。

Q. バリエーション違いは合算されますか?
Copilifyのセクションでは、バリエーション違いを同一商品として合算するかをルールごとに選べます。

Q. どのテーマでも使えますか?
Cart APIとカート監視はShopify標準の仕組みです。セクションはOnline Store 2.0対応テーマであれば基本的に利用できます(検証はDawn系テーマで実施)。

まとめ

  • 購入制限はテーマのJSによるカート監視でアプリなしに実装できる
  • ただし「絶対に通さない」が必要ならShopify Functionsの領域。要件の強度を先に見極める
  • 自作なら8〜15時間、既製セクションなら10分。購入制限セクションは7パターンのルールを設定だけで組めます

配送日指定領収書発行・送料無料バーなどもテーマ直組み込みで揃えています。まとめて導入するならオールアクセスパックをご覧ください。アプリの固定費そのものを見直したい方は、Shopifyアプリの月額を削減する5つの方法もあわせてどうぞ。

ブログに戻る