زاجلي
زاجلي

التواصل متعدد القنوات

Zagaly logo
زاجلي
زاجلي
Toggle sidebar

التوثيقات

مرحباً بك في توثيق زاجلي

كل ما تحتاجه لربط موقعك أو تطبيقك بقنوات الإشعارات القوية من زاجلي. اختر قناة من الشريط الجانبي للانتقال إليها مباشرة.

ابدأ العمل في 5 خطوات

اتبع هذا الدليل للانتقال من التسجيل إلى إرسال حملتك الأولى.

1

اختر خطة

اختر اشتراكاً يناسب حجم فريقك وحجم الرسائل. يمكنك ترقية أو تغيير الخطط في أي وقت.

عرض الخطط →
2

اربط قناة

Click any channel in the sidebar (WhatsApp, Telegram, Email, Web Push…). Each channel opens a dedicated hub with six tabs: Integration, Contacts, Campaigns, Templates, Automations, and Reports. Start on the Integration tab to connect your account.

دليل واتساب →
3

Import Your Contacts

Inside the channel hub, click the Contacts tab. Import contacts via CSV or add them manually. Tag and segment them for targeted campaigns.

دليل جهات الاتصال →
4

أنشئ قالب رسالة

Open the Templates tab inside any channel. Build reusable messages with dynamic variables like <?php echo e(name); ?> or <?php echo e(phone); ?> to personalize bulk sends. Templates can be cloned to other channels with one click.

Templates Guide →
5

أرسل حملتك الأولى

Go to the Campaigns tab in any channel hub and click New Campaign. Select your audience, pick a template, and send immediately or schedule for later. Track delivery and read rates in the Reports tab.

دليل الحملات →

Channel-First Navigation

Every channel in the sidebar is a self-contained hub. Inside each hub you find six tabs — Integration, Contacts, Campaigns, Templates, Automations, and Reports — all scoped to that channel. Global views (all channels combined) are still available from the top-level sidebar items.

القنوات المدعومة

اضغط على أي قناة للانتقال إلى دليل إعدادها التفصيلي.

واتساب

Channel

اربط حساب واتساب الخاص بك لإرسال واستقبال الرسائل مباشرة من لوحة التحكم.

تتيح لك قناة واتساب ربط رقم واتساب شخصي أو للأعمال بحسابك. وبعد الاتصال، يمكنك إرسال الرسائل إلى قائمة المشتركين لديك، وأتمتة الردود، وإدارة المحادثات من صندوق وارد موحد.

المتطلبات المسبقة

  • حساب واتساب شخصي أو للأعمال على هاتفك
  • يجب أن يكون هاتفك متصلاً بالإنترنت أثناء إعداد الجلسة
  • خطة تتضمن الوصول إلى قناة واتساب

قريبًا

نحن نقوم بترقية واتساب إلى التجربة الرسمية. الاتصالات الجديدة بواتساب غير متاحة مؤقتًا أثناء الإطلاق — أما الأرقام المتصلة حاليًا فتستمر بالعمل كالمعتاد.

نصيحة احترافية

استخدم رقم هاتف مخصصاً لواتساب الأعمال. إن مزج المحادثات الشخصية والتجارية على الرقم نفسه قد يسبب ارتباكاً وقد يعرّض حسابك الشخصي للخطر.

تكامل واتساب قادم قريبًا

افتح قناة واتساب لإدارة الرسائل والمحادثات من لوحة التحكم.

افتح قناة واتساب

تيليجرام

Channel

اربط بوت تيليجرام لإرسال رسائل مؤتمتة ومعالجة الردود عبر Telegram API.

يتم إنشاء وإدارة بوتات تيليجرام عبر البوت الرسمي BotFather. يستغرق إنشاء البوت أقل من دقيقتين ويمنحك رمزاً تقوم بلصقه في لوحة التحكم لتفعيل القناة.

المتطلبات المسبقة

  • حساب تيليجرام
  • خطة تتضمن الوصول إلى قناة تيليجرام
1

أنشئ بوتاً عبر BotFather

افتح تيليجرام وابحث عن @BotFather. Start a conversation and send the command:

bash
/newbot

سيطلب BotFather اسماً ظاهراً ثم اسم مستخدم يجب أن ينتهي بـ bot, e.g. MyCompanyBot).

2

انسخ رمز البوت الخاص بك

سيرد BotFather بالرمز الخاص بك. سيكون شكله مثل:

text
123456789:ABCdefGHIjklMNOpqrsTUVwxyz

Keep this token safe — anyone with it can control your bot.

3

Connect in Dashboard

انقر على تيليجرام in the sidebar, open the Integration tab, click Connect New Bot, paste the token, and click اتصال. يتم تسجيل Webhook تلقائياً.

4

ادعُ جهات الاتصال لبدء البوت

Telegram bots cannot send messages first — contacts must initiate a conversation by clicking your bot link and sending /start. After connecting, your bot card shows the link and a downloadable QR code you can share with contacts:

text
https://t.me/YourBotUsername
5

Contact is Linked Automatically

عندما يضغط أحد جهات الاتصال على الرابط ويرسل /start, يلتقط النظام معرّف تيليجرام الخاص به ويربطه بسجل جهة الاتصال. وبعدها يصبح قابلاً للوصول عبر تيليجرام.

لا يمكن لبوتات تيليجرام بدء المحادثات

على عكس الرسائل النصية أو واتساب، لا يمكن لبوتات تيليجرام الرد إلا على المستخدمين الذين بدؤوا البوت بالفعل. تأكد من مشاركة رابط البوت مع جهات الاتصال قبل إرسال أي رسائل تيليجرام إليهم.

هل أنت جاهز لربط تيليجرام؟

ألصق رمز BotFather في قناة تيليجرام لتفعيلها.

افتح قناة تيليجرام

فيسبوك ماسنجر

Channel

اربط صفحة فيسبوك لإرسال واستقبال الرسائل عبر Facebook Messenger.

يربط تكامل ماسنجر صفحة فيسبوك الخاصة بك حتى يتمكن العملاء من مراسلتك على فيسبوك وترد عليهم من لوحة التحكم. يتم الاتصال عبر OAuth ولا يتطلب App Review للمراسلة الأساسية باستخدام Page Access Token.

نافذة المراسلة لمدة 24 ساعة

يسمح فيسبوك بمراسلة المستخدم فقط خلال 24 ساعة من آخر رسالة منه. وبعد انتهاء هذه النافذة، ستحتاج إلى Message Tag مثل تحديثات ما بعد الشراء أو تذكيرات الفعاليات المؤكدة لإرسال رسائل المتابعة.

المتطلبات المسبقة

  • حساب فيسبوك
  • صلاحية مدير على صفحة فيسبوك
  • خطة تتضمن الوصول إلى قناة ماسنجر
1

Open the Messenger Channel

Click Messenger in the sidebar and open the Integration tab.

2

Connect Your Facebook Page

Click Connect Facebook Page. You'll be redirected to Facebook to authorize access.

3

Authorize and Select Page

Log in with your Facebook account, grant the required permissions, and select the Page you want to connect.

4

تم تسجيل الـ Webhook

After authorization the platform automatically registers a webhook with Facebook. Your Messenger channel is now live and ready to receive messages.

هل أنت جاهز لربط ماسنجر؟

فوّض صفحة فيسبوك الخاصة بك وابدأ التحدث مع المشتركين.

افتح قناة ماسنجر

فايبر

Channel

اربط خدمة Viber أو البوت لإرسال الرسائل والصور إلى مشتركي فايبر.

يتم إنشاء بوتات فايبر عبر بوابة Viber for Business. واعتباراً من عام 2024، يتطلب فايبر عملية تحقق وموافقة تجارية قبل إصدار Auth Token، ولم تعد خدمة إنشاء البوتات الفورية الذاتية متاحة.

الموافقة التجارية مطلوبة

Viber no longer offers free self-service bot creation. You must apply for a Viber Business account and go through their approval process before receiving an Auth Token. This channel is best suited for businesses already operating in Viber-heavy markets (Eastern Europe, Middle East, Southeast Asia).

المتطلبات المسبقة

  • نشاط تجاري مسجل مع حساب Viber for Business
  • حساب خدمة Viber معتمد ويتطلب التحقق التجاري من فايبر
  • خطة تتضمن الوصول إلى قناة فايبر
1

قدّم على حساب Viber Business

Visit viber.com/en/business وقدّم طلباً للحصول على حساب Viber for Business. سيقوم فايبر بمراجعة طلبك والتواصل معك. وقد تستغرق هذه العملية عدة أيام إلى أسابيع.

2

أنشئ حساب خدمة واحصل على Auth Token

بعد الموافقة، سجّل الدخول إلى بوابة شركاء فايبر وأنشئ حساب خدمة وانسخ Auth Token الخاص بك. سيكون شكله مثل:

text
4bxxxxxxxxx8a8d-xxxxxxxx-xxxxxxxxxxxx
3

Connect in Dashboard

انقر على فايبر in the sidebar, open the Integration tab, click ربط البوت, paste your Auth Token, and click اتصال. يتم إعداد Webhook تلقائياً.

هل أنت جاهز لربط فايبر؟

ألصق Viber Auth Token لبدء مراسلة المشتركين.

افتح قناة فايبر
إشعارات الويب
Channel

أرسل إشعارات فورية عبر المتصفح إلى مشتركيك على أي موقع أو تطبيق.

الخطوة 1 — مطلوب: تحميل /sw.js إلى نطاقك
مطلوب
المتصفحات لا تسمح بتحميل Service Workers من نطاق مختلف. قبل أي شيء آخر، أنشئ ملفاً بسطر واحد في https://YOUR-DOMAIN/sw.js بهذا السطر الواحد: importScripts('https://zagely.com/push/sw.js'); بدون هذا الملف، سيظهر أن النافذة المنبثقة يتم تحميلها ولكنها ستفشل بصمت على متصفحات زوارك. راجع قسم "عامل الخدمة" أدناه للرؤوس والنطاق.
ما هي إشعارات الويب؟

تتيح لك إشعارات الويب إرسال تنبيهات فورية مباشرة إلى متصفح المشترك، حتى عندما لا يكون على موقعك. يوافق المستخدم مرة واحدة ويمكنك الوصول إليه كلما كان لديك شيء مهم لمشاركته.

توافق المتصفحات
المتصفح
الحاسوب المكتبي
أندرويد
iOS / Safari
Chrome
N/A
Firefox
N/A
Edge
N/A
Safari
v16.4+
Opera
N/A

iOS / iPadOS note: Safari 16.4+ supports Web Push only when the visitor adds your site to the Home Screen first (PWA install). In a normal Safari tab the permission prompt is silently denied. Our popup script detects this and emits a zagely:ios-install-required event so you can show your own “Add to Home Screen” banner.

أي خيار ينبغي أن أختار؟

اختر سكربتاً واحداً فقط. كل واحد يُسجّل نفس Service Worker ويُوفّر نفس zagelPush الواجهة البرمجية API، ولا يمكنك تضمين الاثنين في الوقت نفسه.

الخيارات
الخيار
السكربت
هل يعرض نافذة منبثقة؟
زر مخصص؟
هل JavaScript مطلوب؟
A
prompt.js
لا
موصى به: نافذة منبثقة مدمجة دون أي JavaScript من جهتك. ويمكنك أيضاً إضافة زر خاص بك عبر استدعاء zagelPush.subscribe().
B
loader.js
نعم
لا نافذة منبثقة إطلاقاً — أنت تكتب الزر وتصمّمه بـ JavaScript عادي.
C
button.js
لا
لا نافذة منبثقة ولا JavaScript. فقط أضف data attribute إلى أي عنصر وسيتم عرض الزر تلقائياً.
الخيار A — نافذة منبثقة مدمجة
موصى به

الإعداد الأسهل. أضف سكربت واحداً إلى موقعك وستظهر نافذة اشتراك جميلة تلقائياً بعد ثوانٍ قليلة. لا يتطلب أي JavaScript من جهتك.

ابقَ على اطلاع 🔔

فعّل الإشعارات حتى لا يفوتك آخر تحديثاتنا.

اسمح بالإشعارات
ربما لاحقاً
1

انسخ مفتاح Push Site Key الخاص بك

اذهب إلى Web Push ← Push Site Key في لوحة التحكم. هذا المفتاح آمن لتضمينه علناً.

2

أضف وسم السكربت

ألصقه قبل وسم الإغلاق </body> الوسم في كل صفحة:

html
<!-- English (default) -->
<script src="https://zagely.com/push/prompt.js?site=YOUR_PUSH_SITE_KEY" async></script>

<!-- Arabic (adds RTL layout automatically) -->
<script src="https://zagely.com/push/prompt.js?site=YOUR_PUSH_SITE_KEY&lang=ar" async></script>
تريد زراً مخصصاً بجانب النافذة المنبثقة؟ لا حاجة إلى سكربت إضافي. بما أن prompt.js يوفر بالفعل window.zagelPush, يمكنك استدعاء zagelPush.subscribe() من أي عنصر دون تحميل loader.js.
html
<!-- prompt.js already exposes window.zagelPush — no loader.js needed -->
<script src="https://zagely.com/push/prompt.js?site=YOUR_PUSH_SITE_KEY" async></script>

<!-- Your own button can sit anywhere alongside the popup -->
<button onclick="zagelPush.subscribe()">🔔 Subscribe</button>
الخيار B — تشغيل يدوي عبر زر مخصص

استخدم هذا الخيار عندما لا تريد أي نافذة منبثقة إطلاقاً. زرّك وتنسيقك وأسلوبك أنت. قم بتحميل loader.js واستدع zagelPush.subscribe() عند النقر على الزر الخاص بك.

تستخدم بالفعل الخيار A (prompt.js)؟ تجاوز loader.js تماماً — prompt.js يوفر بالفعل نفس zagelPush API. تضمين السكربتين معاً في نفس الصفحة سيسبب تعارضات.
html
<!-- 1. Include loader.js (headless API only — no popup, for custom UI) -->
<script src="https://zagely.com/push/loader.js?site=YOUR_PUSH_SITE_KEY" async></script>

<!-- 2. Your own subscribe button -->
<button id="sub-btn">🔔 Subscribe for updates</button>

<script>
  document.getElementById('sub-btn').addEventListener('click', function () {
    zagelPush.subscribe()
      .then(function () { alert('Subscribed!'); })
      .catch(function (err) { console.error(err); });
  });
</script>
الخيار C — زر عبر shortcode
لا حاجة إلى JavaScript

الطريقة الأسرع لإضافة زر اشتراك دون كتابة أي JavaScript. قم بتضمين button.js مرة واحدة وأضف data-zagely-push-button على أي عنصر. سيعرض السكربت تلقائياً زر تبديل مُصمّماً ينتقل بين "اشترك" و"إلغاء الاشتراك" — لا نافذة منبثقة ولا JS مخصص.

اشترك في التحديثات إلغاء الاشتراك

يتبدّل الزر تلقائياً حسب حالة اشتراك الزائر الحالية.

1

قم بتضمين button.js مع Push Site Key الخاص بك

أضف وسم السكربت وضع العنصر الدلالي أينما يجب أن يظهر الزر:

html
<!-- 1. Include button.js once with your Push Site Key -->
<script src="https://zagely.com/push/button.js?site=YOUR_PUSH_SITE_KEY" async></script>

<!-- 2. Place this element wherever you want the button rendered -->
<div data-zagely-push-button></div>
2

خصّص باستخدام سمات البيانات (data attributes) (اختياري)

html
<!-- All data attributes are optional -->
<div data-zagely-push-button
     data-subscribe-text="Get notified"
     data-unsubscribe-text="Turn off alerts"
     data-color="#16a34a"
     data-size="lg"
     data-lang="en"
     data-icon="1"></div>
مرجع سمات البيانات
السمة
الافتراضي
الوصف
data-subscribe-text "Subscribe for updates" النص المعروض عندما لا يكون الزائر مشتركاً بعد
data-unsubscribe-text "Unsubscribe" النص المعروض عندما يكون الزائر مشتركاً بالفعل
data-loading-text "Loading…" النص المعروض أثناء التحقق من حالة الاشتراك
data-color "#6366f1" لون الخلفية بصيغة hex لحالة الاشتراك (غير مشترك)
data-size "md" "sm" | "md" | "lg" — يتحكم في الحشو وحجم الخط والأيقونة
data-lang "en" "en" | "ar" — يُكتشف تلقائياً من html[lang]؛ يلغي النصوص الافتراضية واتجاه النص
data-icon "1" اضبطه على "0" لإخفاء أيقونة الجرس

دوال استدعاء دورة الحياة (Lifecycle Callbacks) (اختياري)

عيّن window.ZagelyPushButtonConfig قبل button.js وسم السكربت:

html
<script>
  window.ZagelyPushButtonConfig = {
    onSubscribe:   function (data) { console.log('Subscribed!', data); },
    onUnsubscribe: function ()     { console.log('Unsubscribed.'); },
    onError:       function (err)  { console.error('Error:', err); },
  };
</script>
<script src="https://zagely.com/push/button.js?site=YOUR_PUSH_SITE_KEY" async></script>
يمكنك وضع عدة data-zagely-push-button عناصر في نفس الصفحة — الرأس، التذييل، الشريط الجانبي — كلها تبقى متزامنة مع حالة اشتراك الزائر.
تخصيص النافذة المنبثقة

عيّن window.ZagelyPushConfig في <script> كتلة قبل وسم prompt.js:

html
<script>
  window.ZagelyPushConfig = {
    // ── Content ────────────────────────────────────────────
    title:           'Never miss an update! 🔔',
    message:         'Subscribe for instant alerts.',
    icon:            '/images/my-logo.png',   // null = built-in bell SVG
    allowText:       'Yes, notify me',
    denyText:        'No thanks',

    // ── Layout ─────────────────────────────────────────────
    position:        'bottom-right',
    // bottom-right | bottom-left | bottom-center | center | top-center

    // ── Timing ─────────────────────────────────────────────
    delay:           5000,           // ms before popup appears (default: 3000)
    remindAfterDays: 14,             // re-show X days after a dismiss (default: 7)

    // ── Appearance ─────────────────────────────────────────
    theme:           'auto',         // 'light' | 'dark' | 'auto'
    primaryColor:    '#f97316',      // any hex color for buttons & icon accent

    // ── Callbacks ──────────────────────────────────────────
    onSubscribe: function(data) { console.log('Subscribed!', data); },
    onDeny:      function()     { console.log('Dismissed.'); },
    onError:     function(err)  { console.error('Error:', err); },

    // ── Language ───────────────────────────────────────────
    // Overrides the ?lang= URL param and html[lang] auto-detection.
    // lang: 'ar',                // 'en' (default) | 'ar'
  };
</script>
<script src="https://zagely.com/push/prompt.js?site=YOUR_PUSH_SITE_KEY" async></script>
جميع خيارات الإعداد
الخيار
النوع
الافتراضي
الوصف
title
string
"Stay in the loop 🔔" Popup headline text
message
string
"Turn on notifications…" Body text below the title
icon
string
null URL to custom icon image (null = built-in bell)
allowText
string
"Allow Notifications" Primary CTA button label
denyText
string
"Maybe later" Dismiss button label
position
string
"bottom-right" Popup position on screen
delay
number
3000 Milliseconds before the popup is shown
theme
string
"auto" Color scheme: light | dark | auto
primaryColor
string
"#6366f1" Accent hex color for button & icon
remindAfterDays
number
7 Days before re-prompting after a dismiss
onSubscribe
function
null Callback when user successfully subscribes
onDeny
function
null Callback when user dismisses
onError
function
null Callback on error
مرجع واجهة JavaScript البرمجية

كلاهما prompt.js (موصى به) و loader.js (بلا واجهة، لواجهة مخصصة) يوفّران zagelPush عاماً بعد التهيئة.

zagelPush.init()
→ Promise<boolean>

Manually initialize (fetches VAPID key + registers SW). Called automatically on DOM ready.

js
zagelPush.init().then(function(ok) {
  console.log('Push ready:', ok);
});
zagelPush.subscribe()
→ Promise<object>

Shows the browser permission prompt then subscribes. Resolves with subscription data.

js
document.getElementById('my-btn').addEventListener('click', function() {
  zagelPush.subscribe()
    .then(function()    { alert('Subscribed!'); })
    .catch(function(err) { console.error(err); });
});
zagelPush.unsubscribe()
→ Promise<object>

Unsubscribes the current browser from push notifications.

js
zagelPush.unsubscribe().then(function() {
  console.log('Unsubscribed.');
});
zagelPush.isSubscribed()
→ Promise<boolean>

Check whether the current browser is already subscribed.

js
zagelPush.isSubscribed().then(function(subscribed) {
  document.getElementById('btn').textContent =
    subscribed ? 'Unsubscribe' : 'Subscribe';
});
zagelPush.siteKey
→ string

The Push Site Key extracted from the script src attribute.

js
console.log('Site key:', zagelPush.siteKey);
Service Worker Relay
مطلوب
يجب أن يُقدَّم Service Workers من نفس أصل (origin) موقعك. إذا كان موقعك هو https://myblog.com, أنشئ ملف الترحيل أدناه في جذر نطاقك الخاص.

ارفع ملف ترحيل بسطر واحد: https://myblog.com/sw.js

js
// sw.js — save this at the ROOT of YOUR domain (e.g. https://myblog.com/sw.js)
importScripts('https://zagely.com/push/sw.js');
رؤوس استجابة مطلوبة لـ /sw.js
الرأس (Header)
القيمة
لماذا زاجلي
Content-Type application/javascript بعض شبكات CDN تقدّمه كـ text/plain وترفضه المتصفحات.
Cache-Control no-cache, no-store, must-revalidate يضمن التقاط تحديثات SW المستقبلية فوراً.
Service-Worker-Allowed / مطلوب فقط إذا لم يكن الترحيل في جذر النطاق (مثلاً /assets/sw.js).
مستخدمو Cloudflare / CDN: أضف قاعدة تخزين مؤقت (Cache Rule) لتجاوز التخزين المؤقت لـ /sw.js حتى تصل إصدارات Service Worker الجديدة إلى زوارك.
مسار ترحيل غير جذري (مثلاً /assets/sw.js)؟

بشكل افتراضي، تقيد المتصفحات نطاق (scope) Service Worker على دليله الخاص. ملف ترحيل في /push/sw.js يمكنه التحكم فقط في الصفحات تحت /push/* — أي أن الصفحات في /, /about, لن تتلقى إشعارات الدفع.

الحل: اضبط رأس Service-Worker-Allowed: / عند تقديم ملف الترحيل. هذا يسمح للـ worker بالتحكم في جميع الصفحات من الجذر.

عرض أمثلة إعداد الخادم

Nginx:

nginx
location = /push/sw.js {
    add_header Service-Worker-Allowed /;
    add_header Content-Type application/javascript;
    add_header Cache-Control "no-cache, no-store";
    # your proxy or static file serving here
}

Apache (.htaccess):

apache
<Files "sw.js">
    Header set Service-Worker-Allowed "/"
    Header set Content-Type "application/javascript"
    Header set Cache-Control "no-cache, no-store"
</Files>
أمثلة المنصات
html
<!-- Optional: customize before loading -->
<script>
  window.ZagelyPushConfig = {
    title:        'Stay Updated!',
    primaryColor: '#16a34a',
    position:     'bottom-right',
  };
</script>

<!-- Drop-in popup prompt -->
<script src="https://zagely.com/push/prompt.js?site=YOUR_PUSH_SITE_KEY" async></script>

احفظ مفتاح الموقع في config/services.php وقم بتضمين Blade partial في التخطيط الخاص بك. لا تنسَ رفع /public/sw.js أيضاً.

blade
{{-- resources/views/layouts/partials/zagely-push.blade.php --}}
@if (config('services.zagely.push_key'))
    <script>
      window.ZagelyPushConfig = {
        title:        '{{ __('Stay in the loop') }} 🔔',
        theme:        'auto',
        primaryColor: '#6366f1',
        delay:        4000,
      };
    </script>
    <script
        src="https://zagely.com/push/prompt.js?site={{ config('services.zagely.push_key') }}&lang={{ app()->getLocale() }}"
        async></script>
@endif

الملفات الداعمة:

php
// .env
ZAGELY_PUSH_KEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

// config/services.php
'zagely' => [
    'push_key' => env('ZAGELY_PUSH_KEY'),
],

// Include the partial in your main layout:
// @include('layouts.partials.zagely-push')

// public/sw.js  — REQUIRED one-line relay:
importScripts('https://zagely.com/push/sw.js');
تستخدم spatie/laravel-csp؟ اسمح بـ script-src https://zagely.com, connect-src https://zagely.com, و worker-src 'self'.

أضف إلى functions.php:

php
<?php
add_action('wp_footer', function () {
    echo '<script>
      window.ZagelyPushConfig = {
        title:           \'Stay in the loop!\',
        message:         \'Subscribe for the latest posts.\',
        primaryColor:    \'#2563eb\',
        remindAfterDays: 14,
      };
    </script>';
    echo '<script src="https://zagely.com/push/prompt.js?site=YOUR_PUSH_SITE_KEY" async></script>';
});
ارفع أيضاً sw.js إلى جذر WordPress — راجع قسم Service Worker أعلاه.

أنشئ مكوّناً للعميل في Next.js App Router:

jsx
'use client';
import { useEffect } from 'react';

export default function ZagelyPushInit() {
  useEffect(() => {
    window.ZagelyPushConfig = {
      title:        "Don't miss a thing!",
      primaryColor: '#7c3aed',
      delay:        4000,
    };
    const s = document.createElement('script');
    s.src   = 'https://zagely.com/push/prompt.js?site=YOUR_PUSH_SITE_KEY';
    s.async = true;
    document.body.appendChild(s);
    return () => document.body.removeChild(s);
  }, []);
  return null;
}
// In your root layout.tsx: <ZagelyPushInit />
ضع ملف Service Worker relay في public/sw.js حتى يقدّمه Next.js في /sw.js على نطاقك. تغييرات المسارات في SPA لن تعيد تشغيل النافذة — قم بتثبيت المكون مرة واحدة في app/layout.tsx.

أنشئ إضافة عميل في Nuxt 3: plugins/zagely-push.client.js

js
// plugins/zagely-push.client.js  (Nuxt 3)
export default defineNuxtPlugin(() => {
  window.ZagelyPushConfig = {
    title:        'Subscribe for updates',
    primaryColor: '#059669',
    position:     'bottom-right',
  };
  const s    = document.createElement('script');
  s.src      = 'https://zagely.com/push/prompt.js?site=YOUR_PUSH_SITE_KEY';
  s.async    = true;
  document.body.appendChild(s);
});
تحقّق من التثبيت

بعد تحميل الصفحة، افتح DevTools على موقعك وشغّل المقطع البرمجي أدناه. سيطبع جدولاً من الفحوصات حتى تتمكن بسرعة من اكتشاف ترحيل مفقود، أو مفتاح موقع خاطئ، أو إذن محظور.

js
// Paste in DevTools → Console on your page. Shows a table of health checks.
(async () => {
  if (!window.zagelPush) { console.warn('zagelPush not loaded'); return; }
  const report = await window.zagelPush.diagnose();
  console.table(report);

  // Optional: confirm the server sees your subscribers
  try {
    const r = await fetch('https://zagely.com/api/push/health/YOUR_PUSH_SITE_KEY');
    const data = await r.json();
    console.log('Server health:', data);
  } catch (e) { console.warn('Health probe failed:', e); }
})();
قائمة فحص يدوية سريعة:
  1. DevTools ← Application ← Service Workers يعرض worker على نطاقك أنت بنطاق (scope) /.
  2. Notification.permission في وحدة التحكم (console) يُرجع "granted" بعد قبول النافذة المنبثقة.
  3. Web Push in the sidebar lists your new subscriber within a few seconds.
  4. أرسل إشعار تجريبي من لوحة التحكم وتأكد من وصوله إلى الجهاز.
استكشاف الأخطاء

إذا نقر المستخدم "حظر"، لن يعرض المتصفح نافذة الإذن مرة أخرى. وجّهه لإعادة ضبط الإشعارات في إعدادات الموقع في متصفحه.

iOS and iPadOS support Web Push only from Safari 16.4+, AND only after the visitor adds your site to the Home Screen (PWA install). In a normal Safari tab the browser silently denies the permission — this is an Apple restriction, not a bug. The popup script detects this and emits a zagely:ios-install-required window event so you can show your own “Add to Home Screen” banner for iOS visitors. Once the site is launched from the Home Screen icon, push notifications work exactly like on desktop.

أعد تحميل الصفحة إجبارياً، أو افتح DevTools ← Application ← Service Workers وانقر Update. مسح ذاكرة التخزين المؤقت للموقع يساعد أيضاً.

إشعارات الويب تعمل فقط على المواقع المُقدَّمة عبر HTTPS. Localhost مستثنى للتطوير والاختبار المحلي.

تحقق من إعدادات الإشعارات في نظام التشغيل — تأكد من أن المتصفح لديه إذن لعرض الإشعارات وأن وضع "عدم الإزعاج" (Focus mode على macOS) مُغلق.

رموز الدفع (push tokens) في المتصفحات تتجدّد تلقائياً (مثلاً بعد تحديثات المتصفح). Service Worker لدينا يكتشف ذلك ويُعيد اشتراك الجهاز بصمت — لا حاجة لإجراء من جانبك.

Append ?zp_reset=1 to the page URL to clear the local “already prompted” flag AND unsubscribe the current browser subscription, so the popup appears again on the next reload.

أضف ?zp_debug=1 إلى رابط الصفحة (أو عيّن window.ZagelyPushConfig.debug = true قبل وسم السكربت) لتسجيل كل خطوة في وحدة التحكم DevTools. يمكنك أيضاً تشغيل zagelPush.diagnose().then(console.table) لرؤية تقرير صحة كامل.

If you use a strict CSP, allow: script-src https://zagely.com; connect-src https://zagely.com; worker-src 'self'. The Service Worker itself runs from your own origin (worker-src 'self'), only the prompt script is loaded from Zagely.

Windows يمرّر إشعارات المتصفح عبر نظام التشغيل. إذا كانت تعمل على Android ولا تعمل على Windows: (1) افتح الإعدادات ← النظام ← الإشعارات وتأكد من أن "الإشعارات" مُفعّلة وأن متصفحك (Chrome/Edge/Firefox) موجود ومُفعّل في القائمة. (2) أوقف وضع التركيز / عدم الإزعاج (Action Center ← Focus). (3) تحقق من Action Center — ربما وصل الإشعار لكنه اختفى تلقائياً؛ بدءاً من الإصدار 1.2.1 تستخدم الإشعارات التجريبية requireInteraction لتبقى ظاهرة. (4) في DevTools ← Application ← Service Workers، انقر على رابط SW لفتح وحدة التحكم الخاصة به؛ يجب أن ترى "[ZagelyPush SW] push received" عند تسليم الإشعار. إذا ظهر هذا السجل ولم يظهر أي إشعار، فالمشكلة 100%% في إعدادات إشعارات Windows وليست في Zagely.

إرسال الإشعارات من لوحة التحكم

بعد اشتراك المستخدمين، انتقل إلى Web Push ← إرسال إشعار تجريبي للاختبار، أو استخدم ميزة البث (Broadcast) للوصول إلى جميع المشتركين النشطين دفعة واحدة.

البث يُضاف إلى قائمة الانتظار — تعود صفحتك فوراً بينما يتم التسليم في الخلفية. تجديد الاشتراك التلقائي يتم أيضاً بشكل تلقائي: عندما يُجدّد المتصفح رمز الدفع الخاص به، Service Worker لدينا يُعيد تسجيل الجهاز حتى لا تفقد مشتركاً بصمت أبداً.
قائمة المشتركين

عرض الأجهزة النشطة، المنتهية، والملغى اشتراكها.

البث

إرسال إشعار دفع إلى جميع المشتركين النشطين دفعة واحدة.

التحليلات

تتبع معدلات التسليم وتوزيع المتصفحات.

هل أنت جاهز لبدء الإرسال؟

انتقل إلى قناة Web Push للحصول على Push Site Key الخاص بك.

افتح لوحة Web Push

البريد الإلكتروني

Channel

أرسل حملات البريد الإلكتروني والرسائل transactional عبر خادم SMTP الخاص بك أو مزود مستضاف.

تتصل قناة البريد الإلكتروني بأي مزود متوافق مع SMTP. وهذا يمنحك تحكماً كاملاً في قابلية التسليم، سواء باستخدام Gmail أو Outlook أو خدمة إرسال متخصصة مثل SendGrid أو Mailgun أو Amazon SES.

مزودو SMTP الشائعون

المزوّد المضيف المنفذ (TLS) ملاحظات
Gmail smtp.gmail.com
587
Requires App Password if 2FA is on
Outlook smtp-mail.outlook.com
587
Use your Microsoft account credentials
SendGrid smtp.sendgrid.net
587
Use "apikey" as username, API key as password
Mailgun smtp.mailgun.org
587
Use Mailgun SMTP credentials from dashboard
AWS SES email-smtp.us-east-1.amazonaws.com
587
Region-specific host; generate SMTP credentials in IAM
1

افتح قناة البريد الإلكتروني

Click Email in the sidebar and open the Integration tab.

2

Enter SMTP Details

Fill in: SMTP Host, Port, Encryption (TLS recommended), Username, and Password.

3

Set From Address

Enter your From Name (e.g., "Acme Support") and From Address (e.g., hello@acme.com). Make sure this address is authorized in your email provider.

4

Test the Connection

Click Send Test Email to verify the settings. A test email will be sent to your account's email address.

5

حفظ الإعدادات

Once the test passes, click Save. The Email channel is now active.

هل أنت جاهز لإعداد البريد الإلكتروني؟

أدخل بيانات SMTP الخاصة بك وابدأ إرسال الحملات.

افتح قناة البريد الإلكتروني

ديسكورد

Channel

انشر الرسائل والبطاقات الغنية والتنبيهات مباشرة في قناة ديسكورد عبر بوت.

تستخدم قناة ديسكورد Discord Bot API v10. تقوم بإنشاء بوت في Discord Developer Portal، ثم تدعوه إلى خادمك، وتلصق رمز البوت مع معرّف الخادم ومعرّف القناة في لوحة التحكم.

المتطلبات المسبقة

  • حساب ديسكورد
  • صلاحية مدير على خادم ديسكورد
  • خطة تتضمن الوصول إلى قناة ديسكورد
1

أنشئ تطبيق ديسكورد

اذهب إلى discord.com/developers/applications → click تطبيق جديد → give it a name → click إنشاء.

2

Create a Bot & Copy Token

Click the Bot tab in the left sidebar → click أضف بوت → confirm. Then click Reset Token to reveal and copy your bot token:

text
MTE5NTUzNDU0NzM1NzA4Nzg3.GxxxxX.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Make sure Message Content Intent is enabled under Privileged Gateway Intents.

3

احصل على معرّف الخادم ومعرّف القناة

في ديسكورد، فعّل وضع المطوّر ضمن User Settings ← Advanced. ثم انقر بزر الفأرة الأيمن على أيقونة الخادم واختر Copy Server ID، ثم انقر بزر الفأرة الأيمن على القناة المستهدفة واختر Copy Channel ID.

4

ادعُ البوت إلى خادمك

اذهب إلى OAuth2 ← مولّد الروابط tab in the Developer Portal. Select bot امنحه النطاق والصلاحيات إرسال الرسائل و تضمين الروابط ثم انسخ الرابط الناتج وافتحه لدعوة البوت:

text
https://discord.com/oauth2/authorize?client_id=YOUR_APP_ID&permissions=2048&scope=bot
5

Connect in Dashboard

انقر على ديسكورد in the sidebar, open the Integration tab, click ربط البوت, fill in the Bot Token, Server ID, and Channel ID, then click اتصال.

هل أنت جاهز لربط ديسكورد؟

ألصق Bot Token ومعرّف الخادم ومعرّف القناة لبدء النشر إلى ديسكورد.

افتح قناة ديسكورد

إنستغرام

Channel

اربط حساب إنستغرام للأعمال أو حساب منشئ محتوى لإرسال واستقبال الرسائل المباشرة.

تتيح لك مراسلة إنستغرام أن يستفسر منك عملاؤك عبر الرسائل المباشرة على إنستغرام بينما ترد عليهم من لوحة التحكم الموحدة. يستخدم الربط OAuth الخاص بفيسبوك لأن حسابات إنستغرام للأعمال تُدار من خلال صفحات فيسبوك.

نافذة المراسلة لمدة 7 أيام

يسمح إنستغرام بمراسلة المستخدم خلال 7 أيام من آخر رسالة أرسلها. بعد انتهاء هذه المدة، لا يمكن إرسال رسائل جديدة حتى يراسلك العميل مرة أخرى.

المتطلبات المسبقة

  • حساب إنستغرام للأعمال أو حساب منشئ محتوى
  • صفحة فيسبوك مرتبطة بحساب إنستغرام الخاص بك
  • صلاحية مدير على صفحة فيسبوك المرتبطة
  • خطة تتضمن الوصول إلى قناة إنستغرام
1

افتح قناة إنستغرام

Click Instagram in the sidebar and open the Integration tab.

2

اتصل عبر فيسبوك

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

3

فوّض واختر الحساب

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

4

تم تسجيل الـ Webhook

بعد التفويض، تقوم المنصة تلقائياً بتسجيل Webhook مع إنستغرام. أصبحت قناة إنستغرام الآن مفعّلة وجاهزة لاستقبال الرسائل المباشرة.

هل أنت جاهز لربط إنستغرام؟

فوّض حساب إنستغرام الخاص بك وابدأ التحدث مع المتابعين.

افتح قناة إنستغرام

جهات الاتصال

الميزة

أدر جمهورك عبر جميع القنوات من قائمة موحدة واحدة لجهات الاتصال.

جهة الاتصال عبارة عن سجل واحد يمكنه الاحتفاظ بمعرّفات كل قناة، مثل رقم واتساب ومعرّف دردشة تيليجرام وMessenger PSID ومعرّف مستخدم فايبر ومعرّف مستخدم ديسكورد والبريد الإلكتروني. وهذا يعني أنك تحتاج إلى جهة اتصال واحدة فقط للوصول إلى الشخص نفسه عبر منصات متعددة.

الحقول الأساسية لجهة الاتصال

الحقل الوصف
Name Display name shown across the inbox and reports
Phone Number International format (e.g. +1 555 123 4567). Required for WhatsApp.
Email Used for Email channel campaigns and opt-out management
Tags Comma-separated labels for segmentation (e.g. vip, lead, customer)
Custom Fields Unlimited key-value pairs for your own data (e.g. order_id, city, plan)
Notes Free-text internal notes visible only to your team
Groups Contact can belong to multiple groups for targeted campaigns
Preferred Channel Default channel used when a campaign targets multi-channel priority

إضافة جهات الاتصال

Manually

اضغط على New Contact في صفحة جهات الاتصال، ثم املأ التفاصيل واحفظ.

استيراد CSV

نزّل قالب CSV التجريبي، واملأه، ثم ارفعه. وسيتم دمج أرقام الهواتف المكررة تلقائياً.

Via API

استخدم نقطة النهاية POST /api/v1/contacts لإنشاء جهات اتصال برمجياً من تطبيقك.

المجموعات والتقسيم

أنشئ مجموعات جهات اتصال ضمن Contacts → Groups لتقسيم جمهورك. وعند إنشاء حملة، يمكنك استهداف مجموعة كاملة أو التصفية حسب العلامات أو حسب قيم الحقول المخصصة دون اختيار جهات الاتصال يدوياً واحدة واحدة.

Per-Channel Contact Lists

Each channel hub has its own Contacts tab — click a channel in the sidebar then open the Contacts tab to see only the subscribers for that channel. The global Contacts page shows your full audience across all channels.

أدر جمهورك

Head to Contacts to add, import, and segment your subscribers.

افتح جهات الاتصال
الفريق والتعاون

ادعُ الزملاء إلى مساحة العمل وعيّن لهم الأدوار للتحكم فيما يمكن لكل شخص الوصول إليه وما يمكنه فعله.

أدوار الفريق

المالك

Full control including billing, plan changes, and workspace deletion. Only one owner per workspace.

مدير

وصول كامل إلى جميع الميزات باستثناء الفوترة وإعدادات مساحة العمل.

وكيل

Can manage contacts, send campaigns, use the unified inbox, and configure automations.

مشاهد

Read-only access to reports, campaigns, and contacts. Cannot create or modify anything.

كيفية دعوة عضو في الفريق
إرسال دعوة
1
In the sidebar, go to إعدادات الحسابالفريق.
2
Click the دعوة عضو button in the top-right corner of the page.
3
أدخل عنوان البريد الإلكتروني and select the appropriate roleثم اضغط Send Invitation.
4
سيتلقى المدعو بريداً إلكترونياً يحتوي على رابط آمن. وتنتهي صلاحية الدعوة بعد 7 أيام.
5
بمجرد القبول، سيظهرون في قائمة الفريق ويمكنهم تسجيل الدخول فوراً.
تحدد خطة الاشتراك الحد الأقصى لعدد أعضاء الفريق. قم بترقية خطتك لإضافة مقاعد أكثر.
إدارة الأعضاء
Change roles & remove members
1
تغيير دور — اضغط على أيقونة التعديل بجانب أي عضو واختر دوراً جديداً. تسري التغييرات فوراً.
2
إزالة عضو — اضغط على أيقونة الإزالة لإلغاء وصوله. وستبقى بياناته مثل الحملات وجهات الاتصال محفوظة.
3
Cancel a pending invitation — افتح تبويب Pending Invitations واضغط Cancel بجانب أي دعوة لم يتم قبولها بعد.
يمكن فقط للمالكين والمسؤولين دعوة أعضاء الفريق أو تعديلهم أو إزالتهم.

صندوق الرسائل الموحد

الميزة

كل المحادثات من جميع القنوات في مكان واحد، اقرأ وردّ وعيّن من عرض واحد.

يجمع صندوق الوارد الموحد المحادثات الواردة والصادرة عبر واتساب وتيليجرام وماسنجر وفايبر والبريد الإلكتروني وإشعارات الويب وديسكورد. ويتم حفظ كل سلسلة رسائل كمحادثة حتى لا تفقد السياق أبداً، حتى لو انتقل المشترك بين القنوات.

ما الذي يمكنك فعله

التصفية حسب القناة

استخدم التصفية حسب القناة لعرض محادثات واتساب أو تيليجرام أو البريد الإلكتروني أو أي قناة أخرى فقط.

تعيين المحادثات

يمكن تعيين أعضاء الفريق الذين لديهم صلاحية Send Message إلى محادثة ليتولوا المتابعة.

تحديد كمقروء أو غير مقروء

تتبّع المحادثات التي تحتاج إلى اهتمام. وتعرض شارة الشريط الجانبي عدد الرسائل غير المقروءة في الوقت الفعلي.

أرشفة

انقل المحادثات المنتهية إلى الأرشيف للحفاظ على نظافة صندوق الوارد دون حذف السجل.

العلامات

Label conversations with tags (e.g. billing, support, vip) to categorize and filter them later.

الوسائط والمرفقات

تظهر الصور والمستندات والملاحظات الصوتية والملفات المرسلة عبر واتساب أو البريد الإلكتروني مباشرة داخل سلسلة المحادثة.

افتح صندوق الوارد الخاص بك

View all incoming conversations from every channel in a single thread.

افتح صندوق الوارد

قوالب الرسائل

الميزة

Save and reuse message content across campaigns, automations, and manual replies.

Templates are reusable message bodies you create once and use anywhere — in campaigns, automation actions, or when replying in the inbox. Each template is assigned to a specific channel so the format (text, rich text, HTML) matches what that channel supports.

Template Format by Channel

القناة Supported Format ملاحظات
WhatsApp Plain text + media URL Supports bold (*text*) and line breaks
Telegram Plain text / HTML Supports HTML tags like <b>, <i>, <a>
Email HTML Full HTML editor with subject line
Viber Plain text + media URL Character limit applies
Messenger Plain text Keep messages concise for best engagement
Discord Plain text / Markdown Supports Discord markdown formatting
Web Push Plain text Short title + body, optional icon URL
Instagram Plain text Within 24-hour messaging window only

Creating a Template

1

Open Templates

Navigate to the global Templates page, or click a channel in the sidebar and open its Templates tab to work channel-scoped.

2

Click New Template

Give the template a descriptive name (e.g. "Order Confirmation") and select the target channel.

3

Write the Message Body

Use the editor to compose your message. You can insert dynamic variables like that are replaced with real values at send time.

4

احفظ

Click Save. The template is now available when building campaigns, automations, or replying from the inbox.

Clone to Another Channel

A template written for WhatsApp can be cloned to Telegram or Email with one click. Open the template's action menu and choose <strong>Clone to Channel</strong>, then select the target channel. The cloned copy is independent so you can adapt the format without affecting the original.

Build your template library

Create reusable messages once and use them across every campaign and automation.

Open Templates

الحملات الإعلانية

الميزة

أرسل رسائل جماعية إلى مئات أو آلاف جهات الاتصال عبر قناة واحدة أو عدة قنوات.

تسمح لك الحملات بإرسال رسالة واحدة أو رسالة غنية بالصور والأزرار إلى جمهور مستهدف بضغطة واحدة. ويمكن إرسال الحملات فوراً أو جدولتها لتاريخ ووقت لاحقين.

Campaign Lifecycle

مسودة
مجدول
قيد التشغيل
متوقفة مؤقتاً
مكتملة
ملغى

يمكن إيقاف الحملة الجارية مؤقتاً ثم استئنافها. وبمجرد معالجة جميع المستلمين تنتقل الحملة تلقائياً إلى Completed.

إنشاء حملة

1

الاسم والقناة

أعطِ الحملة اسماً واختر قناة الإرسال مثل واتساب أو تيليجرام أو البريد الإلكتروني، أو فعّل وضع Multi-Channel لمحاولة الإرسال عبر عدة قنوات حسب ترتيب الأولوية.

2

إنشاء الرسالة

اكتب نص الرسالة. ويمكنك تضمين صور أو ملفات عبر media URL وإضافة أزرار تفاعلية حتى 3 أزرار لردود واتساب السريعة.

3

اختر الجمهور

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

4

جدولة أو إرسال

اختر Send Now للبدء فوراً، أو حدد تاريخاً ووقتاً لجدولة الحملة. ولا يزال بإمكانك تعديل الحملة المجدولة قبل تشغيلها.

5

راقب التقدم

راقب الإحصاءات المباشرة مثل Sent وDelivered وRead وFailed وهي تتحدث في الوقت الفعلي على صفحة تفاصيل الحملة. ويمكنك الإيقاف المؤقت أو الإلغاء في أي وقت.

Delivery Stats Explained

المقياس المعنى
Sent Message was dispatched to the channel. Confirmed by the channel API.
Delivered Channel confirmed the message reached the recipient's device.
Read Recipient opened / read the message (supported on WhatsApp and Email).
Failed Delivery failed. Check the recipient's error message for details.

Channel-Scoped Campaigns

You can also access campaigns directly from a channel hub — click a channel in the sidebar and open the Campaigns tab to see and create campaigns pre-filtered to that channel. The global Campaigns page shows campaigns across all channels.

Launch your first campaign

أنشئ حملة ووصل إلى جمهورك بالكامل في دقائق.

افتح الحملات

الأتمتة

الميزة

رد تلقائياً على الرسائل الواردة استناداً إلى الكلمات المفتاحية والتوقيت وقواعد العمل.

الأتمتة هي ردود قائمة على القواعد تعمل عند تحقق شرط تفعيل معيّن في رسالة واردة. وهي توفر الوقت من خلال التعامل مع الطلبات الشائعة مثل الأسئلة المتكررة والتحيات ورسائل خارج الدوام دون أي تدخل بشري.

أنواع التفعيل

كلمة مفتاحية

يعمل عندما تحتوي الرسالة الواردة على كلمة أو عبارة محددة. مثال: الرد على "MENU" بقائمة مطعمك.

ترحيب

يعمل عند أول رسالة يتم استلامها من جهة اتصال. وهو مثالي لرسالة ترحيب ودليل البدء.

بعيد

يعمل خارج ساعات العمل المحددة لديك. ويُعلم جهة الاتصال بموعد توقع الرد.

احتياطي

يعمل عندما لا تطابق الرسالة الواردة أي أتمتة أخرى. ويعمل كرد افتراضي شامل.

ترتيب الأولوية

عندما يمكن لعدة أتمتات بالكلمات المفتاحية أن تطابق الرسالة نفسها، تفوز الأتمتة ذات رقم الأولوية الأقل. استخدم مقبض السحب لإعادة الترتيب في صفحة Automations لتحديد الترتيب. أما قواعد Welcome وAway وFallback فتعمل دائماً بشكل مستقل عن أولوية الكلمات المفتاحية.

إعداد أتمتة

1

اذهب إلى الأتمتة

انتقل إلى Automations في الشريط الجانبي واضغط New Automation.

2

اختر نوع التفعيل

اختر Keyword أو Welcome أو Away أو Fallback. وبالنسبة إلى Keyword، أدخل كلمة التفعيل أو الكلمات مفصولة بفواصل عند وجود بدائل متعددة.

3

أنشئ الرد

اكتب نص الرد. ويمكنك اختيارياً إرفاق media URL لصورة أو مستند وإضافة ما يصل إلى 3 أزرار للرد السريع.

4

اختر الجلسة

اختر جلسة واتساب أو أي قناة أخرى التي تنطبق عليها هذه الأتمتة، أو اتركها على All لتطبيقها على مستوى المنصة كلها.

5

تفعيل

حوّل الأتمتة إلى Active واحفظ. وستبدأ بالرد على الرسائل المطابقة فوراً.

Automate your replies

قم بإعداد رسالة ترحيب أو رد بالكلمات المفتاحية ولا تفوّت أي رسالة واردة.

افتح الأتمتة

Human Takeover pauses automations too

When an agent replies manually, all automation messages (keyword, welcome, away, and fallback) are suppressed for that conversation — just like AI replies. This ensures customers receive a seamless, human experience without automated interruptions. Learn more →

التقارير والتحليلات

الميزة

تتبّع تسليم الرسائل وأداء الحملات ونمو الجمهور بمرور الوقت.

تمنحك صفحة التقارير نظرة شاملة على نشاط المراسلة لديك. ويتم تحديث جميع الرسوم البيانية تلقائياً ويمكن تصفيتها حسب النطاق الزمني والقناة.

لوحة النظرة العامة

إجمالي الرسائل المرسلة يومياً ومعدل التسليم ومعدل القراءة عبر جميع القنوات.

تحليلات الحملات

تفصيل التسليم والقراءة والإخفاق لكل حملة مع إمكانية التعمق حتى مستوى المستلم.

تحليلات الجلسات

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

تحليلات جهات الاتصال

عدد جهات الاتصال الجديدة بمرور الوقت وتوزيع القنوات لمعرفة المنصات التي يستخدمها جمهورك أكثر.

نشاط الرسائل

رسوم بيانية لنشاط الرسائل بالساعة واليوم لتحديد فترات التفاعل القصوى.

Export Data

All analytics are also available via the API (/api/analytics/*) so you can pull them into your own BI tools.

اعرض تقاريرك

اعرف كيف تؤدي حملاتك وقنواتك الآن.

افتح التقارير

مساعد الذكاء الاصطناعي

الميزة

Intelligent auto-replies powered by your own knowledge base, with smart human-handoff controls.

The AI Assistant automatically answers incoming messages on any connected channel using knowledge you provide — FAQs, product docs, policy files, and more. Combine it with Human Takeover to seamlessly hand conversations to a live agent and have the AI resume when it's safe to do so.

Enabling AI on a Channel

1

Open Channel Settings

Click any channel in the sidebar, open the Integration tab and click the AI Settings button.

2

Enable the AI toggle

Switch on Enable AI Auto-Reply. The AI will now automatically respond to inbound messages using your knowledge base.

3

Choose a Model

Select the AI model that best suits your needs. More capable models give richer answers; lighter models respond faster.

4

Train Your Knowledge Base

Upload documents or paste text in Account Settings → AI Training. The AI learns only from the content you provide.

Business-Hours Schedule

Restrict AI replies to specific days and hours. Outside those hours the AI stays silent so customers know when to expect a human reply. Enable the schedule toggle inside AI Settings, choose your timezone, and check the days you want AI to be active.

السيطرة البشرية

When a team member manually replies to a customer, Human Takeover automatically pauses both AI replies and automation messages on that conversation, so the agent handles it without any automated interruptions. Everything resumes automatically once the pause expires or the customer writes back after a period of agent silence.

Pause on Human Reply

AI replies and automation messages pause the moment an agent sends a message in the conversation.

Hard-Timer Resume

AI and automations resume automatically after the configured pause duration (default 3 hours).

Idle Reactivation

AI and automations resume early if the customer writes back and the agent has been silent past the idle threshold.

Enable Human Takeover under <strong>AI Settings → Human Takeover</strong> on any channel session. See the full configuration guide on the AI Assistant documentation page.

Excluding Contacts from AI Replies

You can stop the AI from replying to specific contacts or groups in two ways:

Channel Exclusion List

Open AI Settings on a channel and add contacts or groups to the Exclusions pickers. Only affects that channel.

AI Reply Toggle

Flip the AI Reply switch on the Contacts page or Contact Groups page to disable AI replies globally for that contact or group.

See the full explanation of how both exclusion gates stack on the AI Assistant documentation page.