【Ruby+Rails】ユーザ登録と一緒にMailchimpのメールリストに登録したいとき


背景

サービス開発にて、メルマガ配信をMailchimpで管理することとなった。

その際、ユーザ登録時に、Mailchimpの提供するAPIをたたくことで、

Mailchimp側のメーリングリストに登録するよう処理を実装した。

Mailchimp APIについては参考になる日本語文献も少ないので、

この記事がお役に立てるのであれば幸いです。

アプリケーション構成

プログラミング言語:Ruby

フレームワーク:Rails

ごく一般的なRuby+Railsの環境でございます。

Mailchimp APIのセッティング

Gemのインストール

Gemfileに以下を記載

gem "mailchimp-api", require: "mailchimp"

APIキーの取得

Mailchimp APIを使うためにAPIキーを用意しましょう。

まずはMailchimpのご自身のアイコンをクリック。

メニューが出てきますので、「Account」をクリックします。

次に出てくる画面の「Extras」をクリック。

「API keys」を押下します。

そのあとに出てくる画面の「Create A Key」を押下。

出てきた「API key」を取っておきます。

Audiens IDの取得

Mailchimpにはユーザのメール情報を登録するリストの概念があります。

これを「Audience」といいます。

そのため、どのリストに登録するか?の指定が必要です。

そのために、リストのID、すなわち「Audiens ID」を取得します。

ここからもカチカチとMailchimpのコンソール操作です。

 

まずはヘッダーの「Audience」を押下。そのあと「Audience dashboard」を押下。

次に「Manage Audience」→「Settings」とクリック。

「Settings」→「Audience name and defaults」とクリック。

やっとこさでました。Audience IDです。こちらを控えておきます。

環境変数の設定

取得したAPIキーとAudience IDを.envに投入です。

.env
# Mailchimp
MAILCHIMP_API_KEY= # APIキー
MAILCHIMP_LIST_ID= # Audience ID

 実装

Mailchimp向けのモデルを作成します。

まずはclassを作成します。

この記事を一部参照しております(https://qiita.com/kon_yu/items/372bba35e60744633c94)。

qiita.rb
class MailMagazine
  # Mailchimp API初期化
  def initialize
    @mailchimp = Mailchimp::API.new(ENV['MAILCHIMP_API_KEY'])
  end

  # リストに追加
  # 第三引数のhash値はアカウントのマージタグを参考(lists/settings/merge-tags?id=XXX)
  def add_member(email, first_name, last_name)
    @mailchimp.lists.subscribe(
      ENV['MAILCHIMP_LIST_ID'],
      {email: email},
      {FNAME: first_name, LNAME: last_name},
      "html",
      false
    )
  end
end

add_memberなるメソッドを作って登録を行います。

第一引数はメールアドレス。

第二引数は名前。

第三引数は苗字。

です。

 

add_member内のlists. subscribeがAPIのメソッドでして、

Mailchimpにメールアドレスを登録してくれます。

第一引数はAudience ID

第二引数は登録したいメールアドレスをHash値で。

第三引数はMailchimpで設定できる補助情報です。氏名や誕生日など登録できます。

内容については、Mailchimpコンソールの

「Audience」→「Settings」→「Audience fields and * |MERGE| * tags」

をご覧ください。

こんな感じでメールアドレス以外の情報を確認・登録できます。

メールアドレス同様、MergetagをキーにしたHash値を入力します。

Mailchimpにメールアドレスを登録

ユーザ登録処理に、こんな感じで組み込む。

mailchimp = MailMagazine.new
mailchimp.add_member(@user.email, @user.first_name, @user.last_name)

意外と簡単です^ ^

よきMailchimpライフを〜