MailLandDocs
خطافات الويب

أحداث Webhook

مرجع شامل لجميع أنواع أحداث webhook وبياناتها

يحدد كتالوج أحداث MailLand 21 نوع حدث موزعة على 6 فئات (اثنان من أصل الـ21 هما إشعارا منصة لا يمكنك الاشتراك فيهما). يُسلَّم كل حدث كطلب HTTP POST موقّع إلى نقطة نهاية webhook الخاصة بك.

ليس كل حدث في الكتالوج يُطلق بعد. تسعة أحداث نشطة وقابلة للاشتراك اليوم: message.delivered وmessage.deferred وmessage.bounced وmessage.failed وmessage.complained وmessage.outcome_unknown وmessage.retried وmessage.unsubscribed وinbound.received. البقية موثّقة ومحجوزة وغير مقبولة حاليًا في أي اشتراك: تُرجع الواجهة البرمجية 400 إذا أدرجت أحدها. تُبلّغ نقطة نهاية الكتالوج عن هذا لكل حدث عبر availableNow وcustomerSelectable: اقرأ هذين الحقلين بدلاً من ترميز قائمة ثابتة.

كتالوج الأحداث

احصل على كتالوج الأحداث الكامل برمجيًا:

GET https://api.mail.land/v1/webhooks/catalog
Get event catalog
curl -X GET https://api.mail.land/v1/webhooks/catalog
Catalog response (abbreviated)
{
  "version": 1,
  "products": [
    { "id": "transactional", "name": "Transactional Email", "isActive": true, "comingSoon": false },
    { "id": "marketing", "name": "Marketing Email", "isActive": true, "comingSoon": false },
    { "id": "inbound", "name": "Inbound Email", "isActive": true, "comingSoon": false },
    { "id": "system", "name": "System Events", "isActive": true, "comingSoon": false },
    { "id": "validation", "name": "Email Validation", "isActive": false, "comingSoon": true }
  ],
  "categories": [
    {
      "id": "message",
      "name": "Message Events",
      "events": [
        { "id": "message.sent", "name": "Message Sent", "products": ["transactional", "marketing"] },
        { "id": "message.delivered", "name": "Message Delivered", "products": ["transactional", "marketing"] }
      ]
    }
  ]
}

نقطة النهاية هذه عامة (لا تتطلب مصادقة) وتُرجع دائمًا أحدث إصدار من الكتالوج.

هيكل البيانات الموحد

يتضمن كل تسليم webhook هيكلًا خارجيًا موحّدًا:

Standard payload
{
  "event": "message.delivered",
  "event_id": "evt_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5",
  "timestamp": "2026-02-17T12:34:56.789Z",
  "occurred_at": "2026-02-17T12:34:56.120Z",
  "schema_version": 1,
  "data": {
    // Event-specific fields
  }
}
الحقلالنوعالوصف
eventstringمعرّف نوع الحدث
event_idstringمعرّف فريد للحدث لإزالة التكرار (الصيغة: evt_{32chars})
timestampdatetimeلحظة وضع الـwebhook في الطابور (UTC)، وليست لحظة وقوع الحدث الأصلي. راجع data.timestamp لتلك اللحظة.
occurred_atdatetimeلحظة وقوع الحدث الأصلي (UTC)؛ في أحداث الرسائل هي اللحظة نفسها في data.timestamp
schema_versionintegerإصدار مخطط هذا النوع من الأحداث (اليوم 1)؛ ويتكرر في X-MLND-Event-Version. راجع الإصدارات
dataobjectبيانات خاصة بالحدث

يحمل الحقل data في كل حدث رسالة أيضًا status_version وstatus وprevious_status وcomplaint_status وreason، راجع إصدارات الحالة.

إصدارات الحالة

يحمل كل حدث رسالة الحقول data.status_version وdata.status وdata.previous_status وdata.complaint_status وdata.reason. تزداد status_version بمقدار واحد في كل مرة ترسل فيها MailLand حدثًا لتغيير في حالة الرسالة أو سببها أو حالة الشكوى الخاصة بها.

استثناءان:

  • تبدأ الرسالة بقيمة status_version تساوي 0 ما دامت queued أو sent. الانتقال من queued إلى sent لا يرسل أي حدث ولا يغيّر الإصدار.
  • يمكن لعدة أحداث message.deferred أن تشترك في status_version واحدة: التأخير المتكرر لا يغيّر الحالة.

قد تصل الـ webhooks بغير ترتيبها وقد يُعاد إرسالها، لذا طبّقها حسب status_version، وليس أبدًا حسب ترتيب الوصول.

قد تتغير الحالة بعد أن كانت نهائية. تُبلغ MailLand بما تعرفه حين تعرفه. وإذا عرفت المزيد لاحقًا، ترسل الحالة الأحدث مع status_version أعلى:

  • قد ترتد رسالة مُسلَّمة لاحقًا، عندما يرفضها خادم المستلم بعد قبولها (ارتداد خارج الجلسة)؛
  • بعد عطل داخلي، أو بعد تعافي خادم البريد لدى MailLand، قد يُبلَّغ عن تسليم أو رفض متأخرًا. عندها قد تصبح رسالة failed إما bounced أو delivered، وقد تصبح رسالة bounced بحالة delivered، وقد تصبح رسالة unknown بأي حالة نهائية.

لا تنتقل الرسالة أبدًا من delivered إلى failed. تُحصي MailLand هذه التصحيحات.

الحقلالنوعالوصف
status_versionintegerإصدار حالة الرسالة الذي يصفه هذا الحدث.
statusstringحالة الرسالة في هذا الإصدار: queued أو sent أو deferred أو unknown أو delivered أو bounced أو failed.
previous_statusstring أو nullالحالة قبل هذا التغيير؛ null قبل أول تغيير.
complaint_statusstringnone أو complained.
reasonstring أو nullسبب الارتداد أو الفشل للحالات bounced وfailed وunknown؛ وإلا null.

مُهل إعادة المحاولة

تعيد MailLand محاولة الرسالة المؤجلة حتى مهلة إعادة المحاولة الخاصة بها: نحو 5 ساعات بعد أول تسليم لها إلى طابور التسليم في البريد المعاملاتي، ونحو 25 ساعة في البريد التسويقي. بعد المهلة لا تضع MailLand الرسالة في الطابور لأي محاولة تسليم جديدة. أما النسخة التي كانت تنتظر اتصالًا عند حلول المهلة فقد تُحاوَل بعدها. هذه مُهل لإعادة المحاولة، وليست وعودًا بموعد تلقيك الحدث النهائي. تتلقى كل حدث حين تصل النتيجة إلى MailLand؛ وهذا التأخير لم يُقَس بعد، وقد يطول أثناء انقطاع داخلي. الرسالة التي لم تتمكن MailLand من تسليمها إلى طابور التسليم خلال 24 ساعة تُنهى بحالة expired.

إذا كنت تحتفظ بالحالة الحالية للرسالة من الـ webhooks (إجراء مطلوب)

هذا تغيير في السلوك بالنسبة إلى عمليات التكامل الحالية. فعملية التكامل التي تعدّ message.failed أو message.delivered نهائيًا وتتجاهل الأحداث اللاحقة قد تبقى على حالة خاطئة بعد تصحيح. أسماء الأحداث الموجودة أصلًا صار لها الآن تسلسلات ممكنة جديدة.

  • اشترك في كل أحداث الرسائل: message.delivered وmessage.deferred وmessage.bounced وmessage.failed وmessage.complained وmessage.outcome_unknown وmessage.retried. عندئذ فقط تتضمن الأحداث التي تتلقاها كل تغيير في الحالة.
  • خزّن status_version مع الحالة. لا تطبّق حدثًا إلا إذا كانت status_version الخاصة به أعلى من المخزنة؛ وmessage.deferred بإصدار مساوٍ لا يغيّر شيئًا.
  • واصل معالجة الأحداث بعد message.failed أو message.bounced أو message.delivered: الحدث اللاحق ذو status_version الأعلى يحل محل الحالة السابقة.
  • بمجرد أن تتلقى كل الأحداث حتى status_version التي تعرضها الواجهة البرمجية، تتساوى حالتك مع حالتها. قد تسبق الواجهة البرمجية الـ webhooks التي تلقيتها حتى الآن، وعند status_version تساوي 0 قد تعرض sent دون أي حدث.

إذا كنت مشتركًا في بعض أحداث الرسائل فقط، فإن أعلى status_version تلقيتها ليست بالضرورة الحالة الحالية: ربما غيّرها نوع حدث لست مشتركًا فيه. اقرأ الحالة الحالية من الواجهة البرمجية، مثلًا لكل رسالة يكون آخر حدث تلقيته لها message.failed أو message.bounced أو message.outcome_unknown، ثم وفّق بينهما.

إذا لم تستطع تغيير عملية التكامل، فاستعلم من الواجهة البرمجية عن حالة الرسائل التي تهمك. أما عمليات التكامل التي تكتفي بعدّ الأحداث أو بعرض السجل فلا تحتاج إلى أي تغيير.

أحداث الرسائل

message.sent

توضيحي: لم يُصدَر بعد. هذا الحدث مُدرج في الكتالوج لكن لا يوجد له مُصدِر اليوم.

message.sent (illustrative)
{
  "event": "message.sent",
  "event_id": "evt_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5",
  "timestamp": "2026-02-17T12:34:56.789Z",
  "data": {
    "message_id": "t_a1b2c3d4e5f6",
    "recipient": "[email protected]",
    "timestamp": "2026-02-17T12:34:56.789Z"
  }
}

message.delivered

يُطلق عند تسليم البريد الإلكتروني بنجاح إلى خادم بريد المستلم.

قد يصل هذا الحدث أيضًا كتصحيح بعد حالة نهائية سابقة للرسالة نفسها. راجع إصدارات الحالة.

message.delivered
{
  "event": "message.delivered",
  "event_id": "evt_b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
  "timestamp": "2026-02-17T12:34:58.123Z",
  "data": {
    "message_id": "t_a1b2c3d4e5f6",
    "recipient": "[email protected]",
    "timestamp": "2026-02-17T12:34:58.123Z",
    "smtp_response": "OK",
    "status_version": 1,
    "status": "delivered",
    "previous_status": "sent",
    "complaint_status": "none",
    "reason": null
  }
}

message.deferred

يُطلق عندما يتأخر التسليم مؤقتًا. سيعيد MailLand المحاولة تلقائيًا.

قد تؤجَّل الرسالة عدة مرات. يزيد أول تأجيل قيمة status_version؛ وتحمل التأجيلات المتكررة قيمة status_version نفسها.

message.deferred
{
  "event": "message.deferred",
  "event_id": "evt_c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7",
  "timestamp": "2026-02-17T12:35:00.000Z",
  "data": {
    "message_id": "t_a1b2c3d4e5f6",
    "recipient": "[email protected]",
    "timestamp": "2026-02-17T12:35:00.000Z",
    "smtp_response": "Try again later",
    "bounce_reason": "TransientFailure"
  }
}

message.bounced

يُطلق عند ارتداد بريد إلكتروني (ارتداد دائم أو مؤقت).

قد يصل هذا الحدث أيضًا كتصحيح بعد حالة نهائية سابقة للرسالة نفسها. راجع إصدارات الحالة.

message.bounced
{
  "event": "message.bounced",
  "event_id": "evt_d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8",
  "timestamp": "2026-02-17T12:35:01.000Z",
  "data": {
    "message_id": "t_a1b2c3d4e5f6",
    "recipient": "[email protected]",
    "timestamp": "2026-02-17T12:35:01.000Z",
    "bounce_type": "hard",
    "bounce_reason": "InvalidRecipient",
    "smtp_response": "The email account that you tried to reach does not exist.",
    "status_version": 1,
    "status": "bounced",
    "previous_status": "sent",
    "complaint_status": "none",
    "reason": "InvalidRecipient"
  }
}

bounce_reason هو رمز التصنيف الذي تُسنده MailLand للارتداد (مثل InvalidRecipient أو QuotaIssues أو SpamBlock)، وليس نص SMTP الخام، استخدم smtp_response لذلك. bounce_type يكون واحدًا من hard أو soft أو blocked أو unknown.

smtp_response هو نص رد خادم المستلم، دون رمز الرد الرقمي ورمز الحالة المُوسَّع. يبيّن bounce_type ما فعلته MailLand بالعنوان: hard، حُظر لكل البريد؛ soft، حُظر للبريد التسويقي لمدة 30 يومًا؛ blocked، كان الرفض متعلقًا بالإرسال لا بالعنوان (مثل تصفية البريد المزعج أو مصادقة المرسل أو السمعة أو سياسة المستلم)، لذا لا يُحظر شيء؛ unknown، لا يوجد تصنيف، ويُعامل مثل soft.

message.failed

يُطلق عندما تُنهي MailLand رسالة بناءً على دليل قاطع على أنها لم تُسلَّم، لسبب من جانب MailLand لا من جانب المستلم. في الحالات الموصوفة في إصدارات الحالة قد يتبعه message.delivered أو message.bounced مع status_version أعلى. تصبح حالة الرسالة Failed وليس Bounced، ويُحدد reason الحالة:

السببما الذي حدث
dkim_revokedكانت الرسالة تنتظر في طابور التسليم لدى MailLand، موقّعة بمفتاح DKIM ألغته MailLand لاحقًا إلغاءً طارئًا لنطاق المرسل (مثلًا بعد الاشتباه في تسريب المفتاح). لا تُسلِّم MailLand مثل هذه الرسالة أبدًا ولا تعيد توقيعها: تنتهي صلاحيتها عند المحاولة التالية، خلال نحو 30 دقيقة للبريد المعاملاتي و4 ساعات للبريد التسويقي.
admin_bounceأزال أحد مشغّلي MailLand الرسالة من طابور التسليم لدى MailLand.
dkim_key_revokedنطاق المرسل خاضع لإيقاف DKIM طارئ، لذا رفضت MailLand الرسالة قبل دخولها طابور التسليم.
inject_failedرفض طابور التسليم لدى MailLand الرسالة رفضًا نهائيًا، فلم تُدرج في الطابور للتسليم قط.
expiredقبلت MailLand الرسالة لكنها لم تسلّمها إلى طابور التسليم خلال 24 ساعة، لذا أنهتها دون إرسالها.
template_variable_missingاحتوت الرسالة على عنصر نائب {{name}} لا توجد له قيمة لهذا المستلم، لذا لم ترسلها MailLand والعنصر النائب ظاهر في نصها.
  • لا يُحظر المستلم، ولا يُحتسب هذا الفشل ضمن معدل الارتداد لديك.
  • تُنتج الرسالة الواحدة حدث message.failed واحدًا على الأكثر. وهو آخر حدث لتلك الرسالة ما لم تتلقَّ MailLand لاحقًا تسليمًا أو رفضًا؛ عندها يتبعه message.delivered أو message.bounced مع status_version أعلى.

يُبلَّغ عن رفض خادم البريد المستلم كحدث message.bounced، وليس أبدًا كحدث message.failed.

message.failed
{
  "event": "message.failed",
  "event_id": "evt_e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
  "timestamp": "2026-09-28T02:00:19.1047332Z",
  "data": {
    "message_id": "t_a1b2c3d4e5f6",
    "recipient": "[email protected]",
    "timestamp": "2026-09-28T02:00:18.2522997Z",
    "reason": "dkim_revoked",
    "smtp_response": "Next delivery time PT3.028008S > PT1S",
    "status_version": 1,
    "status": "failed",
    "previous_status": "sent",
    "complaint_status": "none"
  }
}
الحقلالوصف
reasonسبب إنهاء MailLand للرسالة: إحدى القيم أعلاه. تعامل مع أي قيمة أخرى على أنها سبب جديد من جانب MailLand.
smtp_responseنص من طابور التسليم لدى MailLand إن وُجد (dkim_revoked وadmin_bounce وinject_failed)، وإلا null. للعلم فقط: وليس أبدًا ردًا من خادم المستلم.

message.outcome_unknown

يُطلق عندما لا تستطيع MailLand تحديد ما إذا كانت الرسالة قد وصلت إلى طابور التسليم لديها، مثلًا لأن تسليمها إلى القائمة انقطع ولم يمكن التحقق منه بعد ذلك. يُرسل بعد مدة من مهلة إعادة المحاولة الخاصة بالرسالة، حاليًا 7 أيام، إذا لم يصل أي دليل حتى ذلك الحين. هذه ليست حالة نهائية. تصبح الحالة unknown. إذا عرفت MailLand النتيجة لاحقًا، تتلقى message.delivered أو message.bounced أو message.failed مع status_version أعلى.

message.outcome_unknown
{
  "event": "message.outcome_unknown",
  "event_id": "evt_0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d",
  "timestamp": "2026-10-08T17:05:00.000Z",
  "data": {
    "message_id": "t_a1b2c3d4e5f6",
    "recipient": "[email protected]",
    "timestamp": "2026-10-08T17:05:00.000Z",
    "status_version": 1,
    "status": "unknown",
    "previous_status": "queued",
    "complaint_status": "none",
    "reason": "handoff_undetermined"
  }
}

message.retried

يُطلق عندما تعيد محاولة رسالة مرتدّة أو فاشلة فتضعها MailLand في الطابور من جديد. تصبح الحالة queued وتزداد status_version؛ وتتبعها أحداث النسخة المعاد إرسالها بإصدارات أعلى. هذه ليست حالة نهائية.

message.retried
{
  "event": "message.retried",
  "event_id": "evt_1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e",
  "timestamp": "2026-10-01T18:00:00.000Z",
  "data": {
    "message_id": "t_a1b2c3d4e5f6",
    "recipient": "[email protected]",
    "timestamp": "2026-10-01T18:00:00.000Z",
    "attempt": 1,
    "status_version": 2,
    "status": "queued",
    "previous_status": "bounced",
    "complaint_status": "none",
    "reason": null
  }
}

أحداث التفاعل

message.opened وmessage.clicked مُدرجان في الكتالوج لكنها غير قابلة للاختيار من قِبل العميل وغير مُصدَرة اليوم. لا يمكنك الاشتراك فيها: محاولة اختيارها عند الإنشاء/التحديث تُرفض بالخطأ 400 "One or more invalid events selected". الأمثلة أدناه توضيحية فقط.

message.opened

توضيحي: غير متاح.

message.opened (illustrative)
{
  "event": "message.opened",
  "event_id": "evt_f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0",
  "timestamp": "2026-02-17T13:15:00.000Z",
  "data": {
    "message_id": "t_a1b2c3d4e5f6",
    "recipient": "[email protected]",
    "timestamp": "2026-02-17T13:15:00.000Z"
  }
}

message.clicked

توضيحي: غير متاح.

message.clicked (illustrative)
{
  "event": "message.clicked",
  "event_id": "evt_g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1",
  "timestamp": "2026-02-17T13:16:00.000Z",
  "data": {
    "message_id": "t_a1b2c3d4e5f6",
    "recipient": "[email protected]",
    "timestamp": "2026-02-17T13:16:00.000Z"
  }
}

message.unsubscribed

يُرسَل عندما يلغي مستلم اشتراكه من رسالة أرسلتها: عبر ترويسة List-Unsubscribe أو عنوان mailto: الخاص بها، أو طلب POST بنقرة واحدة، أو رابط إلغاء الاشتراك، أو صفحة التفضيلات. لا يُرسَل عند إلغاء الاشتراك الذي تجريه أنت بنفسك عبر الواجهة البرمجية أو لوحة التحكم، ولا عند شكاوى البريد المزعج (message.complained). يُرسَل مرة واحدة لكل رسالة، في اللحظة نفسها التي يُسجَّل فيها إلغاء اشتراك المستلم، إلى كل نقطة نهاية مشتركة فيه. وككل أحداث الرسائل، يحمل data أيضًا حقول حالة الرسالة الحالية (راجع إصدارات الحالة).

message.unsubscribed
{
  "event": "message.unsubscribed",
  "event_id": "evt_h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2",
  "timestamp": "2026-02-17T14:00:00.000Z",
  "data": {
    "message_id": "m_a1b2c3d4e5f6",
    "recipient": "[email protected]",
    "timestamp": "2026-02-17T14:00:00.000Z",
    "status_version": 3,
    "status": "delivered",
    "previous_status": "queued",
    "complaint_status": "none",
    "reason": null
  }
}

أحداث الإيقاف

message.complained

يُطلق عندما يُبلّغ المستلم عن البريد الإلكتروني كرسالة مزعجة (حلقة تغذية راجعة من مزوّد الخدمة).

message.complained
{
  "event": "message.complained",
  "event_id": "evt_i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3",
  "timestamp": "2026-02-17T15:00:00.000Z",
  "data": {
    "message_id": "m_a1b2c3d4e5f6",
    "recipient": "[email protected]",
    "timestamp": "2026-02-17T15:00:00.000Z",
    "feedback_type": "abuse"
  }
}

معدلات الشكاوى التي تتجاوز 0.1٪ يمكن أن تضر بسمعة المُرسِل الخاصة بك. راقب أحداث message.complained عن كثب وتأكد من الإرسال فقط إلى المستلمين الذين وافقوا على ذلك.

suppression.added

توضيحي: لم يُصدَر بعد. هذا الحدث مُدرج في الكتالوج لكن لا يوجد له مُصدِر اليوم.

suppression.added (illustrative)
{
  "event": "suppression.added",
  "event_id": "evt_j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4",
  "timestamp": "2026-02-17T15:00:01.000Z",
  "data": {
    "email": "[email protected]",
    "type": "complaint",
    "scope": "global",
    "reason": "Spam complaint via ISP feedback loop"
  }
}

suppression.removed

توضيحي: لم يُصدَر بعد. هذا الحدث مُدرج في الكتالوج لكن لا يوجد له مُصدِر اليوم.

suppression.removed (illustrative)
{
  "event": "suppression.removed",
  "event_id": "evt_k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5",
  "timestamp": "2026-02-17T16:00:00.000Z",
  "data": {
    "email": "[email protected]",
    "type": "manual",
    "scope": "global"
  }
}

أحداث البريد الوارد

inbound.received

يُطلق عند استلام بريد إلكتروني وارد على أحد نطاقاتك.

يستخدم هذا الحدث الغلاف القياسي مثل كل حدث آخر في هذه الصفحة: event_id يساوي X-MLND-Event-Id ويبقى ثابتًا عبر إعادة المحاولات، وoccurred_at هو وقت استلام البريد، وحقول البريد الوارد تحت data. id كل مرفق ثابت عبر إعادة المحاولات، أما download_url فجديد في كل محاولة. مرجع الحقول: ويب هوك البريد الوارد.

inbound.received
{
  "event": "inbound.received",
  "event_id": "evt_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
  "timestamp": "2026-02-17T12:00:00.000Z",
  "occurred_at": "2026-02-17T12:00:00.000Z",
  "schema_version": 1,
  "data": {
    "idempotency_key": "r7n2k5x9m1p4w6_s5m3x8k1p7n4w2",
    "email": {
      "id": "r7n2k5x9m1p4w6",
      "received_at": "2026-02-17T12:00:00.000Z",
      "size_bytes": 4521,
      "envelope": {
        "from": "[email protected]",
        "to": ["[email protected]"]
      },
      "headers": {
        "from": { "address": "[email protected]", "name": "Jane Doe" },
        "to": [{ "address": "[email protected]" }],
        "subject": "Help with my order",
        "message_id": "<[email protected]>",
        "date": "2026-02-17T11:59:50.000Z"
      },
      "body": {
        "text_preview": "Hi, I need help with...",
        "has_text": true,
        "has_html": true
      },
      "attachments": [],
      "authentication": {
        "spf": { "result": "pass" },
        "dkim": { "result": "pass" },
        "dmarc": { "result": "pass" }
      },
      "spam": {
        "score": 0.1,
        "is_spam": false,
        "reason": null
      },
      "source": {
        "ip": "203.0.113.10",
        "hostname": "mail.external.com"
      }
    },
    "matched_route": {
      "id": "s5m3x8k1p7n4w2",
      "name": "Support inbox"
    }
  }
}

أحداث الحساب

account.webhook_paused

لا يُصدَر. الإيقاف التلقائي حقيقي ويحدث كما هو موصوف في منطق إعادة المحاولة، لكنه يُبلَّغ عنه عبر حقلي webhook الخاصين به pausedAt / pausedReason وإشعار داخل التطبيق، وليس كحدث webhook. إرسال "توقفت نقطة النهاية الخاصة بك عن العمل" إلى نقطة نهاية webhook غير موثوق به بحكم التصميم، ولا يمكن لأي اشتراك احتواء هذا الحدث حاليًا على أي حال.

يُطلق عند إيقاف webhook تلقائيًا بسبب إخفاقات متتالية.

account.webhook_paused
{
  "event": "account.webhook_paused",
  "event_id": "evt_m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7",
  "timestamp": "2026-02-17T18:00:00.000Z",
  "data": {
    "webhook_id": "z8m3p1k6x4w2n7",
    "webhook_name": "Production Events",
    "consecutive_failures": 10,
    "last_error": "Connection refused"
  }
}

account.domain_verified

توضيحي: لم يُصدَر بعد. هذا الحدث مُدرج في الكتالوج لكن لا يوجد له مُصدِر اليوم.

account.domain_verified (illustrative)
{
  "event": "account.domain_verified",
  "event_id": "evt_n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8",
  "timestamp": "2026-02-17T10:15:00.000Z",
  "data": {
    "domain_id": "q3z8v1k6m9p2x5",
    "domain": "yourdomain.com"
  }
}

account.domain_failed

توضيحي: لم يُصدَر بعد. هذا الحدث مُدرج في الكتالوج لكن لا يوجد له مُصدِر اليوم.

account.domain_failed (illustrative)
{
  "event": "account.domain_failed",
  "event_id": "evt_o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9",
  "timestamp": "2026-02-17T10:15:00.000Z",
  "data": {
    "domain_id": "q3z8v1k6m9p2x5",
    "domain": "yourdomain.com",
    "reason": "DKIM record not found for selector mlnd"
  }
}

account.quota_warning

توضيحي: لم يُصدَر بعد. هذا الحدث مُدرج في الكتالوج لكن لا يوجد له مُصدِر اليوم.

account.quota_warning (illustrative)
{
  "event": "account.quota_warning",
  "event_id": "evt_p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0",
  "timestamp": "2026-02-17T20:00:00.000Z",
  "data": {
    "used": 45000,
    "limit": 50000,
    "percentage": 90
  }
}

account.quota_exceeded

توضيحي: لم يُصدَر بعد. هذا الحدث مُدرج في الكتالوج لكن لا يوجد له مُصدِر اليوم.

account.quota_exceeded (illustrative)
{
  "event": "account.quota_exceeded",
  "event_id": "evt_q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1",
  "timestamp": "2026-02-17T22:00:00.000Z",
  "data": {
    "used": 50000,
    "limit": 50000,
    "percentage": 100
  }
}

ملخص الأحداث

"متاح" هو علامة availableNow في الكتالوج: هل يُصدِر شيء ما هذا الحدث فعليًا اليوم. يمكن فقط للأحداث المتاحة أن تُدرج في اشتراك.

الحدثمتاحالمنتجاتمقيّد بالنطاقالوصف
message.deliveredنعمtransactional, marketingنعمتم التسليم بنجاح
message.deferredنعمtransactional, marketingنعممؤجل مؤقتًا
message.bouncedنعمtransactional, marketingنعمارتداد دائم أو مؤقت
message.failedنعمtransactional, marketingنعمأنهته MailLand بناءً على دليل قاطع لسبب من جانبها؛ قد يتبعه تصحيح (راجع إصدارات الحالة)
message.outcome_unknownنعمtransactional, marketingنعمتعذّر على MailLand تحديد ما إذا كانت الرسالة قد وصلت إلى طابور التسليم؛ ليست نهائية
message.retriedنعمtransactional, marketingنعمأُعيدت محاولة رسالة مرتدّة أو فاشلة وهي في الطابور من جديد؛ ليست نهائية
message.complainedنعمtransactional, marketingنعمتم وضع علامة عليه كرسالة مزعجة
inbound.receivedنعمinboundنعمتم استلام بريد إلكتروني وارد
message.sentليس بعدtransactional, marketingنعمتم قبول البريد الإلكتروني ووضعه في الطابور
message.openedليس بعدtransactional, marketingنعمتم تحميل بكسل التتبع
message.clickedليس بعدtransactional, marketingنعمتم النقر على رابط
message.unsubscribedنعمtransactional, marketingنعمألغى المستلم الاشتراك
suppression.addedليس بعدtransactional, marketingلاتمت الإضافة إلى قائمة الإيقاف
suppression.removedليس بعدtransactional, marketingلاتمت الإزالة من قائمة الإيقاف
account.webhook_pausedليس بعدsystemلاتم إيقاف الـwebhook تلقائيًا
account.domain_verifiedليس بعدsystemلاتم التحقق من النطاق
account.domain_failedليس بعدsystemلافشل التحقق من النطاق
account.quota_warningليس بعدsystemلاالاقتراب من حد الحصة
account.quota_exceededليس بعدsystemلاتم استنفاد الحصة

الأحداث المستقبلية

عندما تكون includeFutureEvents بقيمة true (الافتراضي)، يستلم الـwebhook الخاص بك تلقائيًا أنواع الأحداث الجديدة أثناء إضافتها إلى منتجاتك المشترك بها. اضبطها على false لتثبيت اشتراكك على لقطة الأحداث الحالية.

الأحداث المُعلَّمة بـ"ليس بعد" أعلاه تصبح قابلة للاشتراك عند إطلاق مُصدِراتها: أسماء الأحداث وهياكل البيانات الموثقة هنا لن تتغير عند ذلك.

الخطوات التالية

في هذه الصفحة