לקוח מאבד 70% מעגלות נטושות עקב עיכובים בהודעות push ב-1C-Bitrix. תרחישי ירידת מחיר שגויים מובילים לשליחת הודעות על מוצרים שאינם במלאי. הודעות push טריגר ב-1C-Bitrix אינן רק 'שליחת אימייל' — הן ארכיטקטורת אירועים מורכבת שבה כל באג בלוגיקה מוביל לאובדן המרות. אנו מגדירים ארכיטקטורה כזו במפתח מלא, ומבטיחים פעולה תקינה של כל תרחיש תוך 2–5 ימים. לפי הנתונים שלנו, יישום תרחיש עגלה נטושה מביא להכנסה נוספת של $900–1.3k בחודש לחנות מקוונת עם צ'ק ממוצע של $27–39.
הודעות push טריגר ב-1C-Bitrix שונות מתפוצה מפולחת בדרך אחת: הן נשלחות אוטומטית בתגובה לפעולה ספציפית של המשתמש, לא לפי לוח זמנים. עגלה נטושה אחרי שעתיים, ירידת מחיר על מוצר שנצפה, חזרה למלאי של מוצר ברשימת המשאלות — אלה תרחישי טריגר. כשהן מוגדרות כראוי, הן מניבות ROI של 500–1500%, פי שלושה יותר גבוה מקמפיינים רגילים באימייל.
ארכיטקטורת אירועים ב-Bitrix
הודעות push טריגר בנויות על מודל האירועים של Bitrix. כל אירוע במערכת הוא טריגר פוטנציאלי. התהליך:
- מתרחש אירוע (הוספה לעגלה, צפייה במוצר, שינוי סטטוס הזמנה)
- מטפל האירוע בודק את תנאי התרחיש
- אם התנאים מתקיימים, משימת ה-push נדחית בתור עם השהיה
- סוכן Bitrix מעבד את התור ושולח הודעות
תור המשימות מאוחסן בטבלה:
דוגמה לטבלת תור
CREATE TABLE custom_push_queue ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, scenario VARCHAR(50) NOT NULL, payload JSON, send_at DATETIME NOT NULL, status ENUM('pending', 'sent', 'cancelled') DEFAULT 'pending', created_at DATETIME, INDEX idx_send_at (send_at, status), INDEX idx_user_scenario (user_id, scenario) ); מקור: תיעוד רשמי של 1C-Bitrix
תרחישים מרכזיים
עגלה נטושה
התרחיש החשוב ביותר. הלוגיקה:
// Обработчик OnSaleBasketItemSaved AddEventHandler('sale', 'OnSaleBasketItemSaved', function($basketItem) { $userId = (int)$basketItem->getField('USER_ID'); if (!$userId) return; // Только авторизованные // Отменяем предыдущую задачу для этого пользователя PushQueueTable::cancelByUserAndScenario($userId, 'abandoned_cart'); // Ставим новую — через 2 часа PushQueueTable::add([ 'USER_ID' => $userId, 'SCENARIO' => 'abandoned_cart', 'PAYLOAD' => json_encode(['cart_url' => '/cart/']), 'SEND_AT' => new \Bitrix\Main\Type\DateTime(date('Y-m-d H:i:s', time() + 7200)), 'STATUS' => 'pending', 'CREATED_AT' => new \Bitrix\Main\Type\DateTime(), ]); }); לאחר השלמת הזמנה, המשימה מתבטלת. אם המשתמש לא משלים את ההזמנה, ה-push מגיע אחרי שעתיים.
ירידת מחיר
דורש שמירת היסטוריית צפיות ומעקב אחר שינויי מחירים:
// При изменении цены торгового предложения (OnBeforeIBlockElementUpdate) AddEventHandler('iblock', 'OnAfterIBlockElementUpdate', function(&$fields) { $elementId = (int)$fields['ID']; $newPrice = getElementPrice($elementId); // Находим пользователей, просматривавших этот товар $viewers = ProductViewHistoryTable::getUsersByProduct($elementId, 30); // за 30 дней foreach ($viewers as $viewer) { $oldPrice = ProductPriceHistoryTable::getLastPrice($elementId, $viewer['USER_ID']); if ($newPrice < $oldPrice * 0.9) { // Скидка 10%+ PushQueueTable::add([ 'USER_ID' => $viewer['USER_ID'], 'SCENARIO' => 'price_drop', 'PAYLOAD' => json_encode(['product_id' => $elementId, 'new_price' => $newPrice]), 'SEND_AT' => new \Bitrix\Main\Type\DateTime(), // Немедленно 'STATUS' => 'pending', ]); } } }); ירידת מחיר על מוצר שנצפה מייצרת הכנסה נוספת של כ-$1.8k–2.6k בחודש.
חזרה למלאי
באמצעות מטפל לשינוי כמות ב-CREATE TABLE custom_push_queue ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, scenario VARCHAR(50) NOT NULL, payload JSON, send_at DATETIME NOT NULL, status ENUM('pending', 'sent', 'cancelled') DEFAULT 'pending', created_at DATETIME, INDEX idx_send_at (send_at, status), INDEX idx_user_scenario (user_id, scenario) ); או במהלך סנכרון 1C.
סטטוס הזמנה
מטפל עבור // Обработчик OnSaleBasketItemSaved AddEventHandler('sale', 'OnSaleBasketItemSaved', function($basketItem) { $userId = (int)$basketItem->getField('USER_ID'); if (!$userId) return; // Только авторизованные // Отменяем предыдущую задачу для этого пользователя PushQueueTable::cancelByUserAndScenario($userId, 'abandoned_cart'); // Ставим новую — через 2 часа PushQueueTable::add([ 'USER_ID' => $userId, 'SCENARIO' => 'abandoned_cart', 'PAYLOAD' => json_encode(['cart_url' => '/cart/']), 'SEND_AT' => new \Bitrix\Main\Type\DateTime(date('Y-m-d H:i:s', time() + 7200)), 'STATUS' => 'pending', 'CREATED_AT' => new \Bitrix\Main\Type\DateTime(), ]); }); . ה-push נשלח מיד בכל שינוי סטטוס.
למה עגלה נטושה היא התרחיש הכי רווחי?
כי המשתמש כבר הראה כוונת קנייה. תזכורת push אחרי שעתיים מחזירה עד 15% מהעגלות הנשכחות. זה גבוה יותר מקמפיינים באימייל (5–10%) ומהיר משמעותית. אנו מיישמים את התרחיש הזה ראשון, כי הוא מחזיר את ההשקעה כבר בשבוע הראשון. עם ROI של 500–1500%, עלויות הפיתוח מוחזרות תוך 1–2 חודשים.
איך להגדיר push טריגר בלי לשרוף טראפיק?
הטעות העיקרית היא התעלמות מדה-דופליקציה ואזורי זמן. בלי דה-דופליקציה, משתמש יכול לקבל שלוש הודעות push בשעה. הכללים שאנו מיישמים:
- תרחיש אחד לא יותר מפעם אחת ב-24 שעות למשתמש
- לא לשלוח push מ-23:00 עד 9:00 (אזור זמן של המשתמש)
- אם המשתמש כבר רכש לאחר האירוע — לבטל את המשימה
אזור הזמן של המשתמש נלקח מהפרופיל שלו או מגיאולוקציה בזמן ההרשמה.
סוכן עיבוד התור
הסוכן של Bitrix רץ כל דקה:
דוגמה ליישום סוכן
function ProcessPushQueue(): string { $now = new \Bitrix\Main\Type\DateTime(); $records = PushQueueTable::getList([ 'filter' => ['=STATUS' => 'pending', '<=SEND_AT' => $now], 'limit' => 100, ]); while ($record = $records->fetch()) { $tokens = PushTokenTable::getByUserId($record['USER_ID']); if (!empty($tokens)) { $message = PushScenario::buildMessage($record['SCENARIO'], json_decode($record['PAYLOAD'], true)); PushSender::send($tokens, $message); } PushQueueTable::update($record['ID'], ['STATUS' => 'sent']); } return __FUNCTION__ . '();'; } השוואת תרחישים לפי מורכבות ו-ROI
| תרחיש | מורכבות | ROI ממוצע | זמן יישום |
|---|---|---|---|
| עגלה נטושה | בינוני | 500–1500% | 2–3 ימים |
| ירידת מחיר | גבוה | 300–800% | +2 ימים |
| חזרה למלאי | בינוני | 200–600% | +2 ימים |
| סטטוס הזמנה | נמוך | 100–300% | יום אחד |
לוח זמנים למסירה
| היקף | לוח זמנים |
|---|---|
| עגלה נטושה + סטטוס הזמנה | 2–3 ימים |
| ירידת מחיר + חזרה למלאי | +2 ימים |
| דה-דופליקציה + אזורי זמן + אנליטיקה | +1–2 ימים |
כל תרחיש טריגר עובד הוא איש מכירות אוטומטי שלא לוקח משכורת.
לפני תחילת הפיתוח, אנו מנתחים את מודל האירועים הנוכחי, מזהים תרחישים לא יעילים ומתכננים חדשים. עבור כל טריגר, אנו מגדירים תנאים והשהיות מדויקים, ומגדירים דה-דופליקציה ואזורי זמן.
מה כלול
- ניתוח מודל האירועים הנוכחי וקטלוג המוצרים
- עיצוב סכמת תרחישים תוך התחשבות בלוגיקה העסקית
- יישום מטפלים, תורים וסוכנים
- הגדרת דה-דופליקציה ואזורי זמן
- אינטגרציה עם שירותי push (Firebase, Bitrix Push)
- בדיקת עומסים: אנו בודקים 1000+ אירועים בו-זמנית
- תיעוד תרחישים והנחיות למפעילים
- אחריות על כל תרחיש — 30 ימי תמיכה ללא הגבלה
הניסיון שלנו כולל מעל 5 שנים בפיתוח Bitrix, עם יותר מ-50 פרויקטים הכוללים push טריגר. לפי נתוני הפרויקטים שלנו, ROI של קמפיינים טריגר ב-push מגיע ל-1500% עם הגדרה נכונה. הזמינו הגדרה של הודעות push טריגר ב-1C-Bitrix — קבלו את הלקוחות הראשונים שלכם מחר. צרו קשר לבדיקת הפרויקט שלכם — נעריך את הפוטנציאל של push טריגר ביום אחד.







