التكاملات: الويب هوك وجداول بيانات Google
في هذه الصفحة
ترسل التكاملات في قائمة موقعك ما يحدث على موقعك إلى أدوات أخرى لحظة حدوثه:
- الويب هوك ترسل الطلبات الجديدة والمشتركين الجدد وطلبات الشراء المدفوعة إلى أي تطبيق يستقبلها: Zapier أو Make أو n8n أو Pabbly أو نظام CRM الخاص بك أو خادمك.
- جداول بيانات Google تضيف كل طلب جديد كصف في جدول بيانات، دون ربط حساب Google بـ Closer.
لكل موقع تكاملاته الخاصة. يمكنك إضافة 5 عناوين كحد أقصى لكل موقع (الويب هوك وجداول البيانات معًا).
الويب هوك
الويب هوك عنوان (URL) يستدعيه Closer مع تفاصيل حدث ما. تمنحك معظم أدوات الأتمتة عنوانًا كهذا: في Zapier هو المشغّل Webhooks by Zapier → Catch Hook، وفي Make الوحدة Webhooks → Custom webhook، وفي n8n العقدة Webhook.
إضافة ويب هوك
- افتح التكاملات.
- الصق العنوان تحت عنوان الويب هوك. يجب أن يبدأ بـ
https://. - حدّد الأحداث التي تريدها:
- طلب جديد: أرسل زائر نموذج تواصل (أو اختبارًا مع نموذج).
- مشترك جديد: اشترك شخص عبر نموذج النشرة البريدية.
- طلب جديد (للمتجر): تم دفع طلب شراء في متجرك.
- انقر إضافة ويب هوك.
- يعرض Closer سر التوقيع (
whsec_…) مرة واحدة. انسخه واحفظه في التطبيق المستقبِل إذا أردت التحقق من أن الطلبات تأتي فعلًا من Closer. إذا فقدته، انقر سر جديد؛ يتوقف القديم عن العمل فورًا. - انقر إرسال اختبار. يتلقى التطبيق المستقبِل حدثًا تجريبيًا (مع
"test": true)، وتظهر النتيجة في سجل الإرسال.
يمكنك لاحقًا تفعيل الأحداث وإيقافها بالنقر عليها، أو إيقاف الويب هوك مؤقتًا بمفتاحه، أو إزالة الويب هوك.
لأسباب أمنية، لا يستدعي Closer إلا عناوين الإنترنت العامة. تُرفض العناوين في الشبكات الخاصة أو الداخلية (مثل
localhostو10.x.x.xو192.168.x.x).
ما الذي يرسله Closer
كل طلب هو POST بجسم JSON:
{
"id": "1f6c2a9e-…",
"event": "inquiry.created",
"created_at": "2026-10-22T09:30:00+00:00",
"test": false,
"site": { "id": 12, "name": "My site", "url": "https://mysite.closer.li" },
"data": { … }
}
قيمة event هي inquiry.created أو subscriber.created أو order.paid. ما يحتويه data:
| الحدث | الحقول في data |
|---|---|
inquiry.created |
id، created_at، language، page (مكان إرسال النموذج، مثل /contact)، name، email، fields (قائمة من key وlabel وvalue لكل حقل في النموذج)، quiz (الإجابات والنتيجة، أو null) |
subscriber.created |
id، email، name، language، source (النموذج)، created_at |
order.paid |
id، code، email، name، language، items (id، name، price)، subtotal، discount، coupon_code، total، currency، mode (test أو live أو free)، paid_at |
المبالغ بـالسنتات (أصغر وحدة في العملة): 4500 مع "currency": "EUR" تعني 45.00 €.
الترويسات المرسلة مع كل طلب:
X-Closer-Event: اسم الحدث.X-Closer-Delivery: معرّف فريد للحدث. تحتفظ إعادة المحاولات للحدث نفسه بالمعرّف نفسه، فيمكنك تجاهل التكرارات.X-Closer-Signature:t=1761125400,v1=5d41…، حيثtهو وقت الإرسال (ثوانٍ بتوقيت Unix) وv1هو HMAC-SHA256 لـt + "." + الجسم الخام، محسوبًا بسر التوقيع الخاص بك.
للتحقق من طلب، احسب HMAC نفسه بسرّك وقارنه بـ v1، وارفض الطلبات التي يكون t فيها أقدم من بضع دقائق. في PHP:
[$t, $v1] = sscanf($_SERVER['HTTP_X_CLOSER_SIGNATURE'], 't=%d,v1=%s');
$body = file_get_contents('php://input');
$valid = hash_equals(hash_hmac('sha256', $t.'.'.$body, $secret), $v1) && abs(time() - $t) < 300;
إعادة المحاولة وسجل الإرسال
يجب أن يرد العنوان المستقبِل بحالة 2xx خلال 15 ثانية. إذا لم يفعل (خطأ، أو انتهاء المهلة، أو 500)، يحاول Closer مرتين أخريين: بعد نحو 30 ثانية وبعد نحو 5 دقائق. لا تُتبع عمليات إعادة التوجيه، لذا استخدم العنوان النهائي.
يعرض سجل الإرسال آخر 50 طلبًا للموقع: الوقت، والحدث، والعنوان، ورقم المحاولة (1/3، 2/3، 3/3)، ورمز الحالة الذي رد به العنوان، والخطأ إن وُجد.
جداول بيانات Google
يصبح كل طلب جديد صفًا في جدول بيانات Google: التاريخ، الصفحة، الاسم، البريد الإلكتروني، ثم عمود لكل حقل آخر في النموذج (حسب تسميته). تحصل الحقول الجديدة على عمود جديد تلقائيًا. يعمل ذلك عبر برنامج Google Apps Script صغير تضيفه إلى جدول بياناتك، فلا يحتاج Closer أبدًا إلى الوصول إلى حسابك في Google.
الإعداد (نحو 3 دقائق)
- أنشئ جدول بيانات جديدًا في جداول بيانات Google (أسرع طريقة هي فتح
sheets.new). تذهب الطلبات إلى علامة التبويب الأولى فيه. - في جدول البيانات، افتح الإضافات → Apps Script (Extensions → Apps Script).
- احذف الشيفرة النموذجية في المحرر. في Closer، تحت جداول بيانات Google، انقر نسخ البرنامج النصي والصقه في محرر Apps Script. انقر حفظ (أيقونة القرص).
- انقر نشر → عملية نشر جديدة (Deploy → New deployment). انقر الترس بجانب اختيار النوع (Select type) واختر تطبيق ويب (Web app). اضبط:
- التنفيذ باسم (Execute as): أنا (Me)
- مَن يمكنه الوصول (Who has access): أي شخص (Anyone)
- انقر نشر (Deploy). يطلب منك Google تفويض البرنامج النصي: اختر حسابك. إذا رأيت «لم تتحقق Google من هذا التطبيق»، انقر الإعدادات المتقدمة → الانتقال إلى (مشروعك) (Advanced → Go to …) ثم السماح (Allow). إنه برنامجك النصي الخاص، يعمل في حسابك أنت.
- انسخ رابط تطبيق الويب (Web app URL). يبدو مثل
https://script.google.com/macros/s/…/exec. - في Closer، الصقه تحت رابط تطبيق الويب وانقر ربط. يرسل Closer صفًا تجريبيًا فورًا؛ تحقّق من ظهوره في الجدول (يمكنك حذفه).
استخدم إرسال صف تجريبي في أي وقت للتحقق من الاتصال. المفتاح يوقف جدول البيانات مؤقتًا، وزر سلة المهملات يفصله.
احتفظ برابط تطبيق الويب سرًّا: يمكن لأي شخص يملكه إضافة صفوف إلى ذلك الجدول. إذا تسرّب، أنشئ عملية نشر جديدة في Apps Script واربط الرابط الجديد.
معلومات مفيدة
- الطلبات وحدها تذهب إلى جدول البيانات. للمشتركين وطلبات الشراء استخدم ويب هوك (مثلًا إلى Zapier أو Make، اللذين يمكنهما أيضًا الكتابة في جداول بيانات Google).
- إذا غيّرت البرنامج النصي لاحقًا، استخدم نشر → إدارة عمليات النشر → تعديل → إصدار جديد (Deploy → Manage deployments → Edit → New version)، ليبقى الرابط كما هو.
- النص الذي يبدأ مثل صيغة (
=،+،-،@) يُكتب كنص عادي، فلا يمكن لإدخال في النموذج أن يشغّل صيغة في جدولك. - يُضاف كل صف لحظة وصول الطلب. تُعاد المحاولات الفاشلة كما في الويب هوك وتظهر في سجل الإرسال.
- الطلبات التي تتجاوز الحد الشهري لخطتك تُحفظ في صندوق الوارد لكنها لا تُرسل إلى التكاملات.
لم تجد إجابة؟
راسلنا وسنرد خلال يوم عمل واحد.