連携
前提条件
- Salesforce に MoEngage アプリをセットアップするの手順に従って、Salesforce AppExchange から MoEngage アプリをインストールして構成してください。
対応範囲
手順
連携は大きく 2 つのステップに分かれています。- Connections:Connection は MoEngage ワークスペースへの認可です。複数の MoEngage ワークスペースを 1 つの Salesforce インスタンスに接続できます。
- Syncs:Sync は、2 つのシステム間で特定のデータを送信するためにリアルタイムで実行されるジョブです。同期タイプ(MoEngage から Salesforce、または Salesforce から MoEngage)、同期するエンティティ、データマッピングが含まれます。
MoEngage アプリを起動する
App Launcher をクリックし、MoEngage と入力して MoEngage App を選択します。
ステップ 1:接続をセットアップする
1
新しい接続を追加する
Connections > Add New Connection をクリックします。

2
MoEngage ワークスペースの詳細を入力する
ワークスペースの詳細を入力します。

3
接続を保存する
Save をクリックします。
ステップ 2:同期をセットアップする
このガイドでは、Salesforce の Contacts をユーザーとして MoEngage に同期する例を使用します。イベントの同期についても同様の手順で設定できます。Salesforce の Contacts をユーザーとして MoEngage に同期する
1
Map Fields を開く
Map Fields をクリックします。

2
新しい同期を追加する
Add new sync をクリックします。

3
同期の基本情報を入力する
同期名、ソースオブジェクト、ターゲットを入力します。

4
続行する
Next をクリックします。
5
データマッピングを構成する
2 つのシステム間のデータマッピングを構成します。
- 2 つのシステム間の識別子を定義します。MoEngage の識別子名は Customer ID で、Contact オブジェクトの任意のフィールドにマッピングできます。

- その他のフィールドのマッピングを設定します。MoEngage 属性(MoEngage ではユーザー属性として表示されます)を入力し、マッピング先の Salesforce フィールドを選択します。

- Save をクリックします。
Salesforce オブジェクトの同期を初めてセットアップする場合、Salesforce にトリガーをデプロイするよう求められます。Deploy をクリックして続行します。

トリガーのデプロイ時のエラー
最初のトリガーのデプロイが失敗する場合、多くは同期対象の Salesforce オブジェクト(例:Contact や Lead オブジェクトのルール)に設定されたカスタム入力規則が原因です。デプロイを成功させるには、システムがテストレコードを作成する必要があり、そのテストレコードが組織の入力規則を満たす必要があります。 デプロイが失敗すると、テストデータの入力を求めるモーダルが表示されます。
1
スニペットを分析する
システムは、その Salesforce オブジェクトの最小限の必須フィールドを含むコードスニペットをあらかじめ入力します。
2
カスタムフィールドを追加する
入力規則で必要なその他のフィールドと、対応するサンプル値を追加するために、このスニペットを修正する必要があります。
LastName の値と Email の正しい形式をチェックする入力規則トリガーがある場合は、サンプルの行を以下のように修正します。
数式フィールド
- Salesforce は、マッピングされた数式フィールドの基になるデータの変更を検出しません。
- 数式の計算結果のみが変更された場合、同期はトリガーされません。
複合フィールド
- 複合住所フィールドや位置情報フィールド(例:
MailingAddress)は直接マッピングしないでください。 - 代わりに、個々の構成要素をマッピングします。
MailingStreetMailingCityMailingStateMailingPostalCodeMailingCountry
- これにより、対応する MoEngage 属性との正確な同期が保証されます。
ステップ 3:MoEngage でプロファイルを表示する
1
セグメントを作成する
Segment > Create Segment に移動します。
2
ユーザーを検索する
メール ID またはその他の識別子でユーザーを検索します。データは MoEngage に流れ込み、ユーザープロファイルに表示されます。
リアルタイム更新の同期
デフォルトでは、新しい同期構成はリアルタイム更新が自動的に有効になります。同期対象の Salesforce オブジェクト内の既存レコードで、マッピングされたフィールドが変更されると、MoEngage への更新がトリガーされます。 リアルタイム同期を無効にするには、同期の横にある Deactivate をクリックします。フィールド変更の検出
- リアルタイム同期は、マッピングされたオブジェクトのレコードが作成されたとき、または既存のレコードでマッピングされたフィールドが 1 つ以上変更されたときにトリガーされます。
- マッピングされていないフィールドのみの更新では、MoEngage への同期はトリガーされません。
履歴データの同期
既存データの履歴同期はいつでもトリガーできます。これは MoEngage でデータをバックフィルしたい場合に便利です。履歴同期の実行
1
Sync をクリックする
同期の行にある Sync ボタンをクリックします。

2
バッチサイズを調整する(任意)
Salesforce の設定に応じて、バッチサイズを変更できます。
最適なバッチサイズは、MoEngage に同期するレコードあたりのフィールド数と、全体の同期量によって異なります。

3
履歴同期を開始する
Sync Historical Data をクリックします。
履歴同期のモニタリング
履歴同期を開始した後は、同期構成の横に表示されるステータスを確認して進行状況を追跡します。
履歴同期の最新の進行状況を確認するには、Sync Processing ボタンをクリックします。対応する Sync Queue レコードに移動し、詳細な進行状況と例外(ある場合)を確認できます。
各履歴同期レコード(Syncs > All Syncs > 同期名を選択)には、以下のメタデータも含まれています。

以下の手順で、履歴同期の現在の進行状況をモニタリングすることもできます。
1
Salesforce Apex Flex Queue を確認する
Salesforce Apex Flex Queue を開き、履歴同期が Holding 状態になっていないことを確認します。Apex クラス
HistoricalSyncBatch を検索します。この状態になっている場合は、バッチの順序を変更して MoEngage を優先させることができます。2
バッチが開始されたことを確認する
Flex Queue が空であるか、
HistoricalSyncBatch Apex クラスのレコードがない場合、バッチの処理が開始されています。3
Apex Jobs Queue を確認する
Apex Jobs Queue を開き、
HistoricalSyncBatch Apex クラスによって送信されたレコードを探します。関連する同期の Last Historic Sync Apex Batch Job ID を使用して検索することもできます。
覚えておくべき重要なポイント
- エンティティタイプごとに 1 つの同期:履歴同期は、MoEngage のエンティティタイプごとに一度に 1 つしか実行できません(Users に 1 つ、Events に 1 つ)。
- 例:Salesforce の Contacts と Leads が両方とも MoEngage の Users にマッピングされ、Salesforce の Opportunities と Deals が MoEngage の Events にマッピングされているとします。Contacts の同期(User 同期)を開始した場合、最初の同期が完了するまで Leads の同期を開始することはできません。ただし、Contacts の同期の実行中でも、Opportunities または Deals は別のエンティティ(Events)にマッピングされているため、これらの同期は開始できます。
- 手動での更新が必要:同期ステータスは自動的に更新されません。最新のステータスを確認するには、Refresh アイコンをクリックするか、ページを手動で更新してください。
- 最後の同期のステータス:表示されるステータスは、常にその構成で最も直近に試行された同期の結果を反映しています。
- 新しい同期の開始:新しい履歴同期を開始できるのは、その構成で最も直近の同期のステータスが Sync Scheduled または Sync Processing でない場合のみです。
Sync Queue
データを確実かつ効率的に同期するために、MoEngage アプリはすべての転送をインテリジェントな Sync Queue を通じて処理します。このシステムはパフォーマンスを自動的に最適化し、エラーを最小限に抑え、スマートなロジックを使用して失敗した試行を再試行します。 すべての同期(履歴またはリアルタイム)はこのキューを通じて管理されます。Sync Queue にアクセスすると、スケジュール済み、アクティブ、完了済みまで、すべてのジョブのステータスをモニタリングできます。デフォルトでは、Sync Queue には Real Time Syncs と Historical Syncs の 2 つのビューが含まれています。Sync Queue ビューの有効化
Sync Queue ビューの有効化
Sync Queue を簡単に管理するために、これらのビューを有効にすることをおすすめします。Salesforce ダッシュボードから以下の手順を実行します。
1
Setup を開く
右上の歯車アイコンをクリックし、Setup を選択します。
2
Object Manager を開く
Setup に移動し、Object Manager に移動します。
3
Sync Queue を開く
Sync Queue を選択します。
4
Lightning Record Pages を開く
Lightning Record Pages に移動してクリックします。
5
Sync Queue Record Page を開く
Sync Queue Record Page をクリックし、次に View をクリックします。
6
ページを有効化する
Activation をクリックします。
7
組織のデフォルトとして割り当てる
ORG DEFAULT を選択し、Assign as Org Default をクリックします。
8
Desktop を選択する
Desktop を選択し、Next をクリックします。
9
保存する
割り当てを確認し、Save をクリックします。

各 Sync Queue レコードには、以下の関連レコードもあります。

失敗した Sync Queue
以前に同期に失敗し、今後再試行されるレコードに対して作成される後続の Sync Queue レコードです。例外

リアルタイム同期の仕組み
作成時
- アクティブなマッピングがあるオブジェクトで新しいレコードが作成されると、MoEngage はそのオブジェクトのアクティブな接続ごとに 1 つの Sync Queue レコードを生成します。
- 例:2 つの接続が Contact にマッピングされている場合、Contact レコードを 1 つ作成すると 2 つの Sync Queue レコードが生成され、両方とも MoEngage に送信されます。
更新時
- Sync Queue レコードは、マッピングされたフィールドが 1 つ以上変更された場合にのみ作成されます。
- マッピングされていないフィールドの更新では、Sync Queue レコードは作成されません。
処理
- リアルタイム同期がトリガーされると、MoEngage はバックグラウンドで
MoEngageSyncQueueBatchを実行し、保留中のリアルタイム同期を取得してまとめて処理します。 - デフォルトのバッチサイズは Sync Queue Batch Size(デフォルト:
20)から取得されます。 - バッチの実行中に追加または更新された新しいレコードは、次の反復で処理されます。
- Flex Queue がいっぱいの場合、処理は Sync Queue Scheduler Time(デフォルト:
5分)を使用して再スケジュールされます。 - 「いっぱい」のしきい値は Flex Queue Limit(デフォルト:
50)で構成できます。
履歴同期
- 履歴同期は、スケジュールされるとすぐに Sync Queue に追加されます。
- Salesforce の Flex Queue がいっぱいの場合、履歴同期ジョブは Historical Sync Scheduler Time(デフォルト:
5分)で設定された遅延時間の後に再スケジュールされます。
処理
- 履歴同期の一部のレコードが失敗した場合、関連する例外レコードと Sync Queue レコードが作成されます。
- 各履歴同期について、Sync Queue レコードをクリックすると、失敗したレコードと関連する例外を確認できます。自動再試行ができない場合は、手動で再試行をトリガーすることもできます。
エラー処理
特定のエラーはバッチを中止させ、異なる再試行方法が必要になります。- Authentication Required → バッチが中止され、手動での再試行が必要です。
- BlockedClient → バッチが中止され、手動での再試行が必要です。
- Account Suspended → バッチが中止され、手動での再試行が必要です。
- Unsupported Media Type → バッチが中止され、手動での再試行が必要です。
- Server Error → バッチは中止されますが、自動的に再試行されます(再試行の上限内)。
再試行
- 各キュー項目では、最大 4 回の自動再試行(最初の試行を含む)が可能です。
- 以下のエラーでは自動再試行は行われません(ユーザーによる対応が必要です)。
- Account Suspended
- Authentication Required
- BlockedClient
- MissingAttributeError — レコードに Customer ID の値がない場合に発生します。
- ペイロードエラーが発生した場合、以下のいずれかになるまで、再試行ごとにバッチサイズが半分になります。
- バッチが成功する
- サイズが 1 になる
手動再試行

- リアルタイム同期の手動再試行は、現在の Sync Queue レコードにのみ適用されます。
- MoEngage は明確な成功または失敗のレスポンスを返します。
- Retry ボタンは、MoEngage Admin Permission セットを持つユーザーのみが使用できます。
- Manual Retry オプションは、以下のすべての条件を満たした場合に表示されます。
- 条件 A:Status = Failed または Partial Success、Retries ≥ 4、かつ Sync Status = Active。
- 条件 B:Error Type が
Account Suspended、Authentication Required、BlockedClient、MissingAttributeErrorのいずれかである。
動作
- リアルタイム同期:
- 即座に同期を試行します。
- 成功または失敗でレコードを更新します。
- 失敗した場合は Retries の回数を増やします。
- 再試行が失敗した場合は例外をログに記録します。
- リアルタイム同期の手動再試行は、現在の Sync Queue レコードでのみ機能し、成功または失敗のレスポンスを返します。
- 履歴同期:
- 履歴バッチジョブをスケジュールします。
- アクションを確認するために Scheduled のレスポンスを表示します。
レート制限時の動作
リアルタイム同期の動作
- 影響を受ける接続またはオブジェクトの処理が一時停止されます。
- 制限が解除されると、バックオフシーケンスの後に同期が自動的に再開されます。
履歴同期の動作
- 実行中のバッチは即座に中止されます。
- バックオフ再試行は 1 → 2 → 4 → 8 → 10 分のシーケンスに従います。
- 同じ接続またはオブジェクトに対する新しい履歴同期は、Scheduled 状態のままになります。
- 構成された制限が解除されると、履歴同期の再試行回数は自動的に 0 にリセットされます。
処理済み同期の削除
スケジュール
- インストールまたはアップグレード時に、MoEngage は Delete Processed Syncs ジョブを毎日午前 1:00 に実行するよう自動的にスケジュールします。
- このスケジュールは Setup > Scheduled Jobs で調整できます。
動作内容
- Record Deletion Interval(デフォルト:
7日)より古い、成功した Sync Queue レコード(および関連する失敗したキューと例外)を削除します。 - クリーンアップは Last Modified Date フィールドに基づいて行われます。
管理者向けの注意:パッケージインストールの制限
- パッケージングユーザーに、目的のコンテキストでスケジュールを実行するための完全なアクセス権がない場合、ジョブが正しく実行されないことがあります。
- 解決策:適切な権限で実行されるように、管理者ユーザーでジョブを再スケジュールしてください。
削除ジョブを再スケジュールする手順
削除ジョブを再スケジュールする手順
Salesforce ダッシュボードから以下の手順を実行します。
1
Scheduled Jobs を開く
Setup に移動し、Quick Find 検索バーに Scheduled Jobs と入力します。
2
ジョブを開く
結果から Scheduled Jobs をクリックします。
3
ジョブを管理する
Delete Processed Syncs をクリックし、次に Manage をクリックします。
4
cron 式を更新する(任意)
必要に応じて cron 式を更新します。
5
ジョブを再スケジュールする
Reschedule Job をクリックして、現在ログインしている管理者ユーザーで同じジョブを作成します。
Salesforce 組織のデフォルト値は、カスタム設定で構成することで変更できます。
よくある質問
データ同期にフィルターを適用できますか?
データ同期にフィルターを適用できますか?
いいえ。現在、データ同期にフィルターを追加することはできません。履歴同期では Salesforce 組織のすべてのレコードが取り込まれます。リアルタイム同期にはすべての新規作成と更新が含まれます。
リアルタイム同期を有効にするにはどうすればよいですか?
リアルタイム同期を有効にするにはどうすればよいですか?
同期が Active とマークされている限り、リアルタイム同期はデフォルトで有効になっています。リアルタイム同期をオフにするには、そのオブジェクトの同期を無効化してください。