المقدمة
قم بإرسال رسائل البريد الإلكتروني المعاملات تلقائيًا لتأكيدات الدفع، وتحديثات الاشتراك، والإشعارات المهمة باستخدام SendGrid. قم بتحفيز رسائل البريد الإلكتروني الشخصية بناءً على أحداث الدفع مع محتوى ديناميكي وقوالب احترافية.
يتطلب هذا التكامل مفتاح API الخاص بـ SendGrid مع أذونات إرسال البريد.
البدء
Open the Webhook Section
في لوحة تحكم Dodo Payments، انتقل إلى Webhooks → + Add Endpoint ثم وسّع قائمة التكاملات المنسدلة.
Select SendGrid
اختر بطاقة التكامل SendGrid .
Enter API Key
قدّم مفتاح API الخاص بـ SendGrid ضمن التكوين.
Configure Transformation
عدّل تعليمات التحويل لتنسيق الرسائل الإلكترونية وفقاً لواجهة SendGrid لميزة Mail Send.
Test & Create
اختبر باستخدام حمولات نموذجية ثم انقر Create لتفعيل إرسال البريد الإلكتروني.
Done!
🎉 ستؤدي أحداث الدفع الآن إلى تشغيل الرسائل الإلكترونية المعاملاتية تلقائياً عبر SendGrid.
أمثلة على كود التحويل
رسالة تأكيد الدفع
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
رسالة ترحيب الاشتراك
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
إشعار فشل الدفع
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
نصائح
استخدم قوالب SendGrid الديناميكية لمحتوى مخصص
قم بتضمين بيانات الدفع ذات الصلة في متغيرات القالب
قم بتعيين عناوين من صحيحة وأسماء مرسلين
استخدم معرفات القالب لتنسيق البريد الإلكتروني بشكل متسق
قم بتضمين روابط إلغاء الاشتراك للامتثال
استكشاف الأخطاء وإصلاحها
تأكد من أن مفتاح API يمتلك أذونات إرسال البريد
تحقق من أن معرفات القالب صالحة ونشطة
تأكد من صحة عناوين البريد الإلكتروني للمستلمين
راجع حدود وإحصائيات الإرسال الخاصة بـ SendGrid