書籍「Laravelの教科書」Laravel13対応サポートガイド公開中 → ダウンロードはこちら

LaravelとMailChimp連携:Webhookを利用してsubscribe, unsubscribe, updateを通知する方法

LaravelとMailChimp

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】

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'mailchimp/*',
    ];
}

これで “ドメイン/mailchimp” で始まるURLの場合には、CSRFルールを無視できます。ここをいれておかないと、CSRFルール違反ということでエラーになってしまいます。

CSRFルールと違反については、下記の記事で詳しく解説しています。詳しく知りたい場合は、併せて読んでくださいね。

② ルート設定を行う

次にルート設定です。resources/routes/web.phpファイルに、下記を加えます。

今回はMailChimpControllerに処理をいれておくことにします。

【web.php】

// MAILCHIMPのwebhook処理
Route::get('/mailchimp/webhook', 'MailChimpController@getdata');
Route::post('/mailchimp/webhook', 'MailChimpController@postdata');

ここで、getとpost、2つのルート設定を作っておくのがポイント。

実際にはpostしか必要ないのですが、getも入れておかないとエラーになります。

③コントローラに処理を記述

下記コマンドを実行して、MailChimpControllerを作成します。

 php artisan make:controller MailChimpController

作成したMailChimpControllerに処理をいれていきます。

まずはwebhookを通じて取得した値を取り出します。Unsubscribeの場合には、次のようなデータが送信されます。

【Webhook response: Unsubscribes】

{
  "type": "unsubscribe",
  "fired_at": "2009-03-26 21:40:57",
  "data": {
    "action": "unsub",
    "reason": "manual",
    "id": "8a25ff1d98",
    "list_id": "a6b5da1054",
    "email": "api+unsub@mailchimp.com",
    "email_type": "html",
    "ip_opt": "10.20.10.30",
    "campaign_id": "cb398d21d2",
    "merges": {
      "EMAIL": "api+unsub@mailchimp.com",
      "FNAME": "Mailchimp",
      "LNAME": "API",
      "INTERESTS": "Group1,Group2"
    }
  }
}

上記の中からEMAILの値を取り出していきましょう。このEMAIL情報を持つユーザーを探し出し、このユーザーに処理を実行する、というコードを書いていきます。

書き方としては、次のようになります。

【MailChimpController・処理例】

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class MailChimpController extends Controller
{

    public function getdata() {
        // mailchimpのテスト用
        return "ok";
    }

    public function postdata(Request $request) {
        // 送られたデータからEMAILを抽出
        $email=array_column($request->input('data'), "EMAIL");
        // 同じEMAILをもつユーザーを取り出す
        $user=User::where('email', $email)->first();
        if($user) {
            // 処理を記述
        }
        return "ok";
    }
}

④テストする

最後にテストを行います。

さいごに

ルート設定や値の取り出し方がちょっと面倒ですが、このあたりがクリアできれば、難しくはありません。

Laravelと連携可能なメールシステム、という意味では、MailChimpは最強だと思います。

MailChimpについては別記事でも色々解説しているので、ご興味があれば、関連記事も見てみてくださいね。

MailChimp、実はまだ登録していないという場合は、下記からご登録いただけます。

MailChimpの登録はこちらをクリック

↓↓↓


ページの真ん中あたりに【Sign Up Free】という青緑色のボタンが表示されますが、ここをクリックすると、無料版を登録できます。

LaravelとMailChimp

生成AIを「安全に」使うための研修・セミナー

お問い合わせ

生成AIの業務活用で気になるのは、効率だけでなくセキュリティです。 実践的な活用に加え、セキュリティ対策もお伝えします。

詳細を見てみる
 

生成AIを「安全に」使うための研修・セミナー

お問い合わせ

生成AIの業務活用で気になるのは、効率だけでなくセキュリティです。 実践的な活用に加え、セキュリティ対策もお伝えします。

詳細を見てみる

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新版Laravel13への対応に対応。Laravel8からの各バージョンのテキストもご覧になれます♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新のLaravel13に対応。Laravel8からの各バージョンのテキストもご覧になれます♪

Laravelの本を書きました。


ひつじが目印♪

Laravelの使い方を分かりやすく解説した本を書きました。 書店やAmazon等のオンラインショップにて販売中
最新版Laravel13対応用サポートガイド(PDF)あり

書籍の詳細を見てみる

Laravelの本書きました。


ひつじが目印♪
クリックするとamazonページへ。
最新版Laravel13対応用
サポートガイド(PDF)あり

書籍の詳細を見てみる
シェアする
Twitter始めました。

コメント

タイトルとURLをコピーしました