エンゲージメントを最大化する:Salesforceコンサルタントが解説するEinstein Next Best Action活用術

背景と応用シナリオ

Salesforceコンサルタントとして、私は日々多くのお客様から「顧客エンゲージメントをいかにして向上させるか」「一人ひとりのお客様に最適なタイミングで最適な提案を届けるにはどうすればよいか」という課題を伺います。情報が溢れる現代において、顧客は画一的なアプローチではなく、自身の状況やニーズを理解したパーソナライズされた体験を求めています。しかし、営業担当者やサービスエージェントが、膨大な顧客データの中から手動で「次にとるべき最善のアクション」を判断するのは非常に困難です。

ここで登場するのが、Salesforce Einstein Next Best Action(日: Einstein 次の最善のアクション)です。これは、ビジネスルール、予測モデル、そして顧客データを組み合わせて、リアルタイムで最適な提案やアクションをユーザーに提示する強力なレコメンデーションエンジンです。AIの力を活用し、あらゆる顧客接点において、一貫性のあるインテリジェントなガイダンスを提供します。

応用シナリオの例

  • 営業支援:取引先のレコードページで、「年間契約額が一定以上の顧客には、関連製品のクロスセルを提案する」「商談が停滞している場合は、特別割引を提示する」といったアクションを営業担当者に推奨します。これにより、商談の成約率向上や顧客単価の上昇に繋がります。
  • カスタマーサービス:ケース対応中のサービスエージェントに対し、「類似ケースで解決に繋がったナレッジ記事を提示する」「解約リスクが高い顧客には、ロイヤルティプログラムへの加入を勧める」といったアクションを推奨します。これにより、顧客満足度の向上と解約率の低下を実現します。
  • Experience Cloud(旧Community Cloud):顧客向けポータルサイトで、ログインユーザーのプロファイルや行動履歴に基づき、「新製品のトライアル案内」「関連セミナーへの招待」など、パーソナライズされたバナーやオファーを表示します。

このように、Einstein Next Best Actionは、単なる機能ではなく、顧客中心のビジネス戦略を実現するための強力なフレームワークなのです。


原理説明

Einstein Next Best Actionの魔法の裏側には、いくつかの主要なコンポーネントが連携して動作する仕組みがあります。コンサルタントとして、これらの構成要素を理解し、お客様の要件に合わせてどう組み合わせるかを設計することが重要です。

コアとなるのは、以下の3つの要素です。

  1. Recommendations (提案)
  2. Flows (フロー)
  3. Strategy Builder (戦略ビルダー)

1. Recommendations (提案)

「提案」とは、ユーザーに提示される具体的なアクションやオファーそのものです。これらはSalesforceの標準オブジェクトである Recommendation オブジェクトのレコードとして管理されます。各レコードには、提案の名称、説明、画像、承諾された際に実行されるアクション(フローの起動など)、拒否された際の処理などを定義します。例えば、「アップグレードプランのご案内」「30%割引クーポンの適用」といったものが、それぞれ1つのRecommendationレコードになります。

2. Flows (フロー)

Flowは、Next Best Actionの「実行エンジン」としての役割を担います。ユーザーが提案を「承諾」または「拒否」したときに、裏側で何が起こるかを定義するのがFlowです。例えば、ユーザーが「アップグレードプランのご案内」を承諾した場合、商談を作成し、担当者にToDoを割り当て、顧客に確認メールを送信する、といった一連のプロセスを自動化するフローを起動させることができます。この柔軟性により、単に提案を表示するだけでなく、実際のアクションまでをシームレスに繋げることが可能です。

3. Strategy Builder (戦略ビルダー)

Strategy Builderは、Next Best Actionの頭脳であり、どの提案を、どの順番で、どの顧客に表示するかというロジックを設計するためのビジュアルツールです。ドラッグ&ドロップの直感的なインターフェースで、複雑なビジネスルールを構築できます。

Strategy Builder内の主要な要素は以下の通りです。

  • Load (読み込み): 最初に、どのRecommendationレコードを戦略の候補として読み込むかを指定します。すべての提案を読み込むことも、特定のカテゴリの提案のみを読み込むことも可能です。
  • Filter (絞り込み): 読み込んだ提案の中から、特定の条件に合致するものだけを残します。例えば、「顧客の契約種別が『プレミアム』の場合のみ、この提案を表示する」「ケースの優先度が『高』の場合のみ、このアクションを提示する」といったルールを適用します。
  • Sort (並び替え): 複数の提案が条件に合致した場合に、どの提案を優先的に表示するかを定義します。例えば、「割引率が高い順」「期待収益額が大きい順」などで並び替えることができます。
  • Limit (制限): 最終的にユーザーに表示する提案の数を制限します。通常は、最も優先度の高い1つまたは数個の提案のみを表示します。
  • Branch (分岐): 条件に応じてロジックのフローを分岐させることができます。これにより、顧客セグメントごとに全く異なる提案ロジックを1つの戦略内で構築できます。
  • Apex: 宣言的な機能だけでは実現できない複雑なロジックが必要な場合は、Apexクラスを呼び出して動的に提案を生成したり、外部システムのデータを活用したりすることもできます。

これらのコンポーネントが連携し、「データソースから提案候補を読み込み (Load) → ビジネスルールで絞り込み (Filter) → 最適なものを選択 (Sort/Limit) → ユーザーに表示 → ユーザーのアクションに応じてプロセスを自動化 (Flow)」という一連の流れが実現されます。


示例代码

Strategy Builderは非常に強力ですが、時にはSalesforce内のデータだけでは不十分な場合や、リアルタイムで複雑な計算を行って提案を動的に生成したい場合があります。そのようなケースでは、Apexの InvocableMethod を活用して、独自のロジックを戦略に組み込むことができます。

以下のコードは、Salesforceの公式ドキュメントで紹介されている例を基に、特定の条件に基づいて動的にRecommendationオブジェクトのリストを生成するApexクラスです。このクラスをStrategy Builderから呼び出すことで、標準機能だけでは実現できない、より高度なパーソナライゼーションが可能になります。

public class GenerateRecommendations {

    // InvocableMethodアノテーションにより、このメソッドがFlowやStrategy Builderから呼び出し可能になります。
    // labelとdescriptionは、ビルダー画面での表示名と説明になります。
    @InvocableMethod(label='Generate Recommendations' description='Generates a list of recommendations.')
    public static List<List<Recommendation>> generate(List<Request> requests) {
        
        // 結果を格納するためのリストのリストを初期化します。
        // InvocableMethodは複数のリクエストを一度に処理する可能性があるため、
        // 戻り値は List<List<Recommendation>> という形式になります。
        List<List<Recommendation>> recommendationLists = new List<List<Recommendation>>();
        
        // 各リクエストをループで処理します。
        for (Request req : requests) {
            // このリクエストに対する提案を格納するリスト
            List<Recommendation> recommendations = new List<Recommendation>();
            
            // -------------------------------------------------------------------
            // ここに、独自のビジネスロジックを実装します。
            // 例えば、リクエストで渡されたAccount IDを基に、関連情報を照会し、
            // 条件に応じて動的に提案を作成します。
            // -------------------------------------------------------------------

            // 例:提案1(アップセル)の作成
            Recommendation crossSell = new Recommendation();
            crossSell.Name = 'Cross-Sell Opportunity'; // 提案の名前
            crossSell.Description = 'This customer is a good candidate for our premium product.'; // 提案の説明
            crossSell.AcceptanceLabel = 'Explore Offer'; // 承諾ボタンのラベル
            crossSell.RejectionLabel = 'Not Interested'; // 拒否ボタンのラベル
            // crossSell.ActionReference = 'Flow_Name_To_Launch_On_Accept'; // 承諾時に起動するフローのAPI名
            
            // 例:提案2(リテンション)の作成
            Recommendation retention = new Recommendation();
            retention.Name = 'Retention Offer';
            retention.Description = 'Offer a 10% discount to retain this high-value customer.';
            retention.AcceptanceLabel = 'Apply Discount';
            retention.RejectionLabel = 'Decline';
            
            // 作成した提案をリストに追加
            recommendations.add(crossSell);

            // 条件分岐の例:リクエストのisHighValueフラグがtrueの場合のみリテンション提案を追加
            if (req.isHighValue) {
                recommendations.add(retention);
            }

            // このリクエストに対する提案リストを、最終的な結果リストに追加
            recommendationLists.add(recommendations);
        }
        
        return recommendationLists;
    }
    
    // Strategy BuilderからApexに渡すデータを定義する内部クラス
    public class Request {
        @InvocableVariable(label='Account ID' description='The ID of the account.' required=true)
        public Id accountId;

        @InvocableVariable(label='Is High Value Customer' description='True if the customer is high-value.')
        public Boolean isHighValue;
    }
}

このApexクラスを有効化すると、Strategy Builderのパレットに「Generate Recommendations」という新しい要素が表示され、ドラッグ&ドロップで戦略に組み込むことができます。入力として取引先IDやカスタムフラグを渡し、出力として動的に生成された提案のリストを受け取ることができます。これにより、標準機能とカスタムコードの長所を組み合わせた、非常に柔軟で強力なレコメンデーション戦略を構築できます。


注意事项

Einstein Next Best Actionを導入・運用する際には、いくつかの点に注意が必要です。これらを事前に考慮することで、スムーズな導入と期待される効果の最大化に繋がります。

権限とアクセス設定

  • ユーザー権限: Next Best Actionコンポーネントを表示・操作するユーザーには、「フローを実行」権限が必要です。また、提案によって起動されるフローや参照されるオブジェクトへの適切なアクセス権も必要になります。
  • オブジェクト権限: Recommendation オブジェクトへの参照アクセス権が必要です。戦略を構築する管理者は、このオブジェクトへの作成・参照・編集・削除権限を持っている必要があります。

ガバナ制限とパフォーマンス

  • SOQLクエリ制限: Strategy Builder内の各要素は、内部的にSOQLクエリを実行します。複雑な戦略や大量のデータを扱う場合、ガバナ制限(特にSOQLクエリの発行回数)に達する可能性があります。戦略はできるだけシンプルに保ち、不要なデータの読み込みは避けるべきです。
  • 読み込みレコード数: 1つの「Load」要素で戦略に読み込める提案レコードの上限は2,000件です。これを超える場合は、事前に読み込むレコードを絞り込む条件を設定する必要があります。
  • Apexのガバナ制限: カスタムApexを呼び出す場合、そのApexコードは通常のガバナ制限(CPU時間、ヒープサイズなど)に従います。非効率なコードはパフォーマンスのボトルネックになるため、コードの最適化が重要です。
  • ページ表示速度: 複雑な戦略は、Lightningページの読み込み時間に影響を与える可能性があります。本番環境に展開する前に、必ずパフォーマンステストを実施してください。

データ品質

Next Best Actionの提案の質は、基になるデータの質に大きく依存します。「Garbage In, Garbage Out(ゴミを入れれば、ゴミしか出てこない)」の原則がここでも当てはまります。顧客データが不正確または不完全な場合、的外れな提案が表示され、かえって顧客体験を損なう可能性があります。導入前には、関連オブジェクトのデータクレンジングやエンリッチメントを検討することが不可欠です。


总结与最佳实践

Einstein Next Best Actionは、AIを活用して顧客エンゲージメントを次のレベルに引き上げるための強力なツールです。ルールベースのロジックと予測インテリジェンスを組み合わせることで、すべての顧客接点において、パーソナライズされ、一貫性があり、かつ価値のある提案をリアルタイムで提供することができます。

Salesforceコンサルタントとして、私がお客様に推奨するベストプラクティスは以下の通りです。

  1. スモールスタートで始める: 最初から全社規模で複雑な戦略を導入しようとせず、まずは特定の部署やユースケース(例:特定の製品のクロスセル、特定セグメントの顧客への解約防止策)に絞ってパイロット導入を行いましょう。小さな成功を積み重ね、効果を測定しながら段階的に展開していくことが成功の鍵です。
  2. ビジネス目標を明確にする: 「何を達成したいのか」というビジネス目標を最初に定義することが最も重要です。解約率の5%削減、クロスセル率の10%向上など、具体的で測定可能なKPIを設定し、戦略がその目標に貢献しているかを常に評価します。
  3. 常に反復・改善を行う: 提案の承諾率や拒否率、そしてそれがKPIに与える影響を定期的に分析します。Salesforceが提供する「Recommendation Strategy Metrics」などの分析ツールを活用し、どのルールが有効で、どの提案が響いていないのかをデータに基づいて判断し、戦略を継続的に改善していきましょう。
  4. ユーザー体験を最優先する: 提案は、企業が「売りたいもの」ではなく、顧客が「必要としているもの」でなければなりません。営業担当者やサービスエージェントが「これは役に立つ」と感じ、顧客が「これは自分向けだ」と感じるような、価値のある提案を設計することを心がけてください。
  5. 宣言的アプローチを優先し、必要に応じてコードを活用する: 可能な限りStrategy Builderの標準機能でロジックを構築し、メンテナンス性を高く保ちます。標準機能で要件を満たせない場合にのみ、Apexを活用して機能を拡張するというハイブリッドなアプローチが理想的です。

Einstein Next Best Actionを戦略的に活用することで、貴社のSalesforceは単なるCRMシステムから、ビジネス成長を能動的に促進するインテリジェントなパートナーへと進化するでしょう。

コメント