> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SendGrid

> إرسال رسائل البريد الإلكتروني المعاملات بناءً على أحداث مدفوعات Dodo باستخدام واجهة برمجة تطبيقات Mail Send الخاصة بـ SendGrid.

## المقدمة

قم بإرسال رسائل البريد الإلكتروني المعاملات تلقائيًا لتأكيدات الدفع، وتحديثات الاشتراك، والإشعارات المهمة باستخدام SendGrid. قم بتحفيز رسائل البريد الإلكتروني الشخصية بناءً على أحداث الدفع مع محتوى ديناميكي وقوالب احترافية.

<Info>
  يتطلب هذا التكامل مفتاح API الخاص بـ SendGrid مع أذونات إرسال البريد.
</Info>

## البدء

<Steps>
  <Step title="Open the Webhook Section">
    في لوحة معلومات Dodo Payments الخاصة بك، انتقل إلى <b>Webhooks → + Add Endpoint</b> وقم بتوسيع قائمة التكاملات المنسدلة.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/slbAEdrLLwKHfaRf/images/integrations/sendgrid.png?fit=max&auto=format&n=slbAEdrLLwKHfaRf&q=85&s=bb13e15660cf9765d6501190d738525d" alt="Add Endpoint and integrations dropdown" style={{ maxHeight: '500px', width: 'auto' }} width="1682" height="944" data-path="images/integrations/sendgrid.png" />
    </Frame>
  </Step>

  <Step title="Select SendGrid">
    اختر بطاقة التكامل <b>SendGrid</b>.
  </Step>

  <Step title="Enter API Key">
    قدّم مفتاح API الخاص بـ SendGrid ضمن التكوين.
  </Step>

  <Step title="Configure Transformation">
    عدّل تعليمات التحويل لتنسيق الرسائل الإلكترونية وفقاً لواجهة SendGrid لميزة Mail Send.
  </Step>

  <Step title="Test & Create">
    اختبر باستخدام حمولات نموذجية ثم انقر <b>Create</b> لتفعيل إرسال البريد الإلكتروني.
  </Step>

  <Step title="Done!">
    🎉 ستؤدي أحداث الدفع الآن إلى تشغيل الرسائل الإلكترونية المعاملاتية تلقائياً عبر SendGrid.
  </Step>
</Steps>

## أمثلة على كود التحويل

### رسالة تأكيد الدفع

```javascript payment_confirmation.js icon="js" expandable theme={null}
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;
}
```

### رسالة ترحيب الاشتراك

```javascript subscription_welcome.js icon="js" expandable theme={null}
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;
}
```

### إشعار فشل الدفع

```javascript payment_failure.js icon="js" expandable theme={null}
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;
}
```

## نصائح

* استخدم قوالب SendGrid الديناميكية لمحتوى مخصص
* قم بتضمين بيانات الدفع ذات الصلة في متغيرات القالب
* قم بتعيين عناوين من صحيحة وأسماء مرسلين
* استخدم معرفات القالب لتنسيق البريد الإلكتروني بشكل متسق
* قم بتضمين روابط إلغاء الاشتراك للامتثال

## استكشاف الأخطاء وإصلاحها

<AccordionGroup>
  <Accordion title="Emails not being sent">
    * تأكد من أن مفتاح API يمتلك أذونات إرسال البريد
    * تحقق من أن معرفات القالب صالحة ونشطة
    * تأكد من صحة عناوين البريد الإلكتروني للمستلمين
    * راجع حدود وإحصائيات الإرسال الخاصة بـ SendGrid
  </Accordion>

  <Accordion title="Transformation errors">
    * تحقق من تطابق بنية JSON مع تنسيق واجهة SendGrid
    * تأكد من وجود كل الحقول المطلوبة
    * احرص على تنسيق متغيرات بيانات القالب بصورة صحيحة
    * تحقق من أن عناوين البريد من مرسلي الرسائل مُحققة في SendGrid
  </Accordion>
</AccordionGroup>
