受信メールをコンタクトと紐づけてMauticをCRMの様に使うアイデア


こんにちは。Webloco代表兼Webマーケターのヤブです。

Mauticを自社サイトに導入してから2年以上が経過しましたが、未だに試行錯誤の連続です。

マーケティングオートメーション(以下MA)を勉強し始めてから常に感じている違和感は、MAというネーミングの割に、適応範囲は、「見込み客の獲得から育成までの範囲」と、意外と狭い領域になります。

MAの後ろにはSFA(営業支援ツール)やCRM(顧客管理ツール)などが控えています。

そんな中、最近では、MauticをCRMツール(顧客管理ツール)として使えないか色々考えていました。

 

CRMにあってMAツールにないもの

ツールによって仕様や機能にバラつきはありますが、CRMとMAツールの大きな違いは、顧客情報の種類や量、情報の持ち方だと思います。

一般的なCRMには、顧客とのメールの履歴や打ち合わせの履歴、商品の購入の履歴、資料(見積り書、請求書)などを保持している事でしょう。

MAツールにも、上記の情報で持っているものもありますが、CRMは既存顧客の管理を念頭に置いている為、見込み客をメインに扱うMAとは、情報の持ち方はあきらかに違います。

 

受信メールのやりとりだけでもMauticに持たせたい

Mautic本体をカスタマイズするほど、Mauticの内部に精通している訳ではない為、今ある機能を有効活用して、受信メールのやり取りをMauticに持たせることは出来ないかを考えました。

方法1.MauticとGmailの連携プラグイン

いろいろ調べてみると、MauticとGmailの連携プラグインを使うと、Gmailでのメールのやりとりを、Mauticのコンタクト情報(history)に追加されて確認が出来るようです。

ただ、現在のメールのやりとりはMicrosoftのOutlookをベースに使用している為、Gmailを使うという選択肢は入りませんでした。

方法2.MauticとOutlookとの連携プラグイン

他にもいろいろ調べてみると、MauticとOutlookを連携するプラグインがあったので試しに設定してみました。

実際に設定した時の記事を書いてみましたので、下記よりご覧ください。

Mauticと普段使っているメールアプリ「Outlook」を連携させる方法(失敗)

ただ、上記の記事にも書きました通り、思ったような挙動になってくれませんでした。

最終的に、送信メールはhistoryに表示される様になりましたが、見込み客からの受信メールに関しては、表示される仕様ではありませんでした。

方法3.Mautic Rest APIを使って、システムを自分で作る

Mauticには、外部からデータベースを操作できる為のAPIが用意されています。

これを使って、受信メールの内容をMauticにPOSTして、コンタクト情報に追加する事が出来る様になりました。

 

Mautic Rest APIで受信メールとコンタクト情報を紐づけるまでの道のり

受信メールをコンタクト情報の何処に持たせるか

まず、受信メールの情報をコンタクト情報の何処に持たせるかを考えます。

最初に考えたのは、「History」の中かなと思ったのですが、データベースを見ても、持っている情報が結構複雑で、少しハードルが高いと感じました。

そこで、「NOTES」という所に、受信メール情報を格納するのにちょうど良い場所があったので、そこに追加する事にしました。

 

Mautic Rest APIについて調べる

Mautic Developer Documentという、開発者向けのドキュメントのREST APIの部分をサラッと確認します。

REST API libraryのインストール

GitHubに「mautic/api-library」というライブラリがありますので、ダウンロードしてアップロードするか、「composer」を使って、インストールします。

認証

基本的には、下記のサンプルコードを参考に、必要な箇所を自分様に変更します。

<?php
use Mautic\Auth\ApiAuth;

// $initAuth->newAuth() will accept an array of OAuth settings
$settings = array(
    'baseUrl'      => 'https://your-mautic.com',
    'version'      => 'OAuth2',
    'clientKey'    => '5ad6fa7asfs8fa7sdfa6sfas5fas6asdf8',
    'clientSecret' => 'adf8asf7sf54asf3as4f5sf6asfasf97dd', 
    'callback'     => 'https://your-callback.com'
);

// Initiate the auth object
$initAuth = new ApiAuth();
$auth     = $initAuth->newAuth($settings);

if ($auth->validateAccessToken()) {
    if ($auth->accessTokenUpdated()) {
        $accessTokenData = $auth->getAccessTokenData();

        //store access token data however you want
    }
}

NOTESに追加する処理

特定のコンタクトのNOTESに、任意の情報を追加するプログラムです。

<?php

$contactID = 1;

$data = array(
    'lead' => $contactID,
    'text' => 'Note A',
    'type' => 'general',
);

$note = $noteApi->create($data);

実際に動かしてみる

サンプルで作成したプログラムを実行してみて、本当にコンタクト情報のNOTESに書き込まれるか確認してみます。

おっ、追加された。

メールサーバーの受信メールの取得

次に、定期的にメールサーバーのメールを見に行く処理を作成しなければいけません。

PHP でメールの受信という記事を参考に、「imap_open」の関数を使って、メールサーバー内にあるメール情報を取得

メールアドレスからコンタクトIDを取得

取得したメール情報の中からfromのメールアドレスを抽出します。

このメールアドレスをキーに、MauticのコンタクトIDを取得します。(NOTESを書き込むときのKEYは、コンタクトIDの為)

コンタクトIDを取得する為のサンプルソースは以下になります。

<?php
//...
$contacts = $contactApi->getList($searchFilter, $start, $limit, $orderBy, $orderByDir, $publishedOnly, $minimal);

上記のサンプルソースをベースに、「$searchFilter」には、任意のメールアドレスで検索する様に値を設定。

指定のメールアドレスに一致するコンタクトデータがあれば、コンタクトIDを取得出来ます。

受信メールをNOTESにPOSTするプログラムの完成

これまでの内容を基に、下記の様な流れに書き換えます。

  • 1.メールデータを取得
  • 2.メールアドレスを取得
  • 3.Mautic認証
  • 4.メールアドレスからコンタクトIDを取得
  • 5.コンタクトIDとメールデータをMauticにPOST
  • 6.「4」~「5」を繰り返す

プログラムを定期的に走らせるようにCRON JOBの設定をする

Xserverでプログラムを置いているので、5分間隔で、このプログラムが動くようにCRON設定をします。

XserverでのCRON JOB設定は以下の記事が参考になります。

Mautic導入編 CRON JOB設定(XSERVER)

実際に上手く行ったか検証してみる

5分間隔で処理がされる様になるので、実際にプログラムが動いた後に、Mauticのコンタクト情報を確認してみます。

おぅ、ちゃんと受信メールの情報がNOTESに追加されています。

これで、Mauticのコンタクト情報を見れば、いつ、どんなメールのやり取りをどれだけしたかが、把握出来る様になりますね。

 

MauticをCRMの様に使うアイデアのまとめ

Mautic本体をゴリゴリにカスタマイズする訳ではない為、いろいろ制約はありますが、簡易的なCRMとして使うには、事足りるかもしれません。

実際に、MAはMAツール、CRMはCRMツールをするのが一番ですが、ツールを使いこなす為の学習コストや、ツールを使用する為の月額コストもばかにならない為、見込み客の獲得、育成から既存客の管理、育成までを、全て同じツールで一元管理するメリットは大いにあると思います。

以上、「受信メールをコンタクトと紐づけてMauticをCRMの様に使うアイデア」をご紹介しました。