Shopifyで購入数制限を設定する方法:転売と大量注文をチェックアウトで防ぐ
限定商品や人気商品を扱うストアでは、発売や値下げのタイミングで大量注文が殺到することがあります。その中に混ざるのが、転売目的の買い占めです。ボットとまではいかなくても、複数のアカウントと住所を使い分ける買付け側は、対策のないストアから短時間で在庫を持ち去ります。正規の顧客が買えない状態が続けば、発売そのものへの信頼も削られます。
転売対策にはいろいろな手段がありますが、基本線は地味な「購入数制限」です。1注文あたりの数量に上限を置く。これだけで買い占め側の作業コストは数倍に跳ね上がります。正規の顧客には1点か2点で足りる商品ほど、上限を設けたことによる実害はほぼありません。
この記事では、Shopifyで購入数制限を設定する方法を、チェックアウトで注文を止めるアプリ「Validify Checkout Guard(バリディファイ・チェックアウトガード)」をつくった本人が整理します。不正注文対策の全体像は、不正注文対策ガイドで別途書いています。
購入数制限が必要になる場面
まず、どんな場面で数量の上限が効くかを整理します。
ひとつめは、限定コラボ商品の転売です。限定グッズやコラボ商品は発売直後に市場価格がつきやすく、転売の格好の的になります。買付け側は1注文での買い占めが通らなければアカウントを増やしますが、それでも1アカウントあたりの取得数を抑えられるぶん、正規の顧客に行き渡る量は増えます。
ふたつめは、格安セールでの転売目的の買い占めです。セール価格はもともと薄利です。そこを数量の上限なくまとめ買いされると、利益はおろか在庫の回転まで歪みます。ルールは後から有効・無効を切り替えられるので、セール期間中だけ厳しめの上限を置く、という使い方もできます。
みっつめは、クーポン悪用の大量注文です。クーポンは1注文あたりの値引きである以上、点数をまとめ買いされるほど損が膨らみます。数量の上限に加えて、初回の購入者だけ厳しくする組み合わせも有効です。その方法は後のセクションで書きます。
Shopifyの標準機能で購入数制限はできるか
結論から書くと、Shopifyの標準のチェックアウト設定に「1注文あたりの数量上限」はありません。カートの金額や重量で送料を制御することはできても、点数そのものを理由にチェックアウトを止める設定はないのです。
テーマ側でカートの数量を制限する方法はありますが、これは確実な対策になりません。フロント側の制限は、ブラウザを変える、Cookieを消す、商品をカートに入れた状態のリンクを直接開く、といった方法で回避できます。善意の顧客には十分でも、買い占めが目的の相手にとっては壁になりません。
確実なのは、チェックアウトの途中、決済が完了する前にサーバー側で数量を検証して注文を止めることです。Shopify FunctionsのCart & Checkout Validation APIがその土台で、私がつくったチェックアウトガードは、ここにルールを差し込む形で動く単機能のアプリです。テーマやテンプレートに手を入れず、チェックアウトそのものの段階で効くのが要点です。またアプリはブロックのみの動作で、ルールに引っかかった注文だけを止めます。さらにアプリ側でエラーが起きてもチェックアウトそのものは止まらない設計(フェイルオープン)なので、対策の不調が通常の売り上げに波及することもありません。
ルール例:1注文あたりの合計数量を制限する
最もシンプルな形は、カートの基準「合計数量」を使うルールです。ルールはどれも「基準 + 演算子 + 値」の形で書きます。この場合は次の3つです。
- 基準:合計数量
- 演算子:より大きい
- 値:5
カート内の全ラインアイテムの数量を合計した値が5を超えた時点で、つまり6点以上で、チェックアウトが止まります。商品を問わずストア全体に効く、最初の壁としてのルールです。アプリの基準は全36種類、演算子は18種類あります。1ポリシーに25ルールまで、1ルールに25条件まで組み合わせられるので、まずこの1つを置いて、様子を見ながら足していく使い方が向いています。
特定商品だけ制限する
ストア全体の上限ではなく、特定の商品にだけ上限を設けたい場合は、ラインアイテムの基準を使います。ラインアイテムには「ライン数量」「SKU」「商品タイプ」「ベンダー」「商品」「コレクション」「商品タグ」などの基準があり、これらをANDで組み合わせられます。
たとえば限定コレクション「limited-drop」に属する商品を1ライン2点までにするなら、次の2条件をANDで組み合わせます。
- 基準:コレクション + 演算子:のいずれか + 値:limited-drop
- 基準:ライン数量 + 演算子:より大きい + 値:2
限定商品だけ厳しく、通常商品はストア全体の上限のまま、という運用ができます。
ここで正直に書いておきたい限界があります。ラインアイテムの基準は、その名の通りライン単位で評価されます。同一の商品でも、オプション違いなどでカート内で別々のラインに分かれた場合、それぞれのライン数量は別々に見られ、SKUを横断してカート全体で足し上げる集計には対応していません。「バリエーションAを3点、バリエーションBを3点」のような入れ方を合計で止めたい場合は、先のストア全体の「合計数量」のルールでカバーすることになります。できないことをできるとは書きたくないので、ここは明示しておきます。
顧客履歴で緩める・厳しくする
上限を誰にでも同じくかけるのは粗い、という場合は、顧客の基準を組み合わせて段差を作ります。使えるのは「注文回数」「累計購入金額」「顧客タグ」「ログイン状態」などです。注文回数は、ゲスト購入は0回として扱われます。累計購入金額の基準はカートの通貨に換算された値と比較できるので、点数ではなく金額で段差を作る(累計購入金額が5,000円より小さい顧客だけ厳しくする、など)使い方もできます。
たとえば初めての購入は1点まで、2回目以降は緩める、という設計は2つのルールで作れます。ひとつは「注文回数 が 0」かつ「合計数量 が 1 より大きい」でブロック。もうひとつは「注文回数 が 1 以上」かつ「合計数量 が 10 より大きい」でブロック。初回だけ厳しく、一度買ってくれた人には広く使ってもらう形です。転売目的で作られる新規アカウントに対して、きれいに効きます。
逆に、例外を設けたい相手には顧客タグが使えます。たとえば法人の常連にはタグ「b2b」を付けて、「顧客タグ が b2b を含まない」かつ「合計数量 が 20 より大きい」でブロックする。タグを付けた顧客にはこのルールがかからず、それ以外にだけ効きます。複数のルールに同時に引っかかった場合は、一致したルールがそれぞれ別々のエラーを出すので、どこで止まったかがそのまま見えます。
なお、代金引換を提供しているストアでは、数量の問題は受け取り拒否の問題と隣り合わせです。こちらは受け取り拒否対策の記事で扱っています。
ブロックされた人に見せるメッセージ
数量制限で止めるとき、無言で止めるのは買う側に不親切です。アプリでは、ブロックの理由を買物客に表示するメッセージを書けます。「転売対策のため、お一人様5点までとさせていただいています。数量をご調整ください」のように、上限の数字と次の一手を書くのがコツです。正規の顧客は数量を減らして買い直してくれます。メッセージは日本語をはじめ36言語に対応し、買物客の言語で表示されます。1メッセージ500文字まで書けます。なお多言語化しているのはこの買物客向けメッセージの範囲で、設定画面そのものは英語です。言語の選ばれ方は段階的で、買物客のロケールに一致するメッセージがなければ同じ言語の近いロケール、それもなければ英語のメッセージで表示されます。日本語のメッセージを書いておけば、日本の買物客には日本語がそのまま表示されます。
導入のしかた
7日間の無料トライアルがあります。まずはストア全体の合計数量のルールを1つ置いて、トライアル期間中に注文履歴と見比べ、効きすぎていないか、すり抜けていないかを確認するのがおすすめです。月額$5で、ルールはご自身のストアのShopifyデータの中に保存されます。設定に困ったら、日本語で24時間以内に、つくった本人が返します。アプリの詳細はこちらから確認できます。