マルケトのフォームを使わずにマルケトクッキーとメアドを紐付けたい | Community
Skip to main content
November 15, 2016

マルケトのフォームを使わずにマルケトクッキーとメアドを紐付けたい

  • November 15, 2016
  • 4 replies
  • 2798 views

どうも、安竹です。

Web 上の行動をトラッキングするには、お客さんのブラウザに保持されているマルケトのクッキー(_mkto_trk)とメアドを紐付ける必要があります。紐付け方としては、

  1. マルケトフォームからメアドを入れてサブミットしてもらう(外部サイトに埋め込みでもいいし、こっそり display:none で隠してたりする方法も)
  2. マルケトのタグが含まれたページのリンクをメールに設定しておき、マルケトから配信、それをクリックしてブラウザで開いてもらう(いわゆるタギングメール。リンクについた URL パラメータをマルケトのタグが勝手に参照して紐付ける。)
  3. Munchkin API の AssociateLead 関数を利用して、JS でクッキーとメアドを紐付ける
  4. _mkto_trk クッキーの情報を JS などで取得しそれを何らかの方法で REST APIサーバサイドポストなどで紐付ける
  5. 他にもあるかな?

があります。(トラッキングできる範囲やドメインの話題、マルケトのタグの仕様についてはこちら

1や2がベーシックだとは思うんですが、トラッキングできる人数をかせぐのに時間がかかります。例えば、会員サイトを持っていたりしたらお客さんがログインするたびに、右手にメアド、左手にクッキー... アぅッってしたくなりますよね。ログインしてくれるたびに紐づく人が増えるわけで。

そんな時に使えるのが、今回紹介する 3番目の Munchkin API でやる方法でしょうか。

以下に、サンプルコードとその動きを紹介します。

0. 前提条件および注意事項

  • フォームから入力されるかどうかにかかわらず、JSでメアド情報が利用できること
  • AssociateLead 関数を呼ぶためには、後述のAPI 秘密キーとメアドをコンカチ(RockStaryyasutake@marketo.comみたいに)して SHA1 でハッシュしたデータが必要。HTMLページ内だけでコールすると秘密キーがソースの表示で見えてしまうため、タグマネで隠したり、この記事のようにバックエンドのスクリプトでハッシュ化する。もし、API 秘密キーが漏洩してもデータをマルケトから引き出すことはできないが、新しいメアドを勝手に登録される可能性はある。
  • AssociateLead を呼ぶことで、紐付けと同時に他のフィールドの値を登録・アップデートすることもできる。
  • AssociateLead が呼ばれたとき、マルケトのリードデータベースに同じメアドが存在していた場合は上書きされ、存在しない場合は新規にレコードが作成される。SFDC などの CRM と連携している場合は注意が必要。SFDCの連携は SFDC ID をキーにして行われるため、SFDCへの登録と同時にこの関数でマルケトにも登録してしまうと、SFDCからリードが転送された時にレコードが重複することになる。この場合は、SFDCと連携させてからもしくは、上記の 4 番などを利用する。

1. Munchkin API を有効にする

管理>Munchkiin で API 構成で設定します。API でクッキーと紐付けるには API 秘密キーが必要です。(設定時に見えてしまうのもなんとも...。ですが)

2. フォームのページにランディング

このページにマルケトタグを入れておく必要はありませんが、とりあえず今回は入れてあります。このフォームをサブミットした後に表示されるページにタグを入れておき、AssociateLead 関数を呼ぶコードを入れておけばOKです。

3. メアド(この例では yyasutake@marketo.com)を入れて、サブミット

ソースに AssociateLead を呼ぶコードが入っていることがわかります。この例では PHP でこのページを生成しています。’3c8f5416a200a7fc6d0c5b75d411ce0dacd55e8e’ というのが、RockStaryyasutake@marketo.com を SHA1 でハッシュしたものです。FirstName は入れませんでしたから空です(空の場合は既存データはアップデートされません。ちなみに空にしたい場合は "NULL" の4文字を)。

そうでした、Email や FirstName という名前はどこからきたか?ですが、これは、管理>フィールド管理>フィールド名のエクスポートで確認してください。APIフィールド名を利用しますが、標準フィールドは昔の名残で SOAP 側を利用します。

4. メアドとクッキーが紐付いたことを確認

マルケトデータベースに既に登録されていたメアドを利用したため、今回はマージが発生しています(匿名だったリードレコードと既存リードレコードが AssociateLead によって過去のページランディングの情報を含めマージされる)。データ値の変更は気にしないでください、私が勝手にしかけているキャンペーンです。

login.html と associate.php-sample を添付しておきます。

マルケトのタグ(適当な ID に変更してあります)が貼ってありますが、流用する場合はみなさんがご利用のタグに置き換えてください(もちろん秘密キーも!)

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

4 replies

Taishi_Yamada
Level 6
November 15, 2016

安竹さん、こんにちは。

詳しい説明&実践的な例、ありがとうございます。

>>SFDC などの CRM と連携している場合は注意が必要。SFDCの連携は SFDC ID をキーにして行われるため、SFDCへの登録と同時にこの関数でマルケトにも登録してしまうと、

このあたりは、今回に限らずアルアルの1つですよね。

はい。私も前に1回、失敗しました

余談ですがSHA-1は、なんとかならないですかね。。。

↓にの仕様を見る限り、確かにSHA-1しか使えないようには読み取れますが。。。

http://developers.marketo.com/javascript-api/lead-tracking/api-reference/

-Yamada

November 15, 2016

そうなんですよね、、、いまどき?なんですがまだSHA-1しか使えないみたいです。

November 16, 2016

こんにちは、リクルートキャリアの河野と申します。

 4._mkto_trk クッキーの情報を JS などで取得しそれを何らかの方法で REST APIサーバサイドポストなどで紐付ける

こちらの方法で、サーバサイドポストを利用しました。

form2.0ではURL,パラメータが変わっているようで、

http://app-xx00.marketo.com/index.php/leadCapture/save2?munchkinId=xxx-xxx-xxx&formVid=XXXX&Email=xxxxxxx&_mkto_trk=xxxxxx

こちらで紐付け成功しました。

Level 1
August 11, 2020

こちらのポストですが、Associate Lead APIが廃止となりまして、非表示のMarketo Formを使ったデータ連携によるトラッキングをお試しください。以下のポストにてご紹介しております。

https://nation.marketo.com/t5/Japan-User-Group-Discussions/%E5%A4%96%E9%83%A8%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%A7%E3%81%AEMarketo%E3%83%87%E3%83%BC%E3%82%BF%E9%80%81%E4%BF%A1-%E7%A9%BA%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E5%88%A9%E7%94%A8/gpm-p/301754#M3521