Webhook هو إشعار يرسله Glanevo إلى عنوانك عند حدوث شيء. **التسجيل.** الإعدادات → المطوّرون → Webhooks → + جديد: - URL (HTTPS مطلوب) - أنواع الأحداث (اختر عدة) - Secret (للتحقق من التوقيع) **أنواع الأحداث.** - `appointment.created` و`appointment.updated` و`appointment.cancelled` و`appointment.no_show` - `customer.created` و`customer.updated` - `payment.succeeded` و`payment.failed` و`payment.refunded` - `invoice.created` و`invoice.paid` - `staff.created` **مثال على الحمولة (`appointment.created`):** ```json { "id": "evt_01HX...", "type": "appointment.created", "createdAt": "2026-05-21T10:30:00Z", "data": { "appointment": { "id": "apt_01HY...", "customerId": "cus_...", "serviceId": "svc_...", "startAt": "2026-05-22T14:00:00Z", "endAt": "2026-05-22T15:30:00Z", "price": 450 } } } ``` **تحقق من التوقيع.** كل طلب يحمل ترويسة `X-Glanevo-Signature`، موقّعة بـ HMAC-SHA256. ```js const crypto = require('crypto'); const expected = crypto .createHmac('sha256', WEBHOOK_SECRET) .update(rawBody) .digest('hex'); if (req.headers['x-glanevo-signature'] !== expected) { return res.status(401).end(); } ``` **إعادة المحاولة.** إن لم تُرجع 2xx، نعيد المحاولة خمس مرات بتأخير تصاعدي (دقيقتان، 5 دقائق، 20 دقيقة، ساعة، 6 ساعات). 📊 سجل Webhook: الإعدادات → المطوّرون → السجلات.