1. はじめに
本記事でご紹介する実装方法は、Account Engagementで作成した登録フォームから登録した参加者がSalesforce上のキャンペーンメンバーとして登録され、その情報をもとにApexを利用してEventHubに登録する方法です。
企業によってSalesforceやAccount Engagementのデータの持ち方が異なりますので、上記方法以外の実装をされたい場合は社内のSalesforce AdminまたはSalesforceのカスタマーサポートまでお問い合わせください。
2. 【事前準備】Account EngagementとSalesforceの同期設定
EventHubとの連携設定を行う前に、Account EngagementとSalesforce間で以下の同期設定を行う必要があります。既に設定されている場合は、次のStepへお進みください。
❶ プロスペクトとリードの同期設定を行う
Account Engagementのプロスペクトとして登録されたら、Salesforceのリードとして自動登録される設定を行います。Salesforce上のリードとして登録されていない場合は新規リードで登録され、既にリードにいる場合はデータ内容が同期されます。
公式ページ:プロスペクトの同期
❷ SalesforceとAccount Engagement間のキャンペーン同期設定を行う
Salesforceで作成したキャンペーンがAccount Engagementへ同期される設定を行います。
公式ページ:Connect Account Engagement and Salesforce Campaigns
❸ SalesforceとAccount Engagement間のキャンペーンメンバー同期設定を行う
キャンペーンメンバーがSalesforceとAccount Engagement間で同期される設定を行います。
プロスペクトがSalesforceのキャンペーンメンバーとして表示されるようになります。
公式ページ:Campaign Member Sync
3. 【事前準備】Salesforceのカスタム項目作成
❶ リードオブジェクトにカスタム項目を作成する
カスタムプロフィール項目を作成
EventHubには、[メールアドレス、姓、名、所属先、部署、役職]のようにデフォルトで設定されている登録項目があります。それ以外のデータ(例:電話番号、人数規模etc)を登録者から収集したい場合は、"カスタムフィールド"を作成する必要があります。カスタムフィールドのデータをAccount EngagementからEventHubに連携する際には、以下の設定を行いましょう。
プロスペクトに蓄積するカスタムフィールドのデータを、Salesforceのリードとしてデータ連携するために、リードオブジェクトへカスタムフィールドと同じ項目を追加します。この時、ドロップダウンやチェックボックスの場合は選択肢も作成しましょう。
手順)[設定]>[オブジェクトマネージャ]>[リード]>[項目とリレーション]>[新規]
参加日程を連携するための項目を作成
<attention>[ウェビナーモード]で、開催日程が複数設定されているイベントへ連携する場合は、ユーザーが選択した参加日程を連携する必要があるため、以下フィールドの作成が必須です。開催日程が1つの場合は指定は不要ですので、本設定はしなくても構いません。</attention>
ユーザーが選択した参加日程 「eventScheduleId」を連携して格納するための項目を設定します。
手順)[設定]>[オブジェクトマネージャ]>[リード]>[項目とリレーション]>[新規]
| 設定する値 | |
| データ型 | テキスト |
| 項目の表示ラベル | お好きな名称 |
| 文字数 | 100 |
| 項目名 | eventScheduleId |
❷ 取引先責任者オブジェクトにカスタム項目を作成・連携する
<attention>[ウェビナーモード]で、開催日程が複数設定されているイベントへ連携する場合は、ユーザーが選択した参加日程を連携する必要があるため、以下フィールドの作成が必須です。開催日程が1つの場合は指定は不要ですので、本設定はしなくても構いません。次のStepへお進みください。</attention>
参加日程を連携するための項目を作成
ユーザーが選択した参加日程 「eventScheduleId」をリードから連携して格納するための項目を設定します。
① [設定]>[オブジェクトマネージャ]>[取引先責任者]>[項目とリレーション]>[新規]より、以下を設定します。
| 設定する値 | |
| データ型 | テキスト |
| 項目の表示ラベル | お好きな名称 |
| 文字数 | 100 |
| 項目名 | eventScheduleId |
❸ リード項目の対応付けを設定する
取引先責任者へも、入力された「eventScheduleId」などの値がリード経由で自動で引き継がれるように設定します。
① [設定]>[オブジェクトマネージャ]>[リード]>[項目とリレーション]>[リードの項目の対応付け]をクリック
② [取引先責任者]のタブをクリック
③ リードと取引先責任者のeventScheduleIdを対応づけて、[保存]をクリックします。
❹ キャンペーンオブジェクトにカスタム項目を作成
[設定]>[オブジェクトマネージャ]>[キャンペーンメンバー]>[項目とリレーション]>[新規]より、以下3つの項目を作成します。
eventKey
EventHubで作成したイベントのeventKey
| 設定する値 | |
| データ型 | テキスト |
| 項目の表示ラベル | お好きな名称 |
| 文字数 | 100 |
| 項目名 | eventKey |
ticketId
登録用に作成したチケットフォームのticketIdを入力する項目
| 設定する値 | |
| データ型 | テキスト |
| 項目の表示ラベル | お好きな名称 |
| 文字数 | 100 |
| 項目名 | ticketId |
複数日程
ユーザーが登録したイベント(=キャンペーン)が複数日程イベントか判別する項目
| 設定する値 | |
| データ型 | チェックボックス |
| 項目の表示ラベル | お好きな名称 |
| 項目名 | MultipleDay |
| デフォルト | チェックなし |
❺ キャンペーンメンバーオブジェクトにカスタム項目を作成
ユーザーが選択した参加日程「eventScheduleId」をリードや取引先責任者から連携して格納するための項目を設定します。
手順)[設定]>[オブジェクトマネージャ]>[キャンペーンメンバー]>[項目とリレーション]>[新規]
| 設定する値 | |
| データ型 | テキスト |
| 項目の表示ラベル | お好きな名称 |
| 文字数 | 100 |
| 項目名 | eventScheduleId |
4. 【事前準備】Account Engagementのプロスペクト項目作成
手順)[Account Engagement 設定] > [オブジェクト設定] > [プロスペクト項目]
❶ カスタムフィールド用のプロスペクト項目を作成する
登録フォームで収集するカスタムフィールドに対応するプロスペクト項目を作成します。
❷ 参加日程を連携するための項目を作成する
<attention>[ウェビナーモード]で、開催日程が複数設定されているイベントへ連携する場合は、ユーザーが選択した日程を連携する必要があるため、以下フィールドの作成が必須です。開催日程が1つの場合は指定は不要ですので、本設定はしなくても構いません。</attention>
ユーザーが選択した参加日程 「eventScheduleId」を格納するための項目を設定します。
| 設定する値 | |
| 名前 | お好きな名称 |
| カスタム項目ID | eventScheduleId |
| 種別 | テキスト |
| salesforce.com 項目名 | 3-1 ❷で作成したSalesforceのリードオブジェクトを選択 |
5. 【事前準備】EventHubのプロフィールにカスタムフィールド作成
キャンペーンメンバーの情報を元にEventHubへ登録データが連携されるため、EventHubにも同様にカスタムフィールドを作成します。ドロップダウンやチェックボックスの場合は選択肢も作成しましょう。
手順)プロフィール項目を新規作成する
こちらで項目作成の準備は完了です🙌Account Engagementで取得したカスタムフィールド/参加日程のデータが、Salesforceのリード/取引先責任者/キャンペーン/キャンペーンメンバーを通じてEventHubのカスタムフィールド/参加日程に連携される仕様となっています。
次は、Salesforceの設定に進みます。
6. Salesforceで外部ログイン情報を作成
① Salesforceにて、[設定]>[指定ログイン情報]>[外部ログイン情報]のタブより、[新規]をクリックします。
② 新規外部ログイン情報に以下の項目を入力し、[保存]をクリックします。
| 設定する値 | |
| 表示ラベル | お好きな名称を入力します。 |
| 名前 | EventHubIntegrationと入力します。 |
| 認証プロトコル | カスタム |
[プリンシパル]を作成します
① [プリンシパル] より[新規]ボタンをクリックし、以下の情報を設定します。
| 設定する値 | |
| パラメーター名 | お好きな名称を入力します。 |
② [追加]ボタンをクリックします。
| 設定する値 | |
| 名前 | APIKeyと入力します。 |
| 値 | 管理画面から取得したAPI-KEYを入力します。 APIキーの発行方法を参考に、EventHubからAPIキーを発行します。 こちらのキーは次の手順で必要となります。一度発行したら二度と表示されませんので、発行時 メモに控えるようにしてください。 |
[カスタムヘッダー]を作成します
① [カスタムヘッダー] より[新規]ボタンをクリックし、以下の情報を設定します。
| 設定する値 | |
| 名前 | X-API-KEYと入力します。 |
| 値 | {!$Credential.EventHubIntegration.APIKey}と入力します。 |
[プロファイル]を指定します
作成した外部ログイン情報のプリンシパルを、フローが実行できるようにプロファイルで許可設定を行います。
① [設定] > [プロファイル] より、設定対象のプロファイルB2BMA Integration Userを選択します。
② 画面内の [外部ログイン情報のプリンシパルアクセス] をクリックします。
※見当たらない場合は、画面を下にスクロールして「有効化された外部ログイン情報のプリンシパル」のセクションを探し、[編集] をクリックします。
③ [編集] をクリックし、[利用可能な外部ログイン情報のプリンシパル]から、手順6で作成した [外部ログイン情報名 - プリンシパル名] を選択して「追加」し、[保存] します。
7. Salesforceで指定ログイン情報を作成
連携先のEventHub APIの認証情報やエンドポイントURLを設定します。
① [設定] > [指定ログイン情報] > [指定ログイン情報]のタブより、[新規]をクリックします。
② 新規ログイン情報に以下の項目を入力し、[保存]をクリックします。
| 設定する値 | |
| 表示ラベル | お好きな名称を入力します。 |
| 名前 | お好きな名称を入力します。 |
| URL | https://api.eventhub.jp |
| 外部ログイン情報 | 6. Salesforceで外部ログイン情報を作成で作成した外部ログイン情報を選択します。 |
| コールアウトオプション | 認証ヘッダーを生成にチェックオン |
③ [編集]をクリックし、[認証] > [外部ログイン情報]にて6. Salesforceで外部ログイン情報を作成で作成した外部ログイン情報を選択し[保存]をクリックします。
8. Salesforceで自動化フローを作成
Salesforceの[設定]>[プロセスの自動化]>[フロー]から以下のようなフローを作成します。
① [トリガーされた自動化]>[レコードトリガーフロー]をクリックします。
② 以下のフローを作成する
| 設定する値 | |
| オブジェクトを選択 | キャンペーンメンバー |
| トリガーを設定 | レコードが作成された |
| エントリ条件を設定 | 数式の評価がTrueになる |
| 数式に以下の値を貼り付け、[構文を確認]をクリックします。 (!ISBLANK({!$Record.Campaign.eventKey__c}))&&(!ISBLANK({!$Record.Campaign.TicketId__c})) | |
| フローを最適化 | アクションと関連レコード |
| 非同期パスを追加 | ON |
❶ フローを作成する:プロフィール情報を設定する
[非同期に実行]
① フロー上の[非同期に実行]の下にある[+]をクリックします。
② [アクション]をクリックし、画面右下[HTTPコールアウト作成]をクリックします。
③ 新規HTTPコールアウトに以下の項目を設定し、[次へ]をクリックします。
| 設定する値 | |
| 名前 | お好きな名称を入力してください。 |
| 指定ログイン情報 | 6. Salesforceで外部ログイン情報を作成で作成した外部ログイン情報を選択します。 |
④ 以下の項目を設定し、[次へ]をクリックします。
[呼び出し可能なアクションを設定]
| 設定する値 | |
| 表示ラベル | お好きな名称を入力してください。 |
| メソッド | POST |
[URLパスを設定]
| 設定する値 | |
| URL | https://api.eventhub.jpであることを確認してください。 |
| URLパス | /v1/users/create/{eventKey} |
| キー | eventKeyであることを確認してください。 |
| データ型 | 文字列 |
[クエリパラメーターキーを設定]>[+キーを追加]
| 設定する値 | |
| キー | lang |
| データ型 | 文字列 |
| 必須 | チェックをONにしてください。 |
⑤ [サンプルJSON要求]に値を設定し、[確認]をクリック>[次へ]をクリックします。
値は、下記テンプレートを参考に、ご利用イベントに従って編集して値を設定します。
{
"email": "testuser@eventhub.jp",
"lastName": "山田",
"firstName": "太郎",
"affiliation": "株式会社EventHub",
"department": "開発部",
"position": "部長",
"customFieldA001": "興味あり",
"customFieldA002": "a;b;c",
"eventScheduleId": "123",
"ticketId": "xxxxxx-xxxxx-xxxxx-xxxxxx"
}| 設定する値 | |
| ①KEY | イベントで利用するカスタムフィールドの数に合わせて、テンプレートを編集してください。customFieldA001~customFieldA005まで利用する場合は、その個数分の行を追加してください。 |
| ②Value | 文字列であれば何でも構いません。このまま貼り付けてください。 ※実際のデータは、Salesforceのレコード項目を割り当てます。 |
⑤ [サンプル応答方法を選択]にて、[応答の例を使用]をクリック>[次へ]をクリックします。
⑥ [サンプルJSON応答]に以下の値をこのまま貼り付け、[確認]をクリック>[保存]をクリックします。
{
"userId": "f7659617-afde-48c2-8930-757f380b7c50",
"email": "testuser@eventhub.jp",
"lastName": "山田",
"firstName": "太郎",
"affiliation": "株式会社EventHub",
"department": "開発部",
"position": "部長",
"eventScheduleId": "123",
"ticketId": "xxxxxx-xxxxx-xxxxx-xxxxxx",
"customFields": [
{
"customFieldId": 124,
"name": "textフィールド",
"value": "typeがtextの場合は自由記述"
}
]
"utmParams": {
"utm_source": "{{lead.utm_source}}",
"utm_medium": "{{lead.utm_medium}}",
"utm_campaign": "{{lead.utm_campaign}}",
"utm_term": "{{lead.utm_term}}",
"utm_content": "{{lead.utm_content}}"
}
}⑦ フローに戻り、[アクション]にて以下を設定します。
| 設定する値 | ||
| 表示ラベル | お好きな名称を入力します。 | |
| API参照名 | お好きな名称を入力します。 | |
| URL パス値を指定 | eventkey | 値に{!$Record.キャンペーンID.eventkey__c}を設定します。 |
| クエリパラメーターを設定 | lang | 値に"ja"と入力します。 |
| リクエストボディを設定 | body | 値のプルダウンより、[ + 新規リソース]をクリックします。 新たに設定をします。 |
⑧ [アクション]>[リクエストボディ]>[ + 新規リソース]のAPI参照名を設定し、[完了]をクリックします。
⑨ 上記で作成したアクションの上にある[+] > [割り当て]をクリックします。
⑩ [表示ラベル]と[API参照名]を設定します。
| 設定する値 | |
| 表示ラベル | お好きな名称を入力します。 |
| API参照名 | お好きな名称を入力します。 |
11. [+割り当てを追加]>[Apexで定義された変数]をクリックします。
データ連携したい項目を以下のように設定します。演算子は[次の文字列と一致する]を選択します。
| 変数 | 演算子 | 値 | 設定:必須/任意 |
| ticketId | 次の文字列と一致する | {!$Record.Campaign.TicketId__c} | 必須 |
| {!$Record.Email} | 必須 | ||
| lastName | {!$Record.LastName} | 必須 | |
| firstName | {!$Record.FirstName} | 必須 | |
| affiliation | {!$Record.CompanyOrAccount} | 必須 | |
| department | {!$Record.Department__c} *キャンペーンメンバーに部署に該当する項目を作成されている場合はそのAPI名を設定してください。作成していない場合は、[Department]でAPI名を設定してください。 |
任意 | |
| position | {!$Record.Title} | 任意 | |
| eventScheduleId | {!$Record.eventScheduleId__c} | 任意 *ウェビナーモードで開催日程を複数設ける時は必須 |
|
| customFieldIdXXX |
customFieldIdを入力します。 カスタムフィールドの個数に応じてカスタムフィールドキーを設定してください。 |
任意 *カスタムプロフィールを連携する場合のみ |
❷ フローを作成する:参加日程の割り当て
[即時実行]
登録したイベントが複数日程かどうかを判定し、条件に応じてキャンペーンメンバーの 「eventScheduleId」を自動で更新します。
複数日程 × 取引先責任者の場合
取引先責任者に紐づくeventScheduleIdを、キャンペーンメンバーのeventScheduleIdとして設定します。複数日程 × リードの場合
リードに紐づくeventScheduleIdを、キャンペーンメンバーのeventScheduleIdとして設定します。単一日程の場合
何も設定しません。
この処理により、参加者の属性(取引先責任者/リード)に応じて、正しい参加日程がキャンペーンメンバーへ自動反映されます。
① フロー上の[同期実行]の下にある[+]をクリック、[決定]をクリックします。以下を設定します。
| 設定する値 | |
| 表示ラベル | お好きな名称を入力します。 |
| API参照名 | お好きな名称を入力します。 |
| 決定ロジックを選択 | 条件を手動で設定 |
② 結果を設定します。上から順に、[結果の詳細]を設定します。
a. 複数日程 × 取引先責任者の場合
| 設定する値 | 例 | |
| 結果の表示ラベル | お好きな名称を入力します。 | 複数日程&取引先責任者 |
| 結果のAPI参照名 | お好きな名称を入力します。 | |
| 結果を実行する条件の要件 | すべての条件に一致(AND) |
| リソース | 演算子 | 値 |
| キャンペーンID>複数日程 | 次の文字列と一致する | True |
| 取引先責任者ID>取引先責任者ID | null | False |
b. 複数日程 × リードの場合
| 設定する値 | 例 | |
| 結果の表示ラベル | お好きな名称を入力します。 | 複数日程&リード |
| 結果のAPI参照名 | お好きな名称を入力します。 | |
| 結果を実行する条件の要件 | すべての条件に一致(AND) |
| リソース | 演算子 | 値 |
| キャンペーンID>複数日程 | 次の文字列と一致する | True |
| 取引先責任者ID>取引先責任者ID | null | False |
c. 単一日程の場合
| 設定する値 | |
| 結果の表示ラベル | お好きな名称を入力します。 |
③ レコードを更新する処理を設定します。
a. 複数日程 × 取引先責任者の場合
[+]をクリックして、[関連レコードを更新]をクリックし、以下の項目を設定します。
| リソース | 設定する値 | |
| 表示ラベル | お好きな名称を入力します。 | |
| API参照名 | お好きな名称を入力します。 | |
更新するレコードを検索してその値を設定する方法 |
フローをトリガーした キャンペーンメンバー レコードを使用 | |
| レコード を更新する条件の要件 | なし -常にレコードを更新 | |
| キャンペーンメンバー の項目値を レコード に設定 | 項目 | eventScheduleId |
| 値 | {!$Record.Contact.eventScheduleId__c} |
b. 複数日程 × リードの場合
[+]をクリックして、[関連レコードを更新]をクリックし、以下の項目を設定します。
| リソース | 設定する値 | |
| 表示ラベル | お好きな名称を入力します。 | |
| API参照名 | お好きな名称を入力します。 | |
更新するレコードを検索してその値を設定する方法 |
フローをトリガーした キャンペーンメンバー レコードを使用 | |
| レコード を更新する条件の要件 | なし -常にレコードを更新 | |
| キャンペーンメンバー の項目値を レコード に設定 | 項目 | eventScheduleId |
| 値 | {!$Record.Lead.eventScheduleId__c} |
④ [保存]をクリックして、フローを[有効化]します。
連携をするための基本的な設定は、こちらで完了です🎊
9. イベントごとの運用フロー
ここからは、イベントを開催するたびに設定が必要となる項目についてご説明します。
❶ EventHubでチケットフォームを作成する
EventHubで開催するイベントのチケット・フォームを作成します。Account Engagementで作成したフォームから登録したユーザーは、チケット・フォームを通してEventHubへユーザー登録がされます。
以下のページを参考にチケット・フォームを作成しましょう。
登録期限や上限数、ユーザータイプ[来場者/出展者]、コンテンツグループの設定なども反映されます。
<attention>
- イベントの閉鎖日時を過ぎると登録ができません。
- チケット・フォームの登録期限や上限数を超えると登録ができません。
- ステータスが販売中・非公開の場合は登録が可能ですが、準備中の場合は登録ができません。
- API連携では有料チケットの作成ができません。
上記のいずれかが該当した場合、「Ticket cost must be free and status on sale or private to register a user」というエラーが出現し、ユーザー登録ができません。EventHubのチケット設定を変更してください。</attention>
❷ Salesforceでキャンペーンを作成する
eventKeyとticketIdを設定する
[eventKey]と[ticketId]にはAPI連携に必要なIDを取得するを参考に、作成したイベントとチケットフォームのIDを入力します。
複数日程のイベントか否かを設定する
[ウェビナーモード]で、開催日程が複数設定されているイベントへ連携する場合は、チェックをONに設定します。
キャンペーンを[有効化]に設定して[保存]すると、SalesforceとAccount Engagement間のキャンペーン同期により、Account Engagement上でもキャンペーンが確認できるようになります。
❸ Account Engagementで登録フォームを作成する
<attention>Account Engagementでフォームを作成した場合、EventHubの利用規約及びプライバシーポリシーに同意した上で登録が行われるようにしてください。
詳細は参加者からEventHub利用規約・プライバシーポリシーの同意を取得するをご覧ください。</attention>
Account Engagementで登録フォームを作成します。
作成時の[完了アクション]では、[キャンペーンに追加]を選択し、❷ Salesforceでキャンペーンを作成するで作成したキャンペーンを設定します。
手順)[コンテンツ]>[フォーム]>[ + フォームを追加]
ユーザーが参加日程を選択できる項目をフォーム上に追加する
<attention>ユーザーが選択した参加日程を連携する必要があるため、以下の設定が必須です。開催日程が1つの場合は指定は不要ですので、本設定は不要です。</attention>
① [❷ 項目]>[ + 新しい項目を追加]をクリックします。
② [基本]タブで以下の項目を設定します。
| 設定する値 | 例 | |
| ラベル | お好きな名称を設定します。 | 参加日程 |
| プロスペクト項目 | 4. 【事前準備】Account Engagementのプロスペクト項目作成で作成したカスタムプロスペクト項目「eventScheduleId」を選択します。 | |
| 種別 | ドロップダウン、もしくはラジオボタン | ドロップダウン |
| データ形式 | テキスト | |
| 必須 | チェックを入れます |
② 次に、[値]タブに切り替えます。[+新しい値を追加]をクリックして、以下を設定します。日程の数だけ行を追加しましょう。
| 設定する値 | 例 | ||
| ① | 値 | 管理画面から取得するeventScheduleIdの実際の値を設定します。詳しくは、eventScheduleIdをご覧ください。 | 12345 |
| ② | 表示内容 |
フォーム上に表示する開催日程を設定します。 *「A」の文字をクリックすると、本エリアが表示されます。 |
2025/10/18 11:00-12:00 |
<attention>誤登録防止のために開催終了した日程は削除してください。ユーザーが過去日の開催日程を指定して登録をしても、EventHubへの登録は可能です。</attention>
③ [保存]をクリックしてフォームを保存します。
これで全ての設定は完了です🎊問題なくEventHubへ参加登録ができるか、検証をしてみましょう。
<tips> 連携がエラーとなった場合は、管理者のメールアドレスへ以下のようなメールがSalesforceから配信されます。Apexやフローで発生したエラーメールの通知を設定していない場合は、以下2つの設定していただくことで、エラー内容をご確認いただくことが可能です。
技術者向けAPIドキュメントに記載のエラーレスポンスや「API:参加登録連携のエラー詳細」のヘルプ記事を参照しながらエラーを解消してください。
</tips>