Salesforceで、商談の主キャンペーンソース項目をうまく指定する方法
リードの[取引の開始]をする際、商談オブジェクトのレコードが同時に作成されます。これまでリードだった方を初回訪問すると同時に、商談も始まるといったイメージです。この[取引の開始]のとき、作成される商談の「主キャンペーンソース」項目に自動的に値がセットされるんです。ご存じでした?
以下、通常のリード取引開始時の流れです(4ステップ)。
<目次>
通常のリード取引開始時の流れ
ステップ1:
リードの詳細画面です。「Webキャンペーン1」というキャンペーンが紐づいています。

リードの詳細画面:キャンペーンが紐づいている
ステップ2:
[取引の開始]をクリックします。以下の画面が出てきますね。

取引開始を進めていくと・・
ステップ3:
[取引の開始]のステップが完了し、以下の画面のように、「取引先」と「取引先責任者」と「商談」が作成されました。※「新しい商談」という名前の商談レコードが作成されています。

取引先の詳細:商談ができています
ステップ4:
作成された商談を確認すると、以下の画面のように「主キャンペーンソース」項目に「Webキャンペーン1」というキャンペーンがセットされています!

商談のきっかけとなったキャンペーンが自動的に選択されています
このように、作成された商談の「主キャンペーンソース」項目に自動的に値がセットされていわけですが、この値は実は「取引を開始したリードと紐づいているキャンペーンのうち、紐づいた日時が最新のキャンペーン」がセットされるようになっています。自動的に値がセットされるのは非常に便利なのですが、リードには複数のキャンペーンが紐づいていることもあるため(ひとつのリードが複数のキャンペーンメンバーになっていることもあるため)、たとえば、リード作成時に紐づけたキャンペーンを商談の主キャンペーンソースにセットしたくても、意図しないキャンペーンが主キャンペーンソースにセットされてしまうことがあります。以下のようなケースです。
状況(1):リードの詳細画面
複数のキャンペーンと紐づくリードの[取引の開始]をします。下記の画面では、シナジ次郎という名前のリードが、「Webキャンペーン1」と「展示会1」という2つのキャンペーンと紐付いています。※「展示会1」のキャンペーンの方が作成日が新しいです(直近にキャンペーンメンバーに登録されました)。

キャンペーンが2つ紐づいていて、「展示会1」の方が作成日が新しい。
状況(2):取引の開始
[取引の開始]をすると、先ほどと同じように商談が作成されています。※「新規商談2」という名前の商談レコードが作成されています。

先ほどと同じく、商談ができています。
状況(3):商談
作成された「新規商談2」を確認します。取引開始前は、「Webキャンペーン1」と「展示会1」という2つのキャンペーンに紐付いていました。が、以下の画面のように、主キャンペーンソース項目には「展示会1」がセットされています。

「展示会1」の方が指定されています。
…ということで、商談の「主キャンペーンソース」項目について、運用上、特に気にする必要がなければ問題はありませんが、
- 初めに紐づいたキャンペーンを「主キャンペーンソース」にしたい。
- リードごとに決められたキャンペーンを主キャンペーンソースにしたい。
といった要望がある場合、[取引の開始]のあとに手動でデータを更新するなどの手間が生じてしまいます。そこで今回は、この問題を解決するための方法をひとつご紹介します。※前置きが長くなってしまいました..。
以下3つの手順で実現可能です。
- リードと商談オブジェクトに参照型項目を追加する。
- 「リードの項目の対応付け」機能を設定する。
- 商談オブジェクトのトリガを作成する。
それぞれの手順の詳細を説明していきます。
商談の主キャンペーンソース項目をうまく指定する
手順1:リードと商談オブジェクトに参照型項目を追加する。
[設定] | [カスタマイズ] | [リード] | [項目]と、リードの項目の設定画面に進み、参照型項目を新規に作成します。参照先のオブジェクトは「キャンペーン」にします。まず、以下の画面のように、データ型として「参照関係」を選択し、[次へ]をクリックします。

参照関係を選択
次に、「関連先」オブジェクトで「キャンペーン」を選択し、[次へ]をクリックします。

関連先で「キャンペーン」を指定
続いて、以下の画面のように、項目のラベル名などを設定し次に進みます。※以降の画面はひたすら進むだけなので割愛します。

項目の情報を設定します。分かりやすい名称にしておいた方がよいです。
同様に、[設定] | [カスタマイズ] | [商談] | [項目]と進み、商談オブジェクトにも同じ参照型項目を作成します。※以下の画面のように、データ型と参照先が同じであればラベル名などは異なっていても問題ありません。ただ、項目名にはご注意を!

項目名と子リレーション名
手順2. 「リードの項目の対応付け」機能を設定する。
これは、以前の投稿「Salesforceで、リードのカスタム項目を、取引先/取引先責任者/商談オブジェクトのカスタム項目に引き継ぐ方法」で紹介した機能になります。以下の画面のように、上記「手順1」で作成したリードオブジェクトの項目と商談オブジェクトの項目を対応付けておきます。

リードカスタム項目の対応付け
手順3. 商談オブジェクトのトリガを作成する。
「商談が作成された際に、主キャンペーンソースの値を手順1で作成した項目の値で上書きする」という処理を実行するトリガを作成します。トリガの作成は、[設定] | [カスタマイズ] | [商談] | [トリガ]と進み、トリガを作成します。以下、トリガのサンプルです。
MainCampaignUpdate.Trigger trigger MainCampaignUpdate on Opportunity (before insert) { for(Opportunity o : Trigger.new){ //独自に用意した参照型(キャンペーン)項目に値が指定されている場合 if(o.main_campaign__c != null){ //主キャンペーンソースの値を上書きする o.CampaignId = o.main_campaign__c; } } }
トリガ作成の画面イメージは以下のとおりです。

商談トリガの新規作成
次に、以下のように、トリガの作成画面に進みます。ここでは、主キャンペーンソースを上書きするトリガを作成しています。

トリガの作成画面
以上で準備完了です!
これらの設定により、リードオブジェクトに追加した「キャンペーンの参照型項目」に値が設定された状態のリードを取引開始すると、作成された商談の「主キャンペーンソース」が「キャンペーンの参照型項目」の値で上書きされるようになります。実際に、リードの作成から取引開始までやってみましょう。
トリガ設定後
まず、トリガ設定後のリードの[取引の開始]です。
![トリガ設定後のリードの[取引の開始]](https://www.synergy-marketing.co.jp/blog/wp/wp-content/uploads/2014/06/20130910_b_16_LeadStart-resized-600.png)
トリガ設定後のリードの[取引の開始]
次に、追加した項目にキャンペーンの値をセットした状態で[取引の開始]をします。以下の画面のように、これまでと同じく、商談が作成されていますね。

これまでと同じく、商談ができています。
そして、商談の詳細画面を見ると、主キャンペーンソースが「Webキャンペーン1」となっています! 以下画面にあるとおり、作成日が新しい「展示会2」ではなく、リードの参照型項目の値であった「Webキャンペーン1」が主キャンペーンソースとなっています!

主キャンペーンソースが「展示会2」ではありません!
まとめです。
なぜこの方法で主キャンペーンソースの値が意図した内容となるかというと、「リードの取引開始」から「商談の作成」までの間に、設定した処理がうまく動作したためです。その処理の流れは以下のとおりです。
- リードの取引開始により商談が作成される。
- リードのカスタム項目の対応付け 設定により、リードのキャンペーン項目が作成される商談項目のキャンペーン項目(どちらも独自に作成したカスタム項目)にコピーされます。
- 商談が作成される際に、トリガが起動します。トリガの内容は「作成時に独自に作成したカスタム項目に値が指定されている場合は、主キャンペーンソース項目を上書きする」という動作になっているため、リードから受け継いだ値で主キャンペーンソースを上書きすることになります。
この方法を用いれば、リードごとに任意に商談の主キャンペーンソースを指定できます。また、リードごとに、「ある条件の場合は指定のキャンペーンを設定する」といったことも自動でしたい場合は、別途新たにトリガを作成することで対応できると思います。
Salesforceの標準機能を利用すれば、少しの工夫で手間を解消できますね! では!

※記載されている内容は掲載当時のものであり、一部現状とは内容が異なる場合があります。ご了承ください。