Pendahuluan
Kirim email transaksional dan kelola komunikasi pelanggan secara otomatis saat peristiwa pembayaran terjadi. Kirim konfirmasi pembayaran, pembaruan langganan, dan pemberitahuan penting dengan infrastruktur email Loops.
Integrasi ini memerlukan Kunci API Loops Anda untuk otentikasi.
Memulai
Buka Bagian Webhook
Di dasbor Dodo Payments Anda, navigasikan ke Webhooks → + Tambah Endpoint dan perluas dropdown integrasi.
Pilih Loops
Pilih kartu integrasi Loops .
Masukkan Kunci API
Berikan Kunci API Loops Anda dalam konfigurasi.
Konfigurasi Transformasi
Edit kode transformasi untuk memformat email untuk API Loops.
Uji & Buat
Uji dengan payload contoh dan klik Buat untuk mengaktifkan pengiriman email.
Selesai!
🎉 Peristiwa pembayaran sekarang akan secara otomatis memicu email transaksional melalui Loops.
Email Konfirmasi Pembayaran
function handler ( webhook ) {
if ( webhook . eventType === "payment.succeeded" ) {
const p = webhook . payload . data ;
webhook . url = "https://api.loops.so/v1/events/send" ;
webhook . payload = {
eventName: "payment_confirmation" ,
email: p . customer . email ,
properties: {
customer_name: p . customer . name ,
payment_id: p . payment_id ,
amount: ( p . total_amount / 100 ). toFixed ( 2 ),
currency: p . currency || "USD" ,
payment_method: p . payment_method || "unknown" ,
payment_date: new Date ( webhook . payload . timestamp ). toLocaleDateString ()
}
};
}
return webhook ;
}
See all 19 lines
Email Selamat Datang Langganan
function handler ( webhook ) {
if ( webhook . eventType === "subscription.active" ) {
const s = webhook . payload . data ;
webhook . url = "https://api.loops.so/v1/events/send" ;
webhook . payload = {
eventName: "subscription_welcome" ,
email: s . customer . email ,
properties: {
customer_name: s . customer . name ,
subscription_id: s . subscription_id ,
product_id: s . product_id ,
amount: ( s . recurring_pre_tax_amount / 100 ). toFixed ( 2 ),
frequency: s . payment_frequency_interval ,
next_billing: s . next_billing_date
}
};
}
return webhook ;
}
See all 19 lines
Pemberitahuan Kegagalan Pembayaran
function handler ( webhook ) {
if ( webhook . eventType === "payment.failed" ) {
const p = webhook . payload . data ;
webhook . url = "https://api.loops.so/v1/events/send" ;
webhook . payload = {
eventName: "payment_failed" ,
email: p . customer . email ,
properties: {
customer_name: p . customer . name ,
payment_id: p . payment_id ,
amount: ( p . total_amount / 100 ). toFixed ( 2 ),
error_message: p . error_message || "Payment processing failed" ,
retry_link: `https://yourdomain.com/retry-payment/ ${ p . payment_id } `
}
};
}
return webhook ;
}
See all 18 lines
Tips
Gunakan nama peristiwa yang deskriptif untuk organisasi template email yang lebih baik
Sertakan properti pelanggan yang relevan untuk personalisasi
Siapkan template email di dasbor Loops untuk setiap peristiwa
Gunakan penamaan properti yang konsisten di seluruh peristiwa
Uji pengiriman email sebelum diluncurkan
Pemecahan Masalah
Verifikasi Kunci API benar dan aktif
Periksa bahwa nama peristiwa cocok dengan template Loops Anda
Pastikan alamat email penerima valid
Tinjau batas dan kuota pengiriman Loops