Pendahuluan
Kirim email transaksional secara otomatis untuk konfirmasi pembayaran, pembaruan langganan, dan pemberitahuan penting menggunakan SendGrid. Trigger email yang dipersonalisasi berdasarkan peristiwa pembayaran dengan konten dinamis dan template profesional.
Integrasi ini membutuhkan SendGrid API Key dengan izin Mail Send.
Memulai
Open the Webhook Section
Di dashboard Dodo Payments Anda, arahkan ke Webhooks → + Add Endpoint dan perluas dropdown integrasi.
Select SendGrid
Pilih kartu integrasi SendGrid .
Enter API Key
Masukkan SendGrid API Key Anda di konfigurasi.
Configure Transformation
Sunting kode transformasi untuk memformat email sesuai Mail Send API SendGrid.
Test & Create
Uji dengan payload sampel dan klik Create untuk mengaktifkan pengiriman email.
Done!
🎉 Event pembayaran kini secara otomatis akan memicu email transaksional melalui SendGrid.
Email Konfirmasi Pembayaran
function handler ( webhook ) {
if ( webhook . eventType === "payment.succeeded" ) {
const p = webhook . payload . data ;
webhook . url = "https://api.sendgrid.com/v3/mail/send" ;
webhook . payload = {
personalizations: [
{
to: [{ email: p . customer . email }],
dynamic_template_data: {
customer_name: p . customer . name ,
payment_amount: ( p . total_amount / 100 ). toFixed ( 2 ),
payment_id: p . payment_id ,
payment_date: new Date ( webhook . payload . timestamp ). toLocaleDateString (),
currency: p . currency || "USD"
}
}
],
from: {
email: "payments@yourdomain.com" ,
name: "Your Company"
},
template_id: "d-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
};
}
return webhook ;
}
See all 26 lines
Email Selamat Datang Langganan
function handler ( webhook ) {
if ( webhook . eventType === "subscription.active" ) {
const s = webhook . payload . data ;
webhook . url = "https://api.sendgrid.com/v3/mail/send" ;
webhook . payload = {
personalizations: [
{
to: [{ email: s . customer . email }],
dynamic_template_data: {
customer_name: s . customer . name ,
subscription_id: s . subscription_id ,
product_name: s . product_id ,
amount: ( s . recurring_pre_tax_amount / 100 ). toFixed ( 2 ),
frequency: s . payment_frequency_interval ,
next_billing: new Date ( s . next_billing_date ). toLocaleDateString ()
}
}
],
from: {
email: "welcome@yourdomain.com" ,
name: "Your Company"
},
template_id: "d-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
};
}
return webhook ;
}
See all 27 lines
Pemberitahuan Kegagalan Pembayaran
function handler ( webhook ) {
if ( webhook . eventType === "payment.failed" ) {
const p = webhook . payload . data ;
webhook . url = "https://api.sendgrid.com/v3/mail/send" ;
webhook . payload = {
personalizations: [
{
to: [{ email: p . customer . email }],
dynamic_template_data: {
customer_name: p . customer . name ,
payment_amount: ( p . total_amount / 100 ). toFixed ( 2 ),
error_message: p . error_message || "Payment processing failed" ,
payment_id: p . payment_id ,
retry_link: `https://yourdomain.com/retry-payment/ ${ p . payment_id } `
}
}
],
from: {
email: "support@yourdomain.com" ,
name: "Your Company Support"
},
template_id: "d-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
};
}
return webhook ;
}
See all 26 lines
Tips
Gunakan template dinamis SendGrid untuk konten yang dipersonalisasi
Sertakan data pembayaran yang relevan dalam variabel template
Atur alamat pengirim dan nama pengirim yang tepat
Gunakan ID template untuk format email yang konsisten
Sertakan tautan berhenti berlangganan untuk kepatuhan
Pemecahan Masalah
Verifikasi bahwa API Key memiliki izin Mail Send
Periksa apakah ID template valid dan aktif
Pastikan alamat email penerima valid
Tinjau batasan dan kuota pengiriman SendGrid