Mailchimp Entegrasyonu

Makale İçerik Listesi

Setup

  1. Free Mailchimp hesabı oluştur.
  2. Panelde kendi kullanıcı ikonumun üzerine gidiyorum > Extras > API Keys
  3. Create a Key
  4. Oluşturduğun Key'i .env dosyasına kaydet (ör. MAILCHIMP_KEY=jdsalkdnaskndsnaj)
  5. Sonra config/services.php içerisine de bunu ekle 
    'mailchimp' => [
        'key' => env('MAILCHIMP_KEY'),
    ],

    bu şekilde yapınca config('services.mailchimp.key') dediğimde key'i buradan alabilirim.

  6. Client kütüphanesini yükle 
    composer require mailchimp/marketing
  7. Server prefix'ini bul - Yani mailchimp panelindeyken adres ör.  https://us88.admin.mailchimp.com/account/api/ ise server prefix = us88 oluyor.
  8. Buna göre web.php dosyasında bir routes denemesi yap 
    Route::get('mailchimp', function() {
        $mailchimp = new \MailchimpMarketing\ApiClient();
    
        $mailchimp->setConfig([
            'apiKey' => config('services.mailchimp.key'),
            'server' => 'us88'
        ]);
    
        $response = $mailchimp->ping->get();
        ddd($response);
    });

    sonuçta "health_status": "Everything's Chimpy!" diyorsa doğru yoldayız demektir :)


Listeler oluşturmak

  1. Kurulumu yaptıktan sonra yapmamız gereken liste oluşturmak, liste okumak ve kişi eklemek olacak.
  2. Mevcut listelerimi görmek için  lists->getAllLists() diyebilirim. - doc link .
    Route::get('mailchimp', function() {
        $mailchimp = new \MailchimpMarketing\ApiClient();
    
        $mailchimp->setConfig([
            'apiKey' => config('services.mailchimp.key'),
            'server' => 'us88'
        ]);
    
        $response = $mailchimp->lists->getAllLists();
        ddd($response);
    });
  3. Tek bir listeye ait bilgileri almak istersem list->getList('list_id') diyebilirim - doc link
  4. Tek bir listeye ait kayıtlı kişilerin bilgisini almak istersem ise lists->getListMembersInfo('list_id') - doc link

Listeye Kişi Eklemek

  1. Listeye bir kişi eklemek için addListMember metodunu kullanabiliriz - doc link 
    $response = $mailchimp->lists->addListMember("431xcvb", [
        "email_address" => "[email protected]",
        "status" => "subscribed", // "subscribed", "unsubscribed", "cleaned", "pending", or "transactional"
    ]);
    Böyle yapınca Mailchimp panelinden de kontrol edersek yeni memberı eklemiş olduğumuz görülür
  2. İsim/soyad vs. bilgilerini de kullanmak istersek merge_fields alanına bu ek bilgileri ekleyebilriz.
    $response = $mailchimp->lists->addListMember("xyz123", [
        "email_address" => "[email protected]",
        "status" => "subscribed", // "subscribed", "unsubscribed", "cleaned", "pending", or "transactional"
        "merge_fields" => [
            "FNAME" => "Osman",
            "LNAME" => "Deneme",
        ]
    ]);

    merge_fields alanının hangi değerleri alabileceğini incelemek için docs api

Websitesinde Newsletter Formu

  1. Şimdi yukarıdaki bilgiler üzerinden websitemizde bir newsletter signup form yapabiliriz. HTML tarafında formumu hazırlıyorum.
    <form method="post" action="{{ route('newsletter') }}">
       @csrf
       <input type="email">
       <input type="submit" value="Kaydet">
    </form>
  2. PHP tarafından newsletter route'unun bağlı olduğu controller fonksiyonunda 
    request()->validate(['email' => 'required|email']);
    
    $mailchimp = new \MailchimpMarketing\ApiClient();
    
    $mailchimp->setConfig([
        'apiKey' => config('services.mailchimp.key'),
        'server' => 'us88'
    ]);
    
    try {
        $response = $mailchimp->lists->addListMember('de213', [
            'email_address' => request('email'),
            'status' => 'subscribed'
        ]);
    } catch (\Exception $e) {
        throw ValidationException::withMessages([
            'email' => 'This email could not be added to our list',
        ]);
    }
    
    redirect('/')->with('success', 'Email saved');
  3. Böyle dedikten sonra exception'ı HTML'de kullanıcıya göstermek için Blade'in @error direktifini kullanmam gerekiyor. 
    @error('email')
    {{ $message }}
    @enderror

 

Referanslar

  1. Mailchimp API Quickstart - link
  2. Mailchimp Marketing API - link