対象の指定ルール
読了時間: 5 分。 対象: 誰が見積ボタンを見て、誰が見積を提出できるかを絞り込みたいマーチャント。
QuotWayは商品側の指定(「どの商品に見積ボタンを表示するか」)と、顧客側の指定(「どのバイヤーが提出できるか」)を分けています。どちらもルールの連なりとして動作します。各ルールが許可か拒否のいずれかを与え、最初に合致したルールが適用されます。
二つの範囲
| 範囲 | 問い | ルールがない場合の既定 |
|---|---|---|
| PRODUCTS | 「この商品に見積ボタンを表示すべきか」 | 拒否 - ボタンは非表示。 |
| CUSTOMERS | 「このバイヤーの提出を許可すべきか」 | 拒否 - 提出は却下されます。 |
既定が「すべて拒否」であるのは意図的です。ルールがなければ、どのバイヤーにもボタンは見えません。初期設定が基本の ALL_PRODUCTS と ALL_CUSTOMERS のルールを作成するので、最初は全員にボタンが表示された状態から始まります。
ルールの種類
商品側
- ALL_PRODUCTS - すべての商品にボタンを表示します。
- COLLECTION - 特定のコレクションの商品にのみ表示します。
- PRODUCT_TAG - 特定のタグ(たとえば
wholesale)を持つ商品にのみ表示します。ANY(いずれかのタグに合致)とALL(すべてのタグに合致)に対応します。 - PRODUCT_TYPE - Shopifyの商品タイプで合致させます。
- VENDOR - Shopifyの商品の販売元で合致させます。
顧客側
- ALL_CUSTOMERS - すべてのバイヤーが提出できます。
- CUSTOMER_TAG - Shopifyの顧客タグ(たとえば
vip)で合致させます。ANYまたはALLです。 - CUSTOMER_SEGMENT - Shopifyの顧客セグメントで合致させます。所属はサーバー側でShopifyに対して解決されるため、ストアフロントが送る内容を信用するのではなく、セグメントが正しい根拠であり続けます。
- B2B_COMPANY - BtoBに対応したストア(Professional以上)で使えます。会社のGIDで合致させます。
- COMPANY_LOCATION - BtoBに対応したストア(Professional以上)で使えます。会社の拠点で合致させます。
- GUEST - ゲスト(ログアウトしている)のバイヤーを明示的に許可します。
ルールの順序と優先度
各ルールは priority を持ちます(小さいほど優先度が高い)。QuotWayがボタンを表示するかを評価するときは、次のとおりです。
- ルールを
priorityの昇順で並べます。 - 順に見ていきます。商品とバイヤーの両方に条件が合致した最初のルールが適用されます。
- どのルールにも合致しなければ、拒否します。
ルールは有効(作動中)にも無効(後のために残しつつ無視)にもできます。/app/quote-button/targeting の対象の指定の編集画面に、どちらの状態の切り替えもあります。
ルールを編集する
/app/quote-button/targeting の専用の編集画面に、両方の範囲のすべてのルールが表示されます。各行には次のものがあります。
- 名前と範囲の表示(PRODUCTS / CUSTOMERS)。
- ルールの種類。
- 条件(たとえば
tags: ["wholesale"], operator: ANY)。 - 有効の切り替え。
- 優先度。
どのルールを選んでも、条件の編集画面が開きます。
実例 - 卸売のタグの付いた商品と、BtoBのタグの付いた顧客
特別なタグの付いた商品で卸売業者に販売していて、信頼できるバイヤーの顧客アカウントに wholesale-customer のタグを付けているとします。両方が合致したときにだけ見積ボタンを表示したい場合です。
ルール:
| # | 範囲 | 種類 | 条件 | 優先度 | 有効 |
|---|---|---|---|---|---|
| 1 | PRODUCTS | PRODUCT_TAG | tags: ["wholesale"], operator: ANY |
100 | ✓ |
| 2 | CUSTOMERS | CUSTOMER_TAG | tags: ["wholesale-customer"], operator: ANY |
100 | ✓ |
これだけです。二つのルールです。商品に wholesale のタグがあり、かつバイヤーに wholesale-customer のタグがあるときに、ボタンが表示されます。
実例 - ゲストのバイヤーとタグの付いた商品
ログアウトしているバイヤーにも見積を提出できるようにしたい場合(最初の接触となるBtoBの問い合わせではよくあります)は、次のとおりです。
| # | 範囲 | 種類 | 条件 | 優先度 | 有効 |
|---|---|---|---|---|---|
| 1 | PRODUCTS | PRODUCT_TAG | tags: ["wholesale"], operator: ANY |
100 | ✓ |
| 2 | CUSTOMERS | GUEST | (なし) | 100 | ✓ |
| 3 | CUSTOMERS | ALL_CUSTOMERS | (なし) | 200 | ✓ |
ルール2がゲストを明示的に許可し、ルール3がログイン済みの顧客を受け止めます。
強制はサーバー側であり、表示だけではない
ボタンの表示は見た目の層です。対象外の商品が見積もられるのを止めているのは、それではありません。
見積が提出されると、QuotWayは保存されたルールに対してサーバー側で同じ評価を実行し直し、いずれかの明細が対象外なら提出を却下します。この確認を信頼できるものにしている点が二つあります。
- クライアントから送られた商品の属性は、信用されるのではなく置き換えられます。 ストアフロントの要求は各明細の商品タイプ、販売元、タグ、コレクションを運びます。これらは細工された要求が偽装できる値です。評価の前に、サーバーはそれらを捨て、Admin APIから取得した正しい値を代わりに使います。顧客タグについても同じで、要求から受け取るのではなく取得し直します。
- 失敗はすべて拒否を既定とします。 商品を解決できない場合、あるいはAdminからの取得そのものが失敗した場合、その明細は通されるのではなく対象外として扱われます。
カートからの提出は、入力欄が開く前に絞り込まれます。見積の対象となる明細だけが見積へ運ばれるため、対象外の品目は黙って見積もられるのではなく取り除かれます。
範囲について知っておく価値のあることが二つあります。 対象かどうかはバイヤーが提出した時点で評価されるため、後から除外した商品が、すでに存在する見積を遡って閉じることはありません。そしてあなたが管理画面で作成する見積は、対象の確認を受けません。商品を明示的に選んでいるので、ストアフロントを制限するルールがあなたを制限することはありません。
これは、除外が運用上の理由で存在する場合、たとえば別のワークフローに従う修理や交換の場合に重要です。要求がどのように作られたとしても、除外された商品がストアフロント経由であなたに届くことはないからです。
性能とキャッシュ
対象の指定ルールは、ストアフロントのページの読み込みのたびに読まれます。待ち時間を抑えるため、QuotWayはストアごとにルールの一覧を5分間キャッシュします。
- ルールを作成、更新、削除すると、そのストアのキャッシュは即座に無効になります。
- キャッシュはVercelの関数のインスタンスごとにメモリ上にあるため、ストアごとのデータベースへの問い合わせを増やさずに、通信量に応じて線形に拡張します。
通常の利用で古いルールが見えることはないはずです。もし見えた場合の調査の手順はよくある問題のトラブルシューティングにあります。
よくある落とし穴
- 商品にタグがあるのにボタンが表示されない。 タグの照合は大文字と小文字を区別します("wholesale" ≠ "Wholesale")。Shopifyのカタログでは、古いタグの表記が揺れていることがあります。一つの表記に決めて統一してください。
operator: ALLと二つのタグの PRODUCT_TAG のルールが、一部の商品でだけ機能する。 各商品が本当に両方のタグを持っているか確認してください。この演算子は、すべてに厳密に合致することを求めます。- BtoBの会社のルールが合致しない。 会社の名前ではなく、会社のGID(
gid://shopify/Company/12345)をお使いください。編集画面の候補表示がこれを防ぎますが、他所から名前を貼り付けると、ルールは黙って合致しなくなります。 - 削除したプランの段階のルールがまだ表示される。 ルールを無効にしても保存されます。取り除くには削除の操作をお使いください。
関連記事
解決しませんか?サポートチームがお手伝いします。