Functions / 2026-04
Product Discount Functions に
「Buy X」を定義する prerequisites が追加
商品割引の Function で、割引対象の候補に「前提条件(prerequisites)」を設定できるようになった。これで「A を 2 個買ったら B が割引」という BXGY(Buy X, Get Y)の "Buy X" 側を、コードで表現できる。
1そもそも何が変わるのか
Discount Functions の商品割引候補(product discount candidates)に prerequisites フィールドが追加された。
これにより、「この割引を受けるには、別の商品を○個カートに入れていること」という前提条件を Function 内で宣言できる。= BXGY(Buy X, Get Y)の "Buy X" を表現できるようになった。
従来 : 割引対象だけを指定
商品割引 Function では「どの商品を、いくら割り引くか」は表現できたが、「○○を買っていること」という前提条件は持てなかった。
これから : 前提条件付きで指定
割引候補に prerequisites を付けられる。「カートライン X が quantity 個ある場合のみ、この割引を適用」という BXGY ロジックが Function で完結する。
2BXGY 割引とは(仕組み図解)
BXGY = Buy X, Get Y。「指定した商品を一定数量買う(Buy X)と、別の商品に割引が付く(Get Y)」という販促手法。記事の定義をそのまま図にすると次の通り。
記事の定義 : 「顧客は、ある商品(Buy X)を指定数量購入すると、別の商品(Get Y)への割引を受けられる」。今回追加されたのは、この "Buy X" を Function 側で宣言するための仕組み。
3追加された prerequisites の構造
商品割引候補に prerequisites フィールドが追加された。各前提条件は cartLinePrerequisite として定義され、2 つの値を持つ。
| フィールド | 意味 | 記事の説明 |
id |
前提に使うカートラインの識別子 |
The identifier for the cart line used as the prerequisite. |
quantity |
割引資格を得るために、そのカートラインに必要な数量 |
The number of items from that cart line required to qualify for the discount. |
構造イメージ
// 商品割引候補(product discount candidate)に
// prerequisites を付与するイメージ
{
prerequisites: [
{
// cartLinePrerequisite
id: "<前提となるカートラインの id>",
quantity: 2 // 必要数量(Buy X の "X")
}
]
}
上記はフィールド名(prerequisites / cartLinePrerequisite / id / quantity)に基づくイメージ図。正確なスキーマ・型・必須/任意の区分は記事に記載なし。実装前に Discount Functions のドキュメントで確認すること。
4判定フロー図解 : 割引が成立するまで
※ 上図は id/quantity の意味から組み立てた概念フロー。実際の評価タイミングや複数 prerequisite 時の挙動は記事に記載なし。
5従来 vs これから
| 項目 | 従来の Product Discount Function | prerequisites 追加後 |
| 割引対象の指定 |
可 どの商品をいくら割り引くか |
可 同上 |
| 「○○を買っていること」条件 |
不可 候補に前提条件を持てない |
可 prerequisites で宣言 |
| BXGY の "Buy X" 表現 |
不可 |
可 cartLinePrerequisite で定義 |
| 条件の単位 |
— |
カートライン(id)+必要数量(quantity) |
| 対象 Function 種別 |
— |
商品割引(product discount)の候補 |
6技術者が押さえるべき5つのポイント
1. 追加点は1フィールド
商品割引候補に prerequisites が増えただけ。割引そのものの返し方は従来通りで、前提条件を「付けられる」ようになった差分。
2. 条件の正体は cartLinePrerequisite
各前提条件は cartLinePrerequisite で表し、id(カートラインの識別子)と quantity(必要数量)の2値を持つ。
3. Buy X と Get Y が分離
割引対象(Get Y)=候補そのもの、前提(Buy X)=prerequisites。両者が候補単位で結びつく構造なので、候補ごとに別々の条件を組める。
4. 細部の仕様は記載なし
複数 prerequisite の AND/OR、数量超過時の扱い、対象 API バージョン等は記事に明記なし。実装前にドキュメントで要確認。
5. 一次情報は Discount Functions ドキュメント
記事は「詳細は Discount Functions のドキュメント参照」と案内している。フィールドの型・必須性・サンプル実装はそちらが正本。本ページの図やコードは概念整理用と割り切ること。
7業務に活かせる3つのユースケース
USE CASE 1
セット販売・抱き合わせ販促を Function で自動化
課題
「本体を買った人に、純正アクセサリを割引したい」をアプリや手作業のクーポンで運用しており、商品入替のたびに設定が破綻する。
打ち手
商品割引 Function の候補(Get Y=アクセサリ)に prerequisites(Buy X=本体)を付け、本体購入時のみ自動で割引が成立するようにする。
効果
クロスセルの取りこぼし防止と、割引運用のコード化(再現性・レビュー可能性)。
技術メモ
id に本体カートライン、quantity に必要個数を設定。複数条件の評価仕様はドキュメントで確認。
USE CASE 2
「3 個買うと 1 個無料」系のまとめ買い訴求
課題
消耗品・食品などで「まとめ買いでお得」を出したいが、数量条件をストアフロントや手動割引で管理するのが煩雑。
打ち手
対象カートラインの quantity を閾値(例: 3)に設定した cartLinePrerequisite を割引候補に付与し、閾値到達時のみ割引適用。
効果
1 注文あたりの購入点数アップ(AOV 改善)を、宣言的な割引ロジックで実現。
技術メモ
同一商品を Buy X と Get Y の両方に使うケースの挙動はドキュメントで要確認(記事に記載なし)。
USE CASE 3
外部割引アプリからの脱却・Function 集約
課題
BXGY を実現するためだけに外部割引アプリを契約しており、月額コストとブラックボックス挙動が負債化している。
打ち手
BXGY の "Buy X" が Function でネイティブに表現できるようになったため、自社管理の Discount Function へ移行を検討する。
効果
アプリ費用の削減、割引ロジックの内製化・バージョン管理、チェックアウト挙動の透明化。
技術メモ
移行可否は、既存アプリの割引仕様と Function 側の対応範囲の突合が前提。差分は Discount Functions ドキュメントで確認。
8提案で使える1行サマリ
「商品割引 Function の候補に prerequisites(cartLinePrerequisite = id+quantity)が追加。
これで 『Aを○個買ったらBが割引』という BXGY の "Buy X" を Function でネイティブに表現できる。
セット販売・まとめ買い・外部割引アプリ卒業の各シーンで効く。」