Salesforceは、パスワードではなく署名付きJWTでサーバー間連携を認証します — そしてMailInAppのAPIデータソースは、このフローをネイティブに話します。一度接続すれば、KPIスコアカードやチャートブロックが、ライブのOpportunity、Account、Contactの行に直接紐付きます。面倒を見るべきリフレッシュトークンも、送信のたびに再エクスポートするCSVも不要です。
ほとんどの「週次パイプライン」メールは、レポートのスクリーンショットであり、誰かがそれを貼り付けた瞬間に古くなります。チャートブロックをSalesforceに支えられたデータソースへ直接紐付けるということは、ブロック自身の数値が本物のSOQLクエリから来るということです — そして繰り返し送信は、送信のたびにそのクエリを新しく再実行するため、月曜日のダイジェストは実際に月曜日のパイプラインを反映します。
接続の仕組み
MailInApp
Connected Appの秘密鍵でJWTに署名します
Salesforceトークンエンドポイント
署名を検証し、アクセストークンを返します
Salesforce REST API
Bearerトークンで認証され、SOQLクエリを実行します
自分のメール
KPIスコアカード&チャートブロックが行にライブで紐付きます
すべてのステップは、送信のたびにサーバーサイドで行われます。パスワードが送信されることは一切なく、リフレッシュトークンもありません — 古くなったトークンは、新しいアサーションに署名することで置き換えられます。
これは、Salesforceが自身のサーバー間連携向けに文書化しているのと同じJWT Bearerフローであり、Salesforce専用に作られた独自の連携ではなく、MailInApp既存のAPIデータソース向けOAuth2認証モードに組み込まれています。
Connected Appを一度だけ設定する
Salesforce Setupで、Connected Appを作成し、OAuth設定を有効にし、Use digital signaturesの下で自己署名証明書をアップロードします — 証明書はSalesforceへ、対となるRSA秘密鍵はMailInAppへ渡します。Permitted UsersをAdmin approved users are pre-authorizedに設定してください。これによりやり取りが非対話的になります: スクリプトがクリックして通過するための同意画面は存在しません。Connected AppのConsumer Keyと、組織のMy Domain URLを控えておいてください — どちらもMailInApp側の接続設定に入力します。
SOQLクエリに向ける
データソースのEndpointはREST問い合わせURLで、クエリ文字列が実際に返ってくるデータそのものです:
SELECT Name, Amount, StageName, CloseDate FROM Opportunity WHERE IsClosed = false
Data pathをrecordsに設定します — Salesforceは問い合わせ結果をrecords配列に包んで返します。Owner.Emailのようなリレーションフィールドはネストして返り、MailInAppの行パーサーによって破棄されるため、クエリはフラットに保ってください。後でフィルタリングやマージのためにオーナーの識別子が必要な場合は、代わりにOwnerIdを選んでください。
マージタグではなく、ブロックを直接紐付ける
スタジオのデータパネルから、collectionロールでこの接続をプロジェクトに追加します — 繰り返しブロックが使うのと同じ紐付けです。そこから、KPIスコアカード、バー、ライン、円グラフブロックがそれぞれのインスペクターで直接紐付けられます:
Amountに設定しSum集計を使うKPIスコアカードは、ライブの「総オープンパイプライン」の数値になります。StageNameでグループ化し、Amountをシリーズ(こちらもSum集計)とする棒グラフは、ステージ別のパイプライン内訳になります。
どちらのブロックも、手で入力するマージタグを1つも必要としません — 紐付けがその作業を代わりに行い、ディールがステージを移動したり成立したりしても、どちらも正しいままです。
スケジュールで送信する
週次の繰り返し送信は、発火するたびにSOQLクエリを再実行し、Salesforceの現在の行に対して両方のブロックを再レンダリングします — 同じダイジェスト構造で、毎週月曜日に新しい数値が、誰も手作業で再構築することなく反映されます。各Opportunity自身のSalesforce URLへ向けたボタンブロックは、ダイジェストを読む人に、注目を引いた数値の裏にあるレコードをワンクリックで開く方法を提供します。
はじめに
JWT Bearerフロー用の証明書を持つSalesforce Connected Appを作成し、Consumer Key、インテグレーションユーザー名、秘密鍵を使ってMailInAppのデータソースタブでそれを接続し、recordsをデータパスとするSOQLクエリにエンドポイントを向け、その後スタジオのデータパネルからKPIスコアカードと棒グラフをそれに紐付けます。フィールドごとの完全な設定手順はSalesforce連携ガイドを参照してください。