フォームハンドラへの外部フォームの接続
フォームハンドラーを作成して公開したら、データを Salesforce に送信するように外部フォームを設定します。
必要なエディション
サポートされているエディションを表示する。
| 必要なユーザー権限 | |
|---|---|
| フォームハンドラーを作成する | 「Marketing Cloud マネージャー」権限セット および 任意の CMS ワークスペース寄稿者ロール |
| フォームハンドラーを公開する | 「Marketing Cloud マネージャー」権限セット および コンテンツ管理者またはコンテンツマネージャーの CMS ワークスペース寄稿者ロール |
| CORS 許可リストを設定する | 「すべてのデータの編集」 |
この手順を完了する前に、フォームハンドラを作成して公開します。
フォームから Salesforce にデータを送信する方法は 2 つあります。サイトの構造と機能に最も適した接続種別を選択します。
| JavaScript スニペット (クライアント側) | 直接 POST URL (サーバー側) |
|
|---|---|---|
| しくみ | 訪問者がフォームを送信すると、ページのスクリプトによってフォームデータが Salesforce に送信されます。 | フォームは、ページにスクリプトなしでデータを Salesforce URL に直接投稿します。 |
| サイトに追加 | ページの HTML に貼り付ける <script> タグとフォーム属性。 |
フォームまたは Web フック送信先のアクションとして設定する URL。 |
| 最適な用途 | HTML を制御し、スクリプトを追加できるページ。 | カスタムスクリプト、厳格なコンテンツセキュリティポリシー (CSP) ルールを使用するページ、およびバックエンドサーバーから投稿するフォームを許可しないサードパーティフォームビルダー。 |
| Web 追跡をサポート | あり | 不可 |
| ID 解決をサポート | あり | 不可 |
| CORS 許可リストエントリが必要 | はい | はい |
どちらの方法も同じフォームハンドラーにデータを送信し、同じフローをトリガーします。どちらの方法でも、CORS 許可リストでドメインを承認する必要があります。
どちらの接続種別でも、フォームの各項目で HTML name 属性がフォームハンドラの対応する外部項目名と完全に一致するようにします。名前が一致しない場合、フォームハンドラーは値を取得しません。たとえば、外部項目名email_addressをEmail項目に対応付けた場合、フォームの対応する項目の name 属性も email_address である必要があります。
オプション 1: クライアント側の接続を使用するようにフォームを設定する
この方法は、ページの HTML を制御し、ページにスクリプトを追加できる場合に使用します。スクリプトは訪問者のブラウザーで実行されるため、この方法では Web 追跡と ID 解決がサポートされます。そのため、この方法ではフォーム送信を訪問者の Web 活動に接続できます。
- フォームハンドラーを公開します。
-
[コードスニペット] タブの [クライアント側フォームハンドラー] で、追跡スクリプトをコピーします。スクリプトは次の例に似ています。
<script async src="https://YOUR_DOMAIN/lp/assets/scripts/external-form-handler-host.min.js" onload="SFDCFormHandler.init('https://YOUR_DOMAIN/lp')"></script> -
サイトの HTML コードで、閉じ
</body>タグの前にスクリプトを貼り付けます。 -
[コードスニペット] タブで、フォーム属性をコピーします。属性は次の例に似ています。
<form id="CONTENT_KEY" data-uma-forms="true"></form> -
HTML で、
id属性とdata-uma-forms属性を<form>タグに追加します。 -
各フォームフィールドの HTML
name属性が、対応付けられた外部フィールド名と一致することを確認します。 - フォームをホストするドメインを CORS 許可リストに追加します。このステップでは、ドメインが送信を Salesforce に送信することを承認します。
- ユーザーエンゲージメントを監視するには、Web 追跡を有効にします。
訪問者がフォームを送信すると、スクリプトによってデータが Salesforce に送信され、フォームハンドラーによって送信が処理されてフローがトリガーされます。次に、フォームハンドラーは、設定した成功またはエラーの URL にリダイレクトします。
オプション 2: サーバー側接続を使用するようにフォームを設定する
ページにコードを追加できない、またはコードにカスタム設定ができないときは、サーバー側接続を使用します。この方法では、フォームハンドラーが送信先 URL を指定し、その URL にデータを送信するようにフォームを設定します。スクリプトを埋め込まないため、この方法はカスタム JavaScript を許可しないフォームツールで機能します。この方法は、厳格なコンテンツセキュリティポリシー (CSP) ルールがあるページや、バックエンドサーバーから送信するフォームでも役立ちます。
-
フォームハンドラーの [コードスニペット] タブの [サーバー側フォームハンドラー] で、フォームアクション URL をコピーします。URL は次の例のようになります。
https://YOUR_DOMAIN/lp/cms/form/submit/v1/CONTENT_KEY -
データを Salesforce に送信するようにフォームを設定します。実装手順は、フォームの実装方法によって異なります。
サードパーティのフォームビルダーまたはプラグインを使用している場合 サードパーティツールの設定で、フォームのアクション、投稿先 URL、または Web フック送信先を設定する項目を見つけます。その項目に Salesforce URL を入力します。 HTML を変更できるが、スクリプトを追加できない場合 <form>タグのaction属性を Salesforce URL に設定し、method属性をPOSTに設定します。フォームでバックエンドプロセスを使用している場合 POST 要求をフォームデータと共に application/x-www-form-urlencodedエンコードを使用して Salesforce URL に送信します。 -
各項目の名前が、対応付けられた外部項目名と完全に一致することを確認します。
フォームハンドラーは、項目が完全に一致する場合にのみ項目を取得します。
- フォームをホストするドメインを CORS 許可リストに追加します。このステップでは、ドメインが送信を Salesforce に送信することを承認します。
CORS 許可リストの設定
どちらの接続方法でも、Salesforce でフォーム送信を受け入れる前にドメインを承認する必要があります。ドメインを承認しない場合、Salesforce は処理する前に申請をブロックします。ドメインを承認するには、CORS 許可リストに追加します。
-
フォームをホストするドメイン (
https://www.example.comなど) を特定します。すべてのサブドメインを承認するには、https://*.example.comなどのワイルドカードを使用します。 - ドメインを CORS 許可リストに追加します。
