Home / Features / Webhooks
Webhooks أصلية

Webhooks تُسلِّم فعلاً

حمولات JSON بتوقيع قابل للتحقق، تسليم مدعوم بالطابور، إعادات محاولات أُسية، وسجل تسليم لكل نموذج. مبني للمطورين — بلا وسيط مثل Zapier يلتهم بياناتك.

مجاني في جميع الخطط · موقّع بـ HMAC · إعادة محاولات في طابور
POST /webhook
{
  "event": "submission.created",
  "delivery_id": "dlv_8aE2k",
  "timestamp": 1730723400,
  "form_id": "f_142",
  "submission_id": "s_9k3X",
  "fields": {
    "name": "Sarah Chen",
    "email": "[email protected]",
    "budget": 25000
  }
}

ما الذي يُطلق Webhook

تُهيِّء مرة واحدة لكل نموذج. ونحن ندفع عند كل حدث ذي صلة.

submission.created

رد جديد

يُطلق لحظة إرسال النموذج، مع الحمولة الكاملة والحقول والبيانات الوصفية.

payment.succeeded

دفع ناجح

حين ينجح دفع Stripe مرتبط برد، تتضمن الحمولة حالة الدفع والمبلغ والعملة.

draft.resumed

استئناف مسودة

حين يعود متجاوب إلى مسودة محفوظة (نماذج Save-and-Resume)، يمكنك تلقي إشعار لتحليلات قمع التحويل.

JSON متوقَّع، مُصدَّر بإصدار، وحسن الصياغة

بلا مفاجآت. نفس الغلاف لكل حدث. تبقى أنواع الحقول كما أُدخلت.

{
  "event":         "submission.created",
  "delivery_id":   "dlv_8aE2kF1Ld9zQ",
  "timestamp":     1730723400,
  "form_id":       "f_142",
  "submission_id": "s_9k3XnPq72T",
  "fields": {
    "name":    "Sarah Chen",
    "email":   "[email protected]",
    "company": "Acme Corp",
    "budget":  25000,
    "message": "Looking for a form solution..."
  },
  "payment": {
    "status":   "succeeded",
    "amount":   2500,
    "currency": "usd"
  },
  "meta": {
    "ip":         "203.0.113.42",
    "user_agent": "Mozilla/5.0...",
    "locale":     "en"
  }
}

موقّع ومُتحقَّق منه، ولا يمكن تزويره

كل حمولة موقّعة بـ HMAC-SHA256 لسر Webhook الخاص بنموذجك. تحقّق على جانبك قبل الوثوق بالبيانات.

توقيع HMAC-SHA256

ترويسة X-FormBuilder-Signature في كل طلب. احسب HMAC للجسم الخام بسرّك، وقارن في زمن ثابت.

أسرار لكل نموذج

لكل نموذج سرّه. دوّر متى شئت من إعدادات النموذج — تبقى الحمولات القديمة قابلة للتحقق حتى تجدّد السر.

TLS فقط

نقبل فقط نقاط نهاية HTTPS. نرفض الإرسال إلى عناوين بنص صريح لحماية بيانات الإرسال.

حماية من إعادة الإرسال

كل حمولة تتضمن طابعاً زمنياً ومعرف تسليم فريد. ارفض التسليمات الأقدم من 5 دقائق لمنع هجمات الإعادة.

تحقّق في 3 أسطر

اختر مكدّسك. النمط واحد: HMAC للجسم الخام بسرّك، ثم قارن مع ترويسة التوقيع.

const crypto = require('crypto');

function verify(rawBody, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}
function verify($rawBody, $signature, $secret) {
    $expected = hash_hmac('sha256', $rawBody, $secret);
    return hash_equals($expected, $signature);
}
import hmac, hashlib

def verify(raw_body: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(
        secret.encode(), raw_body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

مبني للعالم الحقيقي

الشبكات تعطل، النقاط النهائية تختنق، عمليات النشر تحدث. تنتظر Webhooks في طابور، وتعيد المحاولة، وتُظهر حالة التسليم.

تسليم في طابور

تعود الردود فوراً للمتجاوب. يحدث تسليم Webhook في طابور خلفي — لا يحجز النموذج أبداً.

Backoff أُسي

تعيد التسليمات الفاشلة المحاولة بـ backoff أُسي. لا نُرهق نقطتك النهائية حين تكون مُجهدة.

محاولات إعادة متعددة

تُجرَّب كل عملية تسليم عدة مرات على مدار ساعات. لديك وقت للتعافي من الأعطال دون فقد بيانات.

سجل التسليم

تُسجَّل كل محاولة — الطلب، رمز الاستجابة، مقتطف من الجسم، والطابع الزمني. افحص الإخفاقات في إعدادات النموذج.

مفاتيح Idempotency

تتضمن كل عملية تسليم معرفاً فريداً. استخدمه كمفتاح Idempotency على جانبك لإلغاء التكرارات بأمان.

مسجَّل في التدقيق

تغييرات URL، تدوير الأسرار، وتشغيل/إيقاف Webhook كلها مسجلة في سجل تدقيق مساحة العمل.

ما الذي يبنيه الناس بـ Webhooks

USE CASE 01

مزامنة CRM مخصص

ادفع العملاء المحتملين إلى CRM داخلي بنفس تعيين الحقول الذي يتوقعه نظامك.

USE CASE 02

تنبيهات Slack / Discord

تجاوز تكامل Slack الأصلي، وابنِ تدفقات تنبيه مخصّصة بحمولات غنية.

USE CASE 03

معالجة في الواجهة الخلفية

شغّل مهام في الخلفية، أرسل بريداً معاملياً، تحقّق من البيانات، وتزامن مع مستودع البيانات.

USE CASE 04

بديل عن Zapier / Make

تجاوز رسوم الوسيط. يستطيع Webhook واحد التفرّع إلى أي عدد من الخدمات الداخلية.

الإعداد في 4 خطوات

هيِّء مرة، وسلِّم إلى الأبد.

افتح إعدادات النموذج

في اللوحة، افتح نموذجك واذهب إلى التكاملات → Webhooks.

أضف عنوان النقطة النهائية

الصق عنوان HTTPS الذي سيستقبل الردود. نتحقّق من استجابة النقطة قبل الحفظ.

انسخ سر التوقيع

يحصل كل نموذج على سر فريد. احفظه على الخادم واستخدمه للتحقق من الحمولات الواردة.

أرسل اختباراً

أرسل رداً تجريبياً وافحص سجل التسليم. تأكد أن نقطتك أعادت 2xx وأن التحقق من التوقيع نجح.

الأسئلة الشائعة

هل Webhooks مجانية؟
نعم. Webhooks مشمولة في جميع الخطط، بما فيها الخطة المجانية. لا رسوم لكل استدعاء.
ما مدى سرعة التسليم؟
التسليم مدعوم بالطابور وعادةً يكتمل خلال ثوانٍ من الإرسال. لا نحجز استجابة النموذج، فيرى المتجاوبون التأكيد فوراً.
ما سياسة إعادة المحاولة؟
تعيد عمليات التسليم الفاشلة (5xx، انتهاء المهلة، أخطاء الاتصال) المحاولة بـ backoff أُسي عبر عدة محاولات على مدار ساعات. بعد الحد الأقصى، تُحدَّد كفاشلة وتُسجَّل.
هل يمكن وضع عدة Webhooks لنموذج واحد؟
نعم. أضف ما تحتاجه من نقاط نهاية لنموذج واحد. كل واحدة تنطلق باستقلال بسرّها وحالة إعادة محاولاتها.
هل تدعمون قائمة IP مسموح بها؟
تنطلق التسليمات من مجموعة عناوين IP ثابتة. تواصل مع الدعم للحصول على القائمة الحالية إن كان جدارك الناري يتطلب سماحاً صريحاً.
كيف أُدوِّر سر التوقيع؟
في إعدادات النموذج → Webhook → «إعادة توليد السر». يبدأ السر الجديد بالعمل عند التسليم التالي. حدّث نقطتك للتحقق بالسر الجديد قبل إعادة التوليد.

جاهز للربط؟

Webhooks أصلية. مجانية في جميع الخطط.

ابدأ مجاناً