マルケトのフォームを使わずにマルケトクッキーとメアドを紐付けたい
- November 15, 2016
- 4 replies
- 2798 views
どうも、安竹です。
Web 上の行動をトラッキングするには、お客さんのブラウザに保持されているマルケトのクッキー(_mkto_trk)とメアドを紐付ける必要があります。紐付け方としては、
- マルケトフォームからメアドを入れてサブミットしてもらう(外部サイトに埋め込みでもいいし、こっそり display:none で隠してたりする方法も)
- マルケトのタグが含まれたページのリンクをメールに設定しておき、マルケトから配信、それをクリックしてブラウザで開いてもらう(いわゆるタギングメール。リンクについた URL パラメータをマルケトのタグが勝手に参照して紐付ける。)
- Munchkin API の AssociateLead 関数を利用して、JS でクッキーとメアドを紐付ける
- _mkto_trk クッキーの情報を JS などで取得しそれを何らかの方法で REST API やサーバサイドポストなどで紐付ける
- 他にもあるかな?
があります。(トラッキングできる範囲やドメインの話題、マルケトのタグの仕様についてはこちら)
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 に変更してあります)が貼ってありますが、流用する場合はみなさんがご利用のタグに置き換えてください(もちろん秘密キーも!)