こんにちは、DX攻略部のヘナトンです。
さっそく質問ですが商談商品をうまく理解できていますか?
Salesforceを利用する上で、商談は分かる、商品も分かる、でも商談商品がよく分からずうまく使いこなせていないケースも多いのではないかと思います。
また、デフォルトで表示されているため、なんとなく使っているケースもあると思います。
本記事では、商談商品のオブジェクト構造から、実務で必須となる項目の知識、さらにはフローやプログラムを作成する際の注意点まで、2026年の最新視点で詳しく解説します。
DX攻略部では、『Salesforce支援サービス』というサービスも提供しておりますので、こちら興味を持った方は、ぜひご相談ください。
複雑な三角関係を理解する|商談商品が必要な理由とオブジェクト構造
商談商品は、単に商談と商品を繋ぐだけの存在ではありません。
実は「価格表」という別の要素も深く関わっています。
なぜこれほど複雑な構造になっているのか、その背景にあるデータの合理性を探っていきましょう。
もし商談オブジェクトと商品オブジェクトが直接つながっていたとしたら、、、
まずは商談AとBに対して3つの商品(商品A、商品B、商品C)があるパターンを考えましょう。
商品は商談を参照している、つまり商談が親で商品が子の関係です。
それぞれの商品は商談を参照する項目(商談1)があります。
ここまでは何の問題もありません。
商談Bでも同じ商品を使用したいとなるとそれぞれの商品に商談を参照する項目(商談2)を作成しなければなりません。
商談Cでも同じ商品を使用したい、商談Dでも同じ商品を、商談Eでも、、、となっていくと非常に多くの参照関係項目が必要となります。
現在Salesforceの仕様で1オブジェクトに参照関係項目(主従関係を含む)は50個までですから同じ商品を使用できる商談は50個までとなり、あまり使い勝手のよくない組織ができてしまいます。
逆に商品を親にし、商談を子にしたパターンを考えても同様に一つの商談で50個までしか商品を選択できないこととなり、同じくあまりよくないですね。
(お客様が100種類の商品が欲しい!とせっかく言っているのに、システム上できませんと言うのは損失ですよね、、、。)
また、同じ商品でも割引等を行い、別々の価格を設定することがあると思いますが、商談と商品が直接つながっている場合は同じモノでも価格が異なれば別の商品レコードを作成しなければなりません。
そうなると、売れ筋商品の分析の際も別の商品レコードをまとめる必要があり、なかなかキレイに集計できません。
救世主、商談商品!
上記のような問題のある構造を解決してくれるのが中間オブジェクトとしての商談商品(API参照名:OpportunityLineItemです。
商談と商品の間に商談商品を挟むことで「商談:商談商品=1:多」「商品:商談商品=1:多」の二つを同時に構成し、結果として「商談:商品=多:多」の関係を構築できるのです。
同じ商品を多くの商談で使う際は、同じ商品を参照し別々の商談を参照する商談商品を作成すればよく、
一つの商談で多くの商品を扱いたい場合は、同じ商談を参照し別々の商談を参照する商談商品を作成すればよく、参照関係項目の作成限度に縛られることはありません。
さらに商品に価格をもたせることなく、商談商品に価格を持たせることで、同じモノで異なる価格の場合、同じ商品を参照し異なる価格設定をした商談商品が増えるだけなので毎度同じ商品を使い回せます。
2026年現在の売上予測AI(Agentforce)も、この細分化されたデータがあるからこそ、精度の高い予測が可能になるのです。
商談商品の項目情報
以下、商談商品特有のの標準項目一覧表です。
もちろんこれにカスタム項目を追加することも可能です。
| 商談商品(OpportunityLineItem) | |||
| 項目表示ラベル | API名 | データ型 | 備考 |
| 商談商品名 | Name | テキスト | 商談名と商品名を合わせたテキスト項目。編集不可。 |
| 商談 | OpportunityId | 参照関係 | 商談を参照する項目。 |
| 商品 | Product2Id | 参照関係 | 商品を参照する項目。 |
| 商品コード | ProductCode | テキスト | どの商品かを識別するコード項目。 |
| リスト価格 | ListPrice | 通貨 | 価格リストによる商品のデフォルトの価格。編集不可。 |
| 販売価格 | UnitPrice | 通貨 | 商品の単価。デフォルトはリスト価格。 |
| 数量 | Quantity | 数値 | 商品の数。 |
| 小計 | Subtotal | 通貨 | 販売価格×数量。自動で計算され、編集不可。 |
| 割引 | Discount | パーセント | 割引率。 |
| 合計金額 | TotalPrice | 通貨 | 小計から割引額を引いた最終的な金額。編集不可。 |
| 提供日 | ServiceDate | 日付 | 商品を提供する日付。 |
| 明細説明 | Description | テキスト | メモ欄。 |
自動化の落とし穴|フローやApexで商談商品を操作する際のテクニカルな制限
商談商品は、その特殊性ゆえにフローやApexで操作する際に独自のルールが存在します。
ここを知らずに実装を進めると、予期せぬエラーやデータの不整合に悩まされることになります。
合計金額(TotalPrice)と販売価格(UnitPrice)の同時更新不可
プログラムから更新をかける際、この2つの項目を同時にセットすることはできません。
基本的には販売価格と数量を更新し、合計金額はSalesforceの標準ロジックに任せるのが安全です。
価格表の選択が必須
商談に商品を登録する前に、必ず商談側で「価格表(Pricebook2)」が選択されている必要があります。
フローで自動的に商談商品を作成する場合は、まず親である商談の価格表IDが埋まっているかをチェックするロジックを忘れないようにしましょう。
通貨の不一致
マルチ通貨を有効にしている組織では、商談の通貨と価格表エントリの通貨が一致していないと、商談商品を作成できません。
2026年のグローバル展開する企業においては、この通貨チェックが自動化の成否を分けるポイントになります。
こんにちは、DX攻略部のヘナトンです。 Salesforceは、顧客関係管理(CRM)システムとして広く使用されており、企業が顧客データを効果的に管理し、ビジネスプロセスを最適化するのに役立つ多くの機能を提供しています。 その中[…]
まとめ
Salesforce初学者には少し難しい商談商品の解説をしましたが、少しはご理解の手助けになったでしょうか。
-
商談、商品、価格表の三点を結ぶ中間オブジェクトである。
-
合計金額は販売価格と数量の掛け算で自動計算される。
-
自動化の際は価格表IDの指定や金額項目の同時更新制限に注意する。
商談に商品を自動追加するような機能開発の発注も少なくありません。
その際、商談商品オブジェクトの理解が必須となってきますのでご参考になればと思います。
DX攻略部のSalesforce支援サービスでは、初期導入から開発・カスタマイズ、運用、教育まで一気通貫で対応しています。
フロービルダーを含むノーコード開発はもちろん、Apex言語やAPIを活用したプログラム開発も対応可能です。
「まずは相談だけ」でも歓迎していますので、Salesforceの活用に課題を感じている方はぜひ詳細をご確認ください。
最後までご覧いただきありがとうございました。






