TreasureDataとMailChimpでユーザ動向に応じたメルマガ配信

# [MailChimp](http://mailchimp.com/)とは
メールマガジンの配信ツールです。
購読者の登録と管理を行う専用ツールやHTMLメールの作成支援機能、課金管理システムなどを備えており、ウェブブラウザ上で簡単な作業をするだけでオリジナルのメールマガジンを配信することが可能となっています。
日本ではあまり有名ではないですが、アメリカだとかなりポピュラーだそうです。

参考:

- [無料で手軽にHTMLを使ったメルマガの作成と配信ができるウェブサービス「MailChimp」を使ってみた](http://gigazine.net/news/20130211-free-mailmagazine-mailchimp/index.html/)
- [無料から使えるメール配信サービスMailChimpが本当に凄い](http://www.loftwork.jp/column/2013/20131010_mailchimp.aspx)

# TreasureDataとMailChimpの連携

![icon](https://i.gyazo.com/09a36af55ac0c886b8f3324c7dcafe3d.png)

Mailchimpでは、メルマガを配信するためのユーザの登録を行うことができますが、そのユーザがどんなユーザなのかという情報は別途計測して登録したり、メルマガサインアップページのアンケートでユーザに入力してもらったりする必要があります。

しかし、自社のアプリケーションを使っているユーザにメルマガ配信をしようと考えた時に、ユーザを利用状況などに合わせてメルマガ配信を行うことで、より適切な内容を適切なユーザに配信できると考えられます。

TreasureDataでは、購読者のリストと購読者の属性情報をMailChimpに出力するResult Output to MailChimpがリリースされました。
https://docs.treasuredata.com/articles/result-into-mailchimp

これによりトレジャーデータに格納されたアクセスログやアプリケーションログなどを元にしたメルマガ配信が行うことができるようになりました。
この際にはログの情報がが会員情報などと紐付けを行えるようにしておくことが重要です。

例えば

- 会員登録したけど一定期間アクセスがないユーザに離脱防止のメルマガ配信
- 高頻度に利用しているユーザに特典のメルマガ配信

など様々なことをトレジャーデータ上のログを元に集計し、定期的に購読者リストをResult Outputによって更新することで実現することができます。

# 使い方

## 0. メルマガ配信の目的設定

さて、まずはメルマガを配信する目的を設定して、作業をすすめていきましょう。

今回は、トレジャーデータを利用しているユーザ情報を元にトレジャーデータのコンソールにアクセスして、一定期間アクセスがないユーザにメール配信をしてみましょう。
ここでの一定間隔とは、7日間、30日間の２種類として、特に30日間利用していないユーザへのメール配信を行ってみます。

![image](https://gyazo.com/8569e91c54d1c0bc3ecb95fd51a29dc8.png)

## 1. MailChimpの登録

については、前述のリンクを参照してみてください。

## 2. MailChimpのリストの作成

まずは購読者リストを作成します。

1. Listを選択し、Create Listを選択する
   ![list](https://i.gyazo.com/6220104ead09ea154810d10ae298b675.png)

2. 必要な基本情報を埋める
   ![create list](https://i.gyazo.com/08c84dfa2db30046d0833d52a887f23a.png)

3. このTest_qiitaがメール配信を行う購読者リストになる
   ![comp](https://i.gyazo.com/fb51a206f85b8a74886047ec74b77386.png)

## 3. Groupの作成

Listを作成した後に、そのままでもEmailや名前情報を登録してメール配信ができるようになります。
しかし、各Emailに対して属性を付与することでより細かい条件での配信をするための機能が、Groupです。

![group](https://i.gyazo.com/278d1ad169472ff11fd31edbc92879a7.png)

1. "How should we show group options on your signup form?"では、メルマガのサインアップページがあった際に、ユーザにgroupを選択する場合には必要になりますが、今回は必要ないので、４番目を選択する
   ![create group](https://i.gyazo.com/79af5a8881579a91a7e27a3140ff212f.png)

2. Group名をretentionとし、それぞれの名前を7daysと30daysとする
   ![comp](https://i.gyazo.com/49c8bc886df7a37a90ecbb1b5f775fa9.png)

## 3. Result Output to MailChimpの設定

さて、TreasureDataのResult output to MailChimpに必要な情報を集めていきましょう。

- Mailchimp Apikey (required): MailchimpのAPI keyです。[ここ](http://kb.mailchimp.com/accounts/management/about-api-keys)を参照してください。
- Mailchimp List Id (required): Mailchimpで先ほど作成したlistのIDです。[ここ](http://kb.mailchimp.com/lists/managing-subscribers/find-your-list-id)を参照してください。
- Update Exisitng (optional, default Yes): Mailchimpでは、Keyが主キーになっています。同一Emailの時にアップデートするか無視するかを選択します。
- column name for email (optional, default “email”): クエリの結果のEmailの値を保持するカラム名を選択します。
- column name for first name (optional, default “fname”): 購読者の名を意味するカラム名を選択します。
- column name for last name (optional, default “lname”): 購読者の姓を意味するカラム名を選択します。
- column name for group details (optional): 先ほどのようにグループを作成し、その属性をクエリの結果を含めたいときはここに入れます。今回の場合はretentionとします。複数の場合は、カンマで区切って入力します。
- Replace group (optional, default Yes): ユーザのグループの値をアップデートするかしないかです。

![resultoutput](https://i.gyazo.com/164ae408d6e38009faa825b804dc93d7.png)


1. 上記を元にResult output to MailChimpを設定します
   ![setting](https://i.gyazo.com/ac51e2d63f266801899a210c46d82a4f.png)
2. ７日間利用していないユーザと３０日間利用していないユーザを算出するクエリを作成する。これについては[データサイエンティストのためのHiveQL分析クエリテンプレート その６](http://blog-jp.treasuredata.com/entry/2014/05/14/000000)の記事を参考にすると良いでしょう。

毎日実行することを考えると例えば下記のような結果を出力するクエリにすると良いでしょう。

```
SELECT t1.email, t1.firstname as first_name, t1.lastname as last_name,
CASE
   WHEN date_diff('day', t2.day, current_timestamp) = 7 THEN '7days'
   WHEN date_diff('day', t2.day, current_timestamp) = 30 THEN '30days'
   ELSE 'none'
END as retention
FROM
( USER LISTを取ってくるクエリ) t1
left outer Join
( アクセスログを取ってくるクエリ) t2
on t1.user_id = t2.user_id
```

![output](https://i.gyazo.com/f358357b68741105fe02a1f580cbeeda.png)

これで、MailChimpで購読者リストの登録が完了しました。

![mailchimp](https://i.gyazo.com/5093e99895b289752a89a270a3ce7e90.png)

## 4. キャンペーンメールを送る

上記で作成したリストに対してメール配信を行ってみます。

![campaign](https://i.gyazo.com/4fa1f791fb1547b38e6f45cfa0fc23af.png)

1. キャンペーンメールの種類を選択する。今回は、Regular campaignを選択します。 
![category](https://gyazo.com/cbb4172194ed23d27a6f24d8caa9bba2.png)

2. 配信リストを選択する。今回は、30日間離脱しているユーザに配信を行います。
![list](https://i.gyazo.com/4eb88059952310a12158b61299663af0.png)

3. キャンペーン情報を登録する
![campaign info](https://i.gyazo.com/4976383bca0d49907debca64201fa203.png)

4. メールテンプレートの選択をする
![template](https://i.gyazo.com/000466ee9beeac82bd8413d4ba4647d9.png)

5. テンプレートを元にメールの内容を作成する
![create](https://i.gyazo.com/403f5095be78a34b7f1f1343a5cc5208.png)

6. 送信！
![send](https://i.gyazo.com/1b0b61e24165f76ac27b8d1e49afc47d.png)

これらの流れでメール配信が行えます。

![mail](https://i.gyazo.com/de01d1d17f863e1ccf4cfb1280472e0c.png)

テンプレートを作っておくことで毎日リストを自動で更新して、自動でメール配信をするといった流れが非常に簡単に行えますね！

また、こうしたメール配信のサービスを使うことのメリットとして、開封率のチェックなどが行えることが非常に有益です。
![performance](https://i.gyazo.com/10de143ded5beebd6eeb5d1d3637a518.png)

# さいごに

TreasureDataとMailChimpをつかって、簡単に様々な条件に切り分けられたユーザに対してメルマガ配信を行う方法を紹介しました。
様々なデータをTreasureDataにためておくことで、マーケティング施策にもいかせるようになり、非常に便利ですね！