外部フォームでのMarketoデータ送信(空フォーム利用)
参考
以下のブログ記事を参考に、もう少し詳しくやり方を記述してみました。
https://developers.marketo.com/blog/make-a-marketo-form-submission-in-the-background-3/
ユースケース
Marketoフォームではないフォーム(非Marketoフォーム)の入力内容を、Marketoにもデータを入れたいし、別のプラットフォームにも入れたい&タギング(cookie)も紐づけたい。
※JavascriptによるAssociate lead の非推奨化に伴う代替案としても利用可。
Munchkin API - associateLead メソッドの使用非推奨について
Deprecation of Munchkin Associate Lead Method
どうやって?
非表示のMarketoフォームを埋め込み、Forms2.0 APIを使ってデータを送信する。
※Associate lead APIで送信する方法もあるが、スクリプトの実装が必要だった。
実装方法
1)フィールドをすべて削除したフォームを作成。

送信ボタンだけが残るようにフィールドをすべて削除します。
また、フォーム入力後に遷移させるページの設定(「ありがとうございましたページ」の設定)を設定し、
「承認して終了」します。
2)埋め込みコードをコピーしてメモ帳ソフトに貼り付ける。
1で作成したフォーム画面で、「フォームアクション」>「埋め込みコード」をクリックし、コード部分をコピーして端末のメモ帳ソフトに貼り付けます。
※フォーム作成直後は「埋め込みコード」が表示されない場合があるので、ブラウザを更新してから再度確認してください。


3)スクリプトに修正を加える。
メモ帳ソフトに貼り付けたコードの<form 〜 </form>の部分を以下のように書き換えます。

変更前
<form id="mktoForm_XXXX"></form>
変更後
<form id="mktoForm_XXXX" style="display:none"></form>
※XXXXの部分はフォームのIDが入ります。
4)3で修正した埋め込みコードをウェブページに埋める。
3で修正した埋め込みコードを、非Marketoフォームが実装されているページに埋めます。
※Tag Manager で実装も可能です。実装方法は後述「※参考※ Google Tag Managerでの実装方法」をご参照ください。


Marketoフォームは表示されていない。
5)Form2.0APIで、フォームの入力内容をMarketoに送信する処理を記述する。
Marketo Form 2.0 APIを使ってスクリプトを非Marketoフォームが実装されているページに記述していきます。
※位置は非Marketoフォームの下に記述
※Tag Manager で実装も可能です。実装方法は後述「※参考※ Google Tag Managerでの実装方法」をご参照ください。

①:関数名
任意の名前をつけます。
②:入力値を変数に代入
フォームの入力値を変数に代入します。
以下の形で指定します。変数名は任意です。
変数名=[非Marketoフォームのname値].[非Marketoフォームのinputのname値].value
各値は非MarketoフォームのHTMLから取得する。
↓非MarketoフォームのHTML

A:[非Marketoフォームのname値]
B:[非Marketoフォームのinputのname値]
非Marketoフォームにname値が設定されていない場合はフォームの管理者に設定してもらいましょう。
③Marketoへの送信データの設定
Marketoのフィールドと②で設定した変数をマッピングします。
左辺がMarketoフィールドのAPI名、右辺が②で設定した変数名です。
※最終行の末尾のカンマは不要です。あるとエラーになるので注意しましょう。
6)設定した関数を非Marketoフォームのsubmitのonclickイベントに設定
5-①で設定した関数を非Marketoフォームのsubmitのonclickイベントに設定します。

<input type="submit" onclick="関数名()">
という形で設定します。
こちらも非Marketoフォームの管理者に設定してもらいましょう。
※参考※ Google Tag Managerでの実装方法
ウェブサイトに直接実装できない!という場合でも、tag managerで実装することも可能です。
今回はGoogle Tag Manager (GTM)を例に紹介します。
※Google Tag Managerの細かい操作方法は省略しています。
①タグの作成
タグタイプを「カスタムHTML」としてタグを新規作成し、そこに4)と5)で修正したスクリプトを両方貼り付けます。

②トリガーはフォームのページでのみ起動するように設定をします。
例)emptyform/index_gtm_test.html を含むURLでのみ起動させる場合

③タグの名前をつけ、保存をクリックし、タグとトリガーを公開します。
7)動作確認
実際にデータを非Marketoフォームに入力して送信します。

Marketoにログインし、データベース>すべての顧客から、該当のユーザを検索します。

きちんと入力した値が入っていることを確認

アクティビティログにも、ウェブページアクセスのログが入っていることを確認

あとは、Marketo外のプラットフォームにもきちんとデータが入っていることを確認します。
これで一通り完了です。
※完了画面に遷移しない場合
元々のフォームの作りによって、完了画面に遷移しない場合があります。その場合はMarketoフォーム側の「ありがとうございましたページ」の設定で完了画面のURLを指定してみてください。
