Mengirim dan Tracking email newsletter dengan laravel dan mailgun

Salah satu project terbaru saya adalah membuat sebuah newsletter engine, yang secara garis besar tujuannya adalah memberikan kemudahan untuk para sales / internet marketing untuk mengirim email newsletter kepada para konsumen (ataupun target konsumennya). Konten dari newsletter sendiri akan diambil secara otomatis dari berbagai sosial media.

Salah satu fitur utamanya adalah tentu saja, mengirim email newsletter, dan kemudian melakukan tracking untuk mengetahui berapa email yang terkirim, berapa email yang dibuka atau berapa email yang melakukan klik pada link yang ingin di promoin, ataupun klik link unsubscribe dan juga ‘mark as spam’. Saya menggunakan mailgun untuk email engine nya karena secara out of the box, sudah menyediakan fitur tersebut, dan juga lebih efisien di banding membangun email engine sendiri yang bakal lebih banyak makan waktu dan kemungkinan bakal di tandai sebagai spam oleh provider layanan email adalah sangat besar. Selain itu, mailgun juga sangat di support oleh laravel, PHP Framework yang saya gunakan untuk membangun projek ini. Laravel menyediakan driver untuk mailgun sehingga hanya dengan sedikit konfigurasi, mailgun akan terintegrasi dengan baik pada laravel.

Screen Shot 2016-04-11 at 12.52.09 PM

Tentang Mailgun

Mailgun adalah penyedia layanan email as services dimana intinya sih kamu bisa mengirim email menggunakan server mereka. Dengan adanya mailgun, developer gak perlu bikin email server sendiri, atau kuatir email yang dikirim akan masuk ke spam, atau juga menjaga server agar tetap ‘sehat’ sehingga para email provider (gmail, yahoo, etc) tidak menganggap server kamu sebagai server yang mencurigakan dan memasukkan semua email dari server mu ke folder spam. Ada banyak fitur lain dari mailgun yang bisa di lihat di website mereka

Mailgun dan Laravel

Seperti yang sudah saya singgung diatas, laravel menyediakan driver untuk menggunakan mailgun sebagai email engine. Sebenarnya sih mailgun sendiri punya PHP SDK sendiri yang bakal bantuin kamu berinteraksi dengan API nya secara mudah, tapi kalau projek mu menggunakan laravel, maka akan lebih bijak kalau menggunakan “laravel way” nya, karena… ya emang itu kan salah satu fungsi menggunakan framework? 😃 Supaya kamu dan rekan-rekan mu sesama developer punya bahasa yang sama untuk melakukan beberapa macam kegiatan yang sudah di sediakan oleh framework.

Untuk setting mailgun di laravel, kamu bisa di dokumentasi laravel, thanks to dotenv, karena kamu bisa setup secara mudah dengan cara edit file .env pada root folder laravel. dan masukkan parameter berikut

MAIL_DRIVER=
MAIL_HOST=
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_DOMAIN= 
MAIL_SECRET=

Data untuk mengisi masing-masing parameter diatas bisa dilakukan setelah melakukan registrasi di web mailgun, kalau hanya untuk keperluan testing, kamu bisa pakai fitur free dengan batasan 10.000 email per bulan. lumayan tuh ūüôā

Setelah registrasi selesai, disana ada sandbox domain yang bisa dipakai, atau mau menggunakan custom domain sendiri juga boleh, saat ini saya masih menggunakan sandbox karena memang masih tahap development. Nah, di halaman detail domain, akan terdapat informasi untuk mengisi file .env diatas tadi.

sandbox_mailgun

Mengirim Email

Untuk mengirim email, karena menggunakan fitur built-in laravel, kamu bisa tinggal ikut dokumentasi laravel mail.

Mail::send(
    'campaign/templates/newsletter',
    $data,
    function ( $message ) use ( $args ) {
        $message->from( "noreply@example.com" )
                ->subject( 'Example Newsletter' )
                ->to( $args[ 'sendto' ] );
    }
);

Anyway, Sampai sekarang saya masih takjub dengan betapa laravel membuat mengirim email menjadi lebih mudah dan eksplisit seperti ini (sebelumnya saya menggunakan codeigniter dan juga raw PHP, ribet dan gak elegan)

Memberi Tagging

Mailgun memang memberikan fitur data analitik untuk email yang terkirim, tapi data analitik ini secara global, bukan untuk masing-masing email yang terkirim. Namun mailgun menyediakan juga fitur tagging, atau bahasa gampangnya penanda email setiap melakukan pengiriman email. Sebagai contoh untuk kasus saya, sebelum mengirim email, setiap email yang akan dikirim akan disimpan di database dan memiliki field ID masing-masing. Lalu saya gunakan ID ini untuk menjadi tagging pada email yang dikirim, sehingga setiap email akan memiliki ID / Tagging yang unik.

Sebelumnya saya sempet ribet untuk memberi tagging ini pada laravel karena fitur mail pada laravel hanya support untuk general purpose¬†untuk beragam driver, jadi kalau mengikuti dokumentasi tagging pada mailgun¬†dimana mailgun membutuhkan parameter “o:tag” yang tentu saja gak bisa di implementasiin di laravel.

Setelah googling dan membaca dokumentasi swiftmailer (mail engine yang digunakan laravel) akhirnya saya berhasil menambahkan tagging pada email dengan menambahkan 2 baris kode baru pada kode pengirim email diatas tadi.

Mail::send(
    'campaign/templates/newsletter',
    $data,
    function ( $message ) use ( $args ) {
        $message->from( "noreply@example.com" )
                ->subject( 'newsletter' )
                ->to( $args[ 'sendto' ] );

        // adding tagging to email
        $headers = $message->getHeaders();
        $headers->addTextHeader( 'X-Mailgun-Tag', 'campaign-' . $args[ 'ID' ] );
    }
);

Sip, setelah itu saya coba mengirim email dan hasilnya :

Screen Shot 2016-04-11 at 1.47.07 PM

berhasil! 💯

Mendapatkan Statistik Email

Untuk mendapatkan statistik email dari mailgun cara paling mudah adalah menggunakan PHP SDK dari mailgun sendiri.

Lah, tadi katanya gak pake PHP SDK nya mailgun?

Iya, untuk keperluan yang sudah disediakan oleh framework mah lebih baik menggunakan yang sudah ada, namun untuk keperluan lain yang gak disediain ya mending buat sendiri atau pake library lain yang sudah ada. Dalam hal ini mailgun cukup keren karena punya banyak SDK untuk beberapa macam bahasa pemprograman, termasuk PHP.

Nah berikut adalah potongan kode untuk pengambilan statistik email berdasarkan tagging nya dari dokumentasi mailgun.

$mail   = new Mailgun( env( 'MAILGUN_SECRET' ) );
$domain = env( 'MAILGUN_DOMAIN' );
$tags   = "campaign-17";
$events = "opened";

try {
    $data = $mail->get(
        $domain . "/tags/" . $tags . "/stats",
        array(
            'event' => $events
        )
    );

    return $data->http_response_body;
} catch ( \Exception $e ) {
    return array();
}

Berdasarkan dokumentasi itu juga, terdapat beberapa event yang bisa di tracking.

Screen Shot 2016-04-11 at 2.04.53 PM

Dengan info selengkap ini, para user bisa mengetahui statistik dari setiap newsletter yang dikirim kepada konsumen nya yang tentunya akan berpengaruh pada strategi marketing berikutnya.

 

5 Replies to “Mengirim dan Tracking email newsletter dengan laravel dan mailgun”

  1. Sayangnya kalo pake Mailgun (atau semacamnya), gak bisa kirim ke email [at]yahoo.com dan [at]aol.com karena DMARC policy.

    Ah.. tapi sapa sih yang (masi) pake AOL dan Yahoo Mail buat primary mail ?

    Note: kemaren nyoba klo kirim ke [at]yahoo.co.id masi bisa sih…

  2. http://sensito-sklep.pl/motoryzacja-i-jej-wspolczesne-znaczenie
    Buying a new or used vehicle can be quite a hard process if you do not know what you will be doing. By teaching yourself about vehicle buying prior to deciding to visit the car dealership, you could make things less difficult for yourself. The following advice can help your upcoming store shopping getaway become more enjoyable.

    Always deliver a mechanic along when looking for a fresh automobile. Auto sellers are notorious for promoting lemons and you may not need to be their following target. When you can not have a technician to think about cars with you, no less than make sure that you have him evaluate your closing decision before you buy it.

    Know your boundaries. Before you start store shopping for your forthcoming auto or truck, make a decision what you can manage to pay out, and adhere to it. Don’t forget about to feature desire for your computations. You can expect to pay close to twenty percent as a payment in advance also, so be ready.

    Before going to a dealer, know what sort of automobile you need. Research most of you options prior to shopping to help you decide what works best for your financial allowance and loved ones needs. Do your homework to learn just how much you ought to pay for a probable vehicle.

    Prior to signing any agreement make time to read through every single line, for example the fine print. If there is anything at all detailed that you do not recognize, do not indicator till you have an answer that you just comprehend. Unsavory salesmen are able to use a legal contract to put numerous service fees that were not reviewed.

    Should you keep the preceding advice under consideration the next time which you go shopping for a car, you will certainly be more prone to get a good deal. Buying a automobile does not have as a headaches. Just use the tips with this report and you can get the car you desire at the great value.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *