ويب هوكس الواردة
استقبل الأحداث من المنصات الخارجية ومنح البذور لعملائك تلقائيًا. تتيح لك الويب هوكس الواردة ربط أي أداة طرف ثالث - تطبيقات الاختبارات، النماذج، منصات المراجعة،
📥 الويب هوكس الواردة
استقبل الأحداث من المنصات الخارجية ومنح البذور لعملائك تلقائيًا. تتيح لك الويب هوكس الواردة ربط أي أداة خارجية — تطبيقات الاختبارات، النماذج، منصات المراجعة، Zapier، Make، والمزيد — ببرنامج ولاء LoyaltyTree الخاص بك.

كيف يعمل
يستخدم نظام الويب هوكس الواردة نموذج المصادر والرموز:
- إنشاء مصدر — يمثل المصدر منصة أو أداة خارجية (مثل "Typeform"، "Zapier"، "تطبيق الاختبار الخاص بي"). يحصل كل مصدر على عنوان URL فريد للويب هوك ومفتاح سري للأمان.
- إضافة رموز إلى المصدر — يحدد كل رمز إجراءً معينًا يمنح البذور (مثل "quiz_completed"، "form_submitted"، "birthday_claimed"). يمكنك تحديد عدد البذور التي يمنحها كل رمز، مع حدود اختيارية.
- إرسال طلبات POST — ترسل منصتك الخارجية طلب POST إلى عنوان URL للويب هوك مع الرمز ومعلومات العميل. يجد LoyaltyTree العميل أو ينشئه ويمنح البذور تلقائيًا.
المنصة الخارجية → POST إلى عنوان URL للويب هوك → LoyaltyTree يتحقق ويمنح البذور → تحديث رصيد العميل
البدء
الخطوة 1: إنشاء مصدر ويب هوك
انتقل إلى المتاجر → [متجرك] → التكاملات → الويب هوكس الواردة. انقر على + إضافة مصدر وأعطه اسمًا يصف المنصة الخارجية (مثل "اختبارات Typeform" أو "أتمتة Zapier").
عند إنشاء المصدر، ستتلقى:
- عنوان URL للويب هوك — النقطة التي سترسل إليها منصتك الخارجية الطلبات
- سر الويب هوك — مفتاح سري لتوقيع الطلبات (موصى به للأمان)

الخطوة 2: إضافة الرموز
يمثل كل رمز إجراءً معينًا تريد مكافأته. انقر على + إضافة رمز على المصدر الخاص بك لإنشاء واحد.
| الحقل | مطلوب | الوصف |
|---|---|---|
| الرمز | نعم | القيمة الدقيقة المرسلة في حمولة الويب هوك (مثل quiz_completed). يجب أن تتطابق مع ما ترسله منصتك الخارجية. |
| اسم العرض | نعم | اسم سهل الفهم يظهر في لوحة الإدارة وسجل المعاملات (مثل "الاختبار مكتمل"). |
| الوصف | لا | ملاحظة اختيارية لفريقك حول متى يتم استخدام هذا الرمز. |
| كمية البذور | نعم | عدد البذور التي سيتم منحها في كل مرة يتم فيها تفعيل هذا الرمز. الافتراضي هو 1. |
| الحد الأقصى للبذور/العميل | لا | الحد الأقصى من البذور التي يمكن أن يكسبها عميل واحد من هذا الرمز. اتركه فارغًا لعدم وجود حد. بمجرد أن يصل العميل إلى هذا الحد، ستعود مكالمات الويب هوك الإضافية لهم بنجاح ولكن ستمنح 0 بذور. |
| فترة الانتظار (ساعات) | لا | الحد الأدنى من الساعات بين الجوائز لنفس العميل على هذا الرمز. يمنع الإساءة عن طريق تحديد عدد المرات التي يمكن أن يكسب فيها العميل البذور. اتركه فارغًا لعدم وجود فترة انتظار. |
| مفعل | — | تبديل لتفعيل أو تعطيل هذا الرمز دون حذفه. الرموز المعطلة تعيد خطأ 403. |
الخطوة 3: تكوين منصتك الخارجية
قم بإعداد منصتك الخارجية (Zapier، Typeform، تطبيق مخصص، إلخ) لإرسال طلب POST إلى عنوان URL للويب هوك الخاص بك كلما حدث الإجراء. راجع قسم تنسيق الطلب أدناه للحصول على تنسيق الحمولة الدقيقة.
شرح الرموز والحدود
تعمل الرموز وحدودها معًا لتمنحك تحكمًا دقيقًا في كيفية منح البذور:
كمية البذور
يمتلك كل رمز كمية ثابتة من البذور. في كل مرة يتم فيها تفعيل الويب هوك بهذا الرمز، يتلقى العميل بالضبط هذا العدد من البذور. على سبيل المثال، إذا قمت بتعيين "quiz_completed" إلى 5 بذور، فإن كل مكالمة ويب هوك مؤهلة تمنح 5 بذور.
الحد الأقصى للبذور لكل عميل
يحدد هذا حدًا مدى الحياة لكل عميل لكل رمز. إنه إجمالي البذور التي يمكن أن يكسبها هذا العميل من هذا الرمز المحدد، وليس عدد المرات التي يمكنهم تفعيلها.
quiz_completed مع كمية البذور = 5 و الحد الأقصى للبذور/العميل = 15.
- الاختبار الأول المكتمل → +5 بذور (الإجمالي: 5) ✅
- الاختبار الثاني المكتمل → +5 بذور (الإجمالي: 10) ✅
- الاختبار الثالث المكتمل → +5 بذور (الإجمالي: 15) ✅
- الاختبار الرابع المكتمل → +0 بذور (تم الوصول إلى الحد) — تعود بنجاح ولكن لا تمنح بذور
فترة الانتظار (ساعات)
تحدد الحد الأدنى من الوقت الذي يجب الانتظار بين منح البذور لنفس العميل على نفس الرمز. يبدأ مؤقت فترة الانتظار من آخر جائزة ناجحة.
daily_visit مع كمية البذور = 2 و فترة الانتظار = 24 ساعة.
- الاثنين 10 صباحًا → +2 بذور ✅
- الاثنين 3 مساءً → +0 بذور (فترة الانتظار نشطة، حاول مرة أخرى بعد 19 ساعة)
- الثلاثاء 11 صباحًا → +2 بذور ✅
تنسيق الطلب
أرسل طلب POST إلى عنوان URL للويب هوك الخاص بك مع جسم JSON التالي:
{
"code": "your_code_here",
"customer": {
"email": "customer@example.com",
"shopify_customer_id": "12345",
"first_name": "Jane",
"last_name": "Smith"
},
"metadata": {
"quiz_score": 95,
"source_page": "spring-quiz"
}
}
| الحقل | مطلوب | الوصف |
|---|---|---|
code |
نعم | قيمة الرمز التي تتطابق مع واحدة من الرموز التي قمت بتكوينها (مثل quiz_completed) |
customer.email |
نعم* | عنوان البريد الإلكتروني للعميل. يستخدم للعثور على العميل أو إنشائه. مطلوب للعملاء الجدد. |
customer.shopify_customer_id |
لا* | معرف Shopify الخاص بالعميل. يمكن استخدامه بدلاً من البريد الإلكتروني لتحديد العملاء الحاليين. |
customer.first_name |
لا | الاسم الأول للعميل. يستخدم عند إنشاء عملاء جدد. |
customer.last_name |
لا | اسم العائلة للعميل. يستخدم عند إنشاء عملاء جدد. |
metadata |
لا | أي بيانات إضافية تريد تخزينها مع المعاملة (مثل درجات الاختبار، معلومات الصفحة). يتم تخزينها كـ JSON ومرئية في السجلات. |
* يجب أن يكون واحد على الأقل من البريد الإلكتروني أو معرف_shopify_customer مطلوبًا. البريد الإلكتروني مطلوب عندما لا يكون العميل موجودًا بالفعل في LoyaltyTree.
التحقق من توقيع HMAC (موصى به)
للتحقق من أن الطلبات تأتي حقًا من منصتك (وليس من شخص ما وجد عنوان URL للويب هوك الخاص بك)، قم بتوقيع طلباتك باستخدام HMAC-SHA256.
- خذ جسم الطلب JSON الخام كسلسلة
- أنشئ تجزئة HMAC-SHA256 باستخدام سر الويب هوك كمفتاح
- قم بتضمين التجزئة المشفرة بالهيكس في أحد الرؤوس المدعومة
رؤوس التوقيع المدعومة (يتحقق LoyaltyTree من كل هذه):
X-Webhook-SignatureX-Hub-Signature-256X-Signature
يمكن أن تكون قيمة التوقيع إما التجزئة المشفرة بالهيكس الخام أو مسبوقة بـ sha256= (يتم قبول كلا التنسيقين).
بديل: مصادقة الرمز العادي
إذا لم يكن توقيع HMAC ممكنًا في منصتك، يمكنك تمرير سر الويب هوك الخاص بك كرمز عادي في رأس X-Token. سيقارن LoyaltyTree مباشرة مع سرك.
مثال: التوقيع باستخدام Node.js
const crypto = require('crypto');
const payload = JSON.stringify({
code: 'quiz_completed',
customer: { email: 'jane@example.com' }
});
const signature = crypto
.createHmac('sha256', 'your_webhook_secret')
.update(payload)
.digest('hex');
fetch('https://loyaltytree.eco/webhooks/inbound/YOUR_SOURCE_ID', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Webhook-Signature': signature
},
body: payload
});
مثال: التوقيع باستخدام Python
import hmac, hashlib, json, requests
payload = json.dumps({
"code": "quiz_completed",
"customer": {"email": "jane@example.com"}
})
signature = hmac.new(
b'your_webhook_secret',
payload.encode('utf-8'),
hashlib.sha256
).hexdigest()
requests.post(
'https://loyaltytree.eco/webhooks/inbound/YOUR_SOURCE_ID',
headers={
'Content-Type': 'application/json',
'X-Webhook-Signature': signature
},
data=payload
)
مثال: استخدام cURL (للاختبار)
curl -X POST https://loyaltytree.eco/webhooks/inbound/YOUR_SOURCE_ID \
-H "Content-Type: application/json" \
-H "X-Token: your_webhook_secret" \
-d '{"code":"quiz_completed","customer":{"email":"jane@example.com"}}'
تنسيق الاستجابة
استجابة ناجحة (200)
{
"success": true,
"seeds_awarded": 5,
"transaction_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"customer_id": "f0e1d2c3-b4a5-6789-0123-456789abcdef"
}
ناجحة ولكن محدودة (200)
عندما تمنع فترة الانتظار أو الحد الأقصى للبذور الجائزة، لا تزال تحصل على استجابة 200 ولكن مع 0 بذور وتفسير:
{
"success": true,
"seeds_awarded": 0,
"message": "فترة الانتظار نشطة. حاول مرة أخرى بعد 18 ساعة."
}
// أو
{
"success": true,
"seeds_awarded": 0,
"message": "تم منح الحد الأقصى من البذور (15) بالفعل لهذا الرمز."
}
استجابات الأخطاء
| حالة HTTP | خطأ | المعنى |
|---|---|---|
| 400 | الحقل المطلوب مفقود: الرمز |
لم يتم تضمين حقل code في جسم الطلب |
| 400 | الحقل المطلوب مفقود: customer.email أو customer.shopify_customer_id |
لم يتم تقديم معرف العميل |
| 400 | رمز غير معروف: xyz |
الرمز المرسل لا يتطابق مع أي رموز تم تكوينها لهذا المصدر |
| 401 | توقيع الويب هوك أو الرمز غير صالح |
تجزئة HMAC أو الرمز لا تتطابق. تحقق من سر الويب هوك الخاص بك. |
| 403 | مصدر الويب هوك معطل |
تم تعطيل المصدر في لوحة الإدارة |
| 403 | الرمز معطل: xyz |
تم تعطيل الرمز المحدد |
| 404 | مصدر الويب هوك غير موجود |
معرف المصدر في عنوان URL غير موجود. تحقق من عنوان URL للويب هوك. |
أمثلة حالات الاستخدام
🧩 إكمال الاختبار
كافئ العملاء على إكمال اختبار على موقعك (مبني باستخدام Typeform، Google Forms، إلخ).
- الرمز:
quiz_completed - البذور: 10
- الحد الأقصى للبذور: 10 (مرة واحدة فقط)
- فترة الانتظار: لا شيء
📋 استجابة الاستطلاع
منح البذور عندما يكمل العميل استطلاع ما بعد الشراء.
- الرمز:
survey_completed - البذور: 5
- الحد الأقصى للبذور: 25 (حتى 5 استطلاعات)
- فترة الانتظار: 168 ساعة (مرة واحدة في الأسبوع)
🎂 مكافأة عيد الميلاد
منح البذور في عيد ميلاد العميل عبر منصة التسويق الخاصة بك.
- الرمز:
birthday_reward - البذور: 25
- الحد الأقصى للبذور: لا شيء (سنوي)
- فترة الانتظار: 8760 ساعة (365 يومًا)
📸 علامة Instagram
كافئ العملاء الذين يضعون علامة على علامتك التجارية على Instagram (تم التحقق منها عبر فريقك الاجتماعي أو الأداة).
- الرمز:
instagram_tag - البذور: 15
- الحد الأقصى للبذور: 60 (حتى 4 علامات)
- فترة الانتظار: 72 ساعة (مرة كل 3 أيام)
الاتصال بـ Zapier
Zapier هو واحد من أكثر الطرق شيوعًا لربط LoyaltyTree بمئات التطبيقات الأخرى. نحن نبني تكامل LoyaltyTree مخصص في متجر تطبيقات Zapier، مما سيجعل الإعداد أسهل بكثير — ابحث عنه في سوق Zapier.
نحن نضيف LoyaltyTree كتطبيق أصلي في Zapier. بمجرد توفره، ستتمكن من البحث عن "LoyaltyTree" في دليل تطبيقات Zapier وربطه مباشرة — لا حاجة لتكوين ويب هوك. تابعونا!
في هذه الأثناء، يمكنك استخدام إجراء Webhooks by Zapier للاتصال الآن:
- إنشاء Zap مع الزناد المطلوب (مثل "استجابة جديدة من Typeform")
- إضافة خطوة إجراء: Webhooks by Zapier → POST
- تعيين عنوان URL إلى عنوان URL للويب هوك الوارد الخاص بـ LoyaltyTree
- تعيين نوع الحمولة إلى JSON
- تعيين الحقول:
code→ قيمة الرمز الخاصة بك (مثل "quiz_completed")customer.email→ البريد الإلكتروني للمستجيب من الزناد
- تحت الرؤوس، أضف
X-Tokenمع قيمة سر الويب هوك الخاصة بك - اختبر وقم بتمكين Zap الخاص بك
الاتصال بـ Make (Integromat)
يمكنك أيضًا استخدام وحدة HTTP / إجراء طلب من Make لإرسال الويب هوكس إلى LoyaltyTree. قم بتكوينها بنفس طريقة Zapier — قم بتعيين عنوان URL، أضف جسم JSON مع code و customer، وأدخل سرك في رأس X-Token.
سجلات الويب هوك
يتم تسجيل كل مكالمة ويب هوك واردة ومرئية في قسم الويب هوكس الواردة في صفحة التكاملات الخاصة بك. تظهر السجلات:
- الطابع الزمني – متى تم استلام الويب هوك
- المصدر – أي مصدر استقبله
- الحالة – نجاح أو فشل
- التفاصيل – الرمز المستخدم، البذور الممنوحة، أو رسالة الخطأ
- الحمولة – جسم الطلب الكامل (مشفر أثناء الراحة)
استخدم السجلات للتحقق من أن تكامل الخاص بك يعمل بشكل صحيح ولتشخيص أي مشاكل.
استكشاف الأخطاء وإصلاحها
الحصول على 401 "توقيع الويب هوك غير صالح"
- تأكد من أنك تقوم بتوقيع نص جسم JSON الدقيق الذي ترسله (لا توجد مسافات إضافية أو إعادة تنسيق)
- تحقق من أنك تستخدم سر الويب هوك الصحيح (يمكنك الكشف عنه في لوحة الإدارة)
- إذا لم يكن توقيع HMAC ممكنًا، استخدم رأس
X-Tokenمع سرك كقيمة عادية - يمكنك إعادة توليد السر من إعدادات المصدر إذا لزم الأمر
الحصول على 400 "رمز غير معروف"
- يجب أن تتطابق قيمة
codeفي طلبك بالضبط مع رمز قمت بتكوينه في لوحة الإدارة - الرموز حساسة لحالة الأحرف:
Quiz_Completedتختلف عنquiz_completed - تحقق من أن الرمز مفعل (ليس معطلًا)
البذور الممنوحة هي 0
- تحقق مما إذا كان العميل قد وصل إلى حد البذور الأقصى/العميل لهذا الرمز
- تحقق مما إذا كانت فترة الانتظار لا تزال نشطة — ستخبرك رسالة الاستجابة بعدد الساعات التي يجب الانتظار
- كلاهما يعود HTTP 200 مع
seeds_awarded: 0وتفسير في حقلmessage
عدم إنشاء العميل
- يتطلب العملاء الجدد عنوان بريد إلكتروني. إذا كنت ترسل فقط
shopify_customer_id، يجب أن يكون العميل موجودًا بالفعل في LoyaltyTree. - إذا تم تقديم كل من البريد الإلكتروني ومعرف Shopify، يبحث LoyaltyTree أولاً بواسطة البريد الإلكتروني، ثم بواسطة معرف Shopify، وينشئ عميلًا جديدًا فقط إذا لم يتطابق أي منهما.
الأمان
- يحصل كل مصدر على سر ويب هوك فريد مكون من 64 حرفًا، يتم إنشاؤه تلقائيًا ومشفّر أثناء الراحة
- يمكن إعادة توليد الأسرار في أي وقت من إعدادات المصدر (يتوقف السر القديم عن العمل على الفور)
- تكون حمولة الطلبات مشفرّة في السجلات من أجل الخصوصية
- يستخدم التحقق من التوقيع مقارنة آمنة من حيث التوقيت لمنع هجمات التوقيت
- يمكن تعطيل المصادر والرموز بشكل فردي دون حذفها