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 Kunci API MailerLite Anda untuk otentikasi. Anda dapat menghasilkan satu dari halaman Integrasi MailerLite.

Memulai

1

Buka Bagian Webhook

Di dasbor Dodo Payments Anda, navigasikan ke Webhooks + Tambah Endpoint dan perluas dropdown integrasi.
Tambahkan Endpoint dan dropdown integrasi
2

Pilih MailerLite

Pilih kartu integrasi MailerLite.
3

Masukkan Kunci API

Berikan Kunci API MailerLite Anda dalam konfigurasi.
4

Konfigurasi Transformasi

Edit kode transformasi untuk memformat data pelanggan untuk API MailerLite.
5

Uji & Buat

Uji dengan payload contoh dan klik Buat untuk mengaktifkan sinkronisasi pelanggan.
6

Selesai!

Peristiwa pembayaran sekarang akan 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. Pergi ke dasbor MailerLite Anda
  2. Navigasikan ke Bidang Pelanggan
  3. Klik Buat bidang dan tambahkan bidang seperti:
    • total_spent (Nomor)
    • customer_since (Tanggal)
    • subscription_plan (Teks)
    • payment_method (Teks)
    • last_payment_amount (Nomor)

Pemecahan Masalah

  • Verifikasi Kunci API benar dan aktif
  • Periksa bahwa alamat email valid (mematuhi RFC 2821)
  • Pastikan ID grup benar dan ada di akun Anda
  • Catatan: Pelanggan yang tidak berlangganan, terpantau, atau sampah tidak dapat diaktifkan kembali melalui API
  • Verifikasi bidang kustom ada di MailerLite sebelum menggunakannya
  • Periksa bahwa nama bidang cocok persis (sensitif huruf besar/kecil)
  • Pastikan nilai bidang cocok dengan tipe yang diharapkan (teks, nomor, tanggal)
  • API MailerLite memiliki batas laju 120 permintaan per menit
  • Gunakan endpoint batch jika memproses banyak pelanggan
  • Terapkan strategi backoff untuk skenario volume tinggi
  • Verifikasi ID grup adalah string numerik
  • Periksa bahwa grup ada di akun MailerLite Anda
  • Catatan: Menggunakan PUT dengan grup akan menghapus pelanggan dari grup yang tidak terdaftar

Referensi API

API Pelanggan MailerLite menerima parameter kunci berikut:
ParameterTipeDiperlukanDeskripsi
emailstringYaAlamat email yang valid (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: aktif, tidak berlangganan, tidak terkonfirmasi, terpantau, sampah
subscribed_atstringTidakTanggal dalam format yyyy-MM-dd HH:mm:ss
ip_addressstringTidakAlamat IP pelanggan
Untuk dokumentasi API lengkap, kunjungi Pengembang MailerLite.