LaravelでMailChimpのWebhookを利用する方法を解説します。
メルマガ申し込み・解約・変更等がが起こった時にMailChimpからLaravel側に情報を通知し、Laravel側で処理を実行できます。
「さくっとできるかな」と思ったものの、HTTPリクエストに癖があったりと、わりと手こずりました^^;
手こずりポイントを含めて、ひとつひとつ手順を解説していきますね。
LaravelでMailChimpのWebhookを利用してsubscribe, unsubscribe, updateを通知する方法
次の想定で説明していきます。
- MailChimpのアカウントには既に顧客リスト(Audience)がある
- 連携させたいLaravelのプロジェクトもある
まずはMailChimp側でWebhookの設定からスタートしましょう。
MailChimpにWebhookの設定をする
①MailChimpにログインし、左側からAudienceを選択
②右側の【Manage Audience】プルダウンから【Setting】選択
③Settingメニュー一番下のWebhooks選択
④【Create New Webhook】ボタンをクリック
⑤【Create New Webhook】フォームに入力
下記のように入力します。
1.Callback URL には、ドメイン/mailchimp/webhook としておきます。
2.”What type of updates should we send?”の部分では、Webhookを通じて提供してほしい情報を選択
3.”Only send updates when a change is made …” の部分では、誰が行った変更について通知するかを選択
【Create new webhook入力例】
上記例では、Unsubscribeが起こった場合に通知する、ということにしています。
ちなみに本番URLではなくテストURLを使用したい場合には、NGROKというツールを使うと便利ですよ。ローカル環境でHTTPSテスト環境を手軽に構築できます。
⑥Saveボタンを押して保存します。
Laravel側でMailChimpのWebhookの通知を受け取る設定をする
次にLaravel側の設定をします。
① CSRFの例外設定を行う
Laravelでは最初にCSRFの例外設定を行っておきましょう。
Middleware/VerifyCsrfToken.php ファイルに、下記のようにmailchimpを加えます。
【VerifyCsrfToken.php】
これで “ドメイン/mailchimp” で始まるURLの場合には、CSRFルールを無視できます。ここをいれておかないと、CSRFルール違反ということでエラーになってしまいます。
CSRFルールと違反については、下記の記事で詳しく解説しています。詳しく知りたい場合は、併せて読んでくださいね。
② ルート設定を行う
次にルート設定です。resources/routes/web.phpファイルに、下記を加えます。
今回はMailChimpControllerに処理をいれておくことにします。
【web.php】
ここで、getとpost、2つのルート設定を作っておくのがポイント。
実際にはpostしか必要ないのですが、getも入れておかないとエラーになります。
③コントローラに処理を記述
下記コマンドを実行して、MailChimpControllerを作成します。
作成したMailChimpControllerに処理をいれていきます。
まずはwebhookを通じて取得した値を取り出します。Unsubscribeの場合には、次のようなデータが送信されます。
【Webhook response: Unsubscribes】
上記の中からEMAILの値を取り出していきましょう。このEMAIL情報を持つユーザーを探し出し、このユーザーに処理を実行する、というコードを書いていきます。
書き方としては、次のようになります。
【MailChimpController・処理例】
④テストする
最後にテストを行います。
さいごに
ルート設定や値の取り出し方がちょっと面倒ですが、このあたりがクリアできれば、難しくはありません。
Laravelと連携可能なメールシステム、という意味では、MailChimpは最強だと思います。
MailChimpについては別記事でも色々解説しているので、ご興味があれば、関連記事も見てみてくださいね。
MailChimp、実はまだ登録していないという場合は、下記からご登録いただけます。
MailChimpの登録はこちらをクリック
↓↓↓
ページの真ん中あたりに【Sign Up Free】という青緑色のボタンが表示されますが、ここをクリックすると、無料版を登録できます。