Langsung ke konten utama

Pendahuluan

Secara otomatis menyinkronkan pelanggan yang membayar Anda ke daftar pelanggan MailerLite saat peristiwa pembayaran terjadi. Tambahkan pelanggan ke grup tertentu, memicu alur kerja otomatisasi, dan jaga agar daftar pemasaran email Anda tetap terbaru dengan data pembayaran yang nyata. MailerLite adalah platform pemasaran email yang kuat untuk buletin, kampanye, dan otomatisasi. Integrasi ini membantu Anda mengelola pelanggan secara otomatis berdasarkan aktivitas pembayaran - sempurna untuk urutan onboarding, segmentasi pelanggan, dan kampanye pemasaran yang ditargetkan.
Integrasi ini memerlukan MailerLite API Key untuk otentikasi. Anda dapat membuatnya dari MailerLite Integrations page.

Memulai

1

Open the Webhook Section

Di dasbor Dodo Payments Anda, buka Webhooks + Add Endpoint dan perluas dropdown integrasi.
Tambahkan Endpoint dan dropdown integrasi
2

Select MailerLite

Pilih kartu integrasi MailerLite.
3

Enter API Key

Masukkan MailerLite API Key Anda dalam konfigurasi.
4

Configure Transformation

Sunting kode transformasi untuk memformat data pelanggan agar sesuai dengan API MailerLite.
5

Test & Create

Uji dengan payload sampel dan klik Create untuk mengaktifkan sinkronisasi pelanggan.
6

Done!

Peristiwa pembayaran sekarang secara otomatis menyinkronkan pelanggan ke daftar MailerLite Anda.

Contoh Kode Transformasi

Tambahkan Pelanggan pada Pembayaran Berhasil

add_customer.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.url = "https://connect.mailerlite.com/api/subscribers";
    webhook.payload = {
      email: p.customer.email,
      fields: {
        name: p.customer.name,
        company: p.customer.business_name || "",
        last_name: ""
      },
      groups: ["your-group-id-here"],
      status: "active"
    };
  }
  return webhook;
}

Tambahkan Pelanggan ke Beberapa Grup Berdasarkan Produk

product_segmentation.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    
    // Determine groups based on product or amount
    const groups = ["customers-group-id"];
    
    // Add to premium group if high-value purchase
    if (p.total_amount >= 10000) { // $100+
      groups.push("premium-customers-group-id");
    }
    
    webhook.url = "https://connect.mailerlite.com/api/subscribers";
    webhook.payload = {
      email: p.customer.email,
      fields: {
        name: p.customer.name,
        last_purchase_amount: (p.total_amount / 100).toFixed(2),
        last_purchase_date: new Date(webhook.payload.timestamp).toISOString().split('T')[0],
        payment_id: p.payment_id
      },
      groups: groups,
      status: "active"
    };
  }
  return webhook;
}

Tambahkan Pelanggan Baru pada Aktivasi Langganan

subscription_subscriber.js
function handler(webhook) {
  if (webhook.eventType === "subscription.active") {
    const s = webhook.payload.data;
    webhook.url = "https://connect.mailerlite.com/api/subscribers";
    webhook.payload = {
      email: s.customer.email,
      fields: {
        name: s.customer.name,
        subscription_plan: s.product_id,
        subscription_amount: (s.recurring_pre_tax_amount / 100).toFixed(2),
        billing_frequency: s.payment_frequency_interval,
        subscription_start: new Date().toISOString().split('T')[0]
      },
      groups: ["subscribers-group-id", "active-subscriptions-group-id"],
      status: "active"
    };
  }
  return webhook;
}

Perbarui Pelanggan pada Pembatalan Langganan

subscription_cancelled.js
function handler(webhook) {
  if (webhook.eventType === "subscription.cancelled") {
    const s = webhook.payload.data;
    // Use PUT to update existing subscriber
    webhook.url = "https://connect.mailerlite.com/api/subscribers/" + encodeURIComponent(s.customer.email);
    webhook.method = "PUT";
    webhook.payload = {
      fields: {
        subscription_status: "cancelled",
        cancellation_date: new Date().toISOString().split('T')[0]
      },
      groups: ["churned-customers-group-id"]
    };
  }
  return webhook;
}

Tambahkan Pelanggan dengan Bidang Kustom

custom_fields.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.url = "https://connect.mailerlite.com/api/subscribers";
    webhook.payload = {
      email: p.customer.email,
      fields: {
        name: p.customer.name,
        company: p.customer.business_name || "",
        country: p.customer.country || "",
        city: p.customer.city || "",
        phone: p.customer.phone || "",
        // Custom fields (must be created in MailerLite first)
        total_spent: (p.total_amount / 100).toFixed(2),
        customer_since: new Date().toISOString().split('T')[0],
        payment_method: p.payment_method || "unknown",
        currency: p.currency || "USD"
      },
      groups: ["paying-customers-group-id"],
      status: "active",
      subscribed_at: new Date().toISOString().replace('T', ' ').split('.')[0]
    };
  }
  return webhook;
}

Memicu Otomatisasi melalui Peristiwa

trigger_automation.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    
    // First, ensure subscriber exists
    webhook.url = "https://connect.mailerlite.com/api/subscribers";
    webhook.payload = {
      email: p.customer.email,
      fields: {
        name: p.customer.name,
        // Add a trigger field that your automation watches
        last_payment_trigger: new Date().toISOString(),
        last_payment_amount: (p.total_amount / 100).toFixed(2)
      },
      status: "active"
    };
    
    // Tip: Create an automation in MailerLite that triggers
    // when 'last_payment_trigger' field is updated
  }
  return webhook;
}

Tips

  • Buat bidang kustom di MailerLite sebelum menggunakannya dalam transformasi Anda
  • Gunakan grup untuk mengsegmentasi pelanggan berdasarkan produk, tingkat rencana, atau perilaku pembelian
  • Siapkan alur kerja otomatisasi di MailerLite yang dipicu pada pembaruan bidang
  • Gunakan perilaku upsert (POST ke /subscribers) untuk menghindari kesalahan pelanggan duplikat
  • Simpan metadata pembayaran di bidang kustom untuk wawasan pelanggan yang lebih baik
  • Uji dengan sekelompok kecil sebelum mengaktifkan untuk semua pembayaran

Pengaturan Bidang Kustom

Sebelum menggunakan bidang kustom, Anda perlu membuatnya di MailerLite:
  1. Buka dasbor MailerLite Anda
  2. Buka Subscribers Fields
  3. Klik Create field dan tambahkan bidang seperti:
    • total_spent (Number)
    • customer_since (Date)
    • subscription_plan (Text)
    • payment_method (Text)
    • last_payment_amount (Number)

Pemecahan Masalah

  • Pastikan API Key benar dan aktif
  • Periksa bahwa alamat email valid (mematuhi RFC 2821)
  • Pastikan ID grup benar dan ada di akun Anda
  • Catatan: Pelanggan yang berhenti berlangganan, terpantul, atau masuk ke spam tidak dapat diaktifkan kembali melalui API
  • Pastikan bidang khusus ada di MailerLite sebelum digunakan
  • Periksa nama bidang cocok persis (peka huruf besar/kecil)
  • Pastikan nilai bidang sesuai jenis yang diharapkan (text, number, date)
  • API MailerLite memiliki batas 120 permintaan per menit
  • Gunakan endpoint batch jika memproses banyak pelanggan
  • Terapkan strategi backoff untuk skenario volume tinggi
  • Pastikan ID grup berupa string numerik
  • Periksa bahwa grup ada di akun MailerLite Anda
  • Catatan: Menggunakan PUT dengan grup akan menghapus pelanggan dari grup yang tidak tercantum

Referensi API

API Pelanggan MailerLite menerima parameter kunci berikut:
ParameterTipeWajibDeskripsi
emailstringYaAlamat email yang valid (mematuhi RFC 2821)
fieldsobjectTidakObjek dengan pasangan nama/nilai bidang
fields.namestringTidakNama depan pelanggan
fields.last_namestringTidakNama belakang pelanggan
fields.companystringTidakNama perusahaan
fields.countrystringTidakNegara
fields.citystringTidakKota
fields.phonestringTidakNomor telepon
groupsarrayTidakArray ID grup untuk menambahkan pelanggan
statusstringTidakSalah satu dari: active, unsubscribed, unconfirmed, bounced, junk
subscribed_atstringTidakTanggal dalam format yyyy-MM-dd HH:mm:ss
ip_addressstringTidakAlamat IP pelanggan
Untuk dokumentasi API lengkap, kunjungi Pengembang MailerLite.