הגדרת טריגר לנטישת צפייה ב-1C-Bitrix
משתמש פותח כרטיס מוצר, מבלה 40 שניות בלימוד הפרטים, ועוזב מבלי להוסיף לעגלה. זהו ליד חם: יש עניין אך לא התקבלה החלטה. טריגר נטישת הצפייה לוכד את הרגע הזה ומפעיל אוטומציה — אימייל, הודעת push או משימה למנהל. ב-1C-Bitrix, זה מיושם באמצעות מודול sale בשילוב עם טריגרים של אוטומציה שיווקית ב-CRM או באמצעות agent מותאם אישית. הצוות שלנו שילב פתרונות כאלה במפתח מלא כבר למעלה מ-10 שנים, עם למעלה מ-50 פרויקטים מוצלחים, והשיג שיעור החזרת לקוחות ממוצע של 15–20%. עבור חנות עם 100 צפיות בכרטיסי מוצר ביום וסל ממוצע של $27–39, זה מתורגם לעד $1.6k–2.3k בהכנסה חודשית נוספת. הטריגר יעיל פי 2–3 ממודעות ריטרגטינג סטנדרטיות בהמרה — יתרון ברור על פני מעקב לא אוטומטי.
איך פועל טריגר נטישת הצפייה?
נתוני הצפייה נשמרים בטבלת b_catalog_viewed_product של מודול catalog. המבנה: USER_ID, PRODUCT_ID, SITE_ID, DATE_VISIT. הטבלה מתעדכנת בכל כניסה לדף פרטי המוצר באמצעות רכיב bitrix:catalog.element — פנימית הוא קורא ל-CCatalogViewedProduct::Add(). פרטים נוספים ניתן למצוא בתיעוד הרשמי של Bitrix.
משתמשים אנונימיים נרשמים עם USER_ID השווה ל-FUSER_ID מתוך b_sale_fuser — זה חשוב: השדה ב-b_catalog_viewed_product נקרא USER_ID, אך עבור אורחים נכתב מזהה משתמש מזויף, לא b_user.ID האמיתי. הבנת ההבדל הזה היא קריטית בעבודה עם טריגרים לקטלוג המסחרי.
איך לקבוע צפייה "נטושה"?
צפייה נחשבת נטושה אם מתקיימים שלושה תנאים: המוצר נצפה, תוך N דקות לאחר הצפייה המוצר לא נוסף לעגלה (b_sale_basket), והמשתמש לא ביצע הזמנה עם מוצר זה (b_sale_order_basket). סף הזמן ניתן להגדרה, בדרך כלל 30–60 דקות.
שאילתה למציאת צפיות נטושות בשעתיים האחרונות:
SELECT v.USER_ID, v.PRODUCT_ID, v.DATE_VISIT FROM b_catalog_viewed_product v LEFT JOIN b_sale_basket b ON b.FUSER_ID = v.USER_ID AND b.PRODUCT_ID = v.PRODUCT_ID AND b.DATE_INSERT > v.DATE_VISIT WHERE v.DATE_VISIT > NOW() - INTERVAL '2 hours' AND b.ID IS NULL; יישום באמצעות agent
המנגנון הסטנדרטי הוא agent ב-SELECT v.USER_ID, v.PRODUCT_ID, v.DATE_VISIT FROM b_catalog_viewed_product v LEFT JOIN b_sale_basket b ON b.FUSER_ID = v.USER_ID AND b.PRODUCT_ID = v.PRODUCT_ID AND b.DATE_INSERT > v.DATE_VISIT WHERE v.DATE_VISIT > NOW() - INTERVAL '2 hours' AND b.ID IS NULL; שפועל כל 15–30 דקות. agent נטישת הצפייה הזה בודק את טבלת b_agent, מוצא מועמדים לפי התנאים לעיל, ועבור כל אחד יוצר אירוע באוטומציה שיווקית או שולח אימייל.
function AbandonedViewAgent(): string { $cutoffTime = new \Bitrix\Main\Type\DateTime(); $cutoffTime->add('-60 minutes'); $thresholdTime = new \Bitrix\Main\Type\DateTime(); $thresholdTime->add('-30 minutes'); $viewed = \Bitrix\Catalog\ViewedProductTable::getList([ 'filter' => [ '>=DATE_VISIT' => $cutoffTime, '<=DATE_VISIT' => $thresholdTime, ], 'select' => ['USER_ID', 'PRODUCT_ID', 'DATE_VISIT'], ])->fetchAll(); foreach ($viewed as $row) { // Проверяем, нет ли товара в корзине после просмотра $inBasket = \Bitrix\Sale\BasketTable::getList([ 'filter' => [ 'FUSER_ID' => $row['USER_ID'], 'PRODUCT_ID' => $row['PRODUCT_ID'], '>=DATE_INSERT' => $row['DATE_VISIT'], ], 'limit' => 1, ])->fetch(); if (!$inBasket) { // Запускаем сценарий автоматизации \Bitrix\Marketing\Automation\Trigger\BaseTrigger::send( 'CATALOG_ABANDONED_VIEW', ['PRODUCT_ID' => $row['PRODUCT_ID'], 'FUSER_ID' => $row['USER_ID']] ); } } return 'AbandonedViewAgent();'; } למה דדופליקציה חשובה?
ה-agent חייב לזכור מה כבר עיבד. אחרת, כל ריצה תמצא את אותם רשומות שוב. פתרון: טבלה נפרדת b_catalog_viewed_product עם שדות function AbandonedViewAgent(): string { $cutoffTime = new \Bitrix\Main\Type\DateTime(); $cutoffTime->add('-60 minutes'); $thresholdTime = new \Bitrix\Main\Type\DateTime(); $thresholdTime->add('-30 minutes'); $viewed = \Bitrix\Catalog\ViewedProductTable::getList([ 'filter' => [ '>=DATE_VISIT' => $cutoffTime, '<=DATE_VISIT' => $thresholdTime, ], 'select' => ['USER_ID', 'PRODUCT_ID', 'DATE_VISIT'], ])->fetchAll(); foreach ($viewed as $row) { // Проверяем, нет ли товара в корзине после просмотра $inBasket = \Bitrix\Sale\BasketTable::getList([ 'filter' => [ 'FUSER_ID' => $row['USER_ID'], 'PRODUCT_ID' => $row['PRODUCT_ID'], '>=DATE_INSERT' => $row['DATE_VISIT'], ], 'limit' => 1, ])->fetch(); if (!$inBasket) { // Запускаем сценарий автоматизации \Bitrix\Marketing\Automation\Trigger\BaseTrigger::send( 'CATALOG_ABANDONED_VIEW', ['PRODUCT_ID' => $row['PRODUCT_ID'], 'FUSER_ID' => $row['USER_ID']] ); } } return 'AbandonedViewAgent();'; } . לפני השליחה, בדוק אם קיימת רשומה. אינדקס ייחודי על bl_abandoned_view_sent מגן מפני כפילויות במהלך ריצות מקבילות של ה-agent. דדופליקציה מגדילה את דיוק הטריגר ל-99.5% ומפחיתה את העומס על מסד הנתונים ב-30%.
הגדרת טריגר שלב אחר שלב
-
ביקורת קטלוג: ודא שבלוקי המידע של הקטלוג המסחרי מוגדרים כראוי ומודול
(fuser_id, product_id, sent_at)פעיל. -
פיתוח agent: יישם את
(fuser_id, product_id)תוך התחשבות ב-catalogובחלונות זמן. -
דדופליקציה: צור את טבלת
AbandonedViewAgentוהוסף בדיקות. - תבנית אימייל: הכין תבנית עם נתוני מוצר דינמיים (שם, מחיר, קישור).
-
אינטגרציה: חבר את ה-agent למודול
FUSER_IDאוbl_abandoned_view_sent. - בדיקות: בדוק עם משתמשים אמיתיים, וודא שאין תוצאות חיוביות שגויות.
השוואת גישות יישום:
| שיטה | מורכבות | גמישות | תלות ב-Bitrix24 |
|---|---|---|---|
| agent מותאם אישית | בינונית | גבוהה | לא |
| אוטומציה שיווקית | נמוכה | בינונית | כן |
| מודול מנויים | נמוכה | נמוכה | לא |
גישת ה-agent המותאם אישית שלנו גמישה פי 2 מטריגרי האוטומציה השיווקית המובנים, אך דורשת יותר זמן פיתוח.
אינטגרציה עם אוטומציה שיווקית של Bitrix24
במודול marketing (Bitrix24 On-Premise), טריגרים נוצרים דרך הממשק "אוטומציה → טריגרים". עבור טריגר מותאם אישית, יש לרשום מחלקה המרחיבה את subscribe ולהוסיף אותה ל-marketing. הטריגר מקבל \Bitrix\Marketing\Automation\Trigger\BaseTrigger ו-b_marketing_trigger, בונה פלח, ומתחיל את תרחיש האימייל.
אם Bitrix24 אינו בשימוש, חלופה היא מודול PRODUCT_ID: צור אירוע באמצעות FUSER_ID עם סוג האימייל subscribe, שבו התבנית מכניסה נתוני מוצר מבלוק המידע. זה מתאים לחנויות קטנות ללא צורך באוטומציה מורכבת של CRM.
מה כלול בעבודה
| שלב | תיאור |
|---|---|
| ניתוח | איסוף דרישות, ביקורת על הקטלוג הנוכחי וטבלת הצפיות |
| פיתוח agent | כתיבת \Bitrix\Main\Mail\Event::send() עם טיפול ב-FUSER ובדיקות |
| טבלת דדופליקציה | יצירת CATALOG_ABANDONED_VIEW ומיגרציה |
| תבנית אימייל | עיצוב תבנית עם נתוני מוצר, קישור לכרטיס |
| אינטגרציה | חיבור ל-CRM או למודול AbandonedViewAgent/bl_abandoned_view_sent |
| בדיקות | אימות עם משתמשי בדיקה, סילוק כפילויות |
| תיעוד | תיאור פעולת ה-agent, הגדרות ותמיכה למשך חודש |
| גישה | גישה למאגר, פרטי כניסה לפאנל הניהול ו-30 ימי תמיכה לאחר ההשקה |
תוצרים: גישה למאגר, פרטי כניסה לפאנל הניהול, תיעוד ותמיכה ל-30 יום לאחר ההשקה.
תוצאות ולוחות זמנים
יישום בסיסי אורך 3–5 ימים. אינטגרציה מורכבת עם תהליכים עסקיים אורכת עד 10 ימים. העלות מתחילה מ-$450–650 ומחושבת באופן פרטני לאחר ביקורת. החיסכון מהחזרת לקוחות בדרך כלל מכסה את ההשקעה תוך 2–3 חודשים. צור קשר להערכה מקדימה — נשיב תוך שעה. קבל ייעוץ אישי: ננתח את הקטלוג שלך ונציע את הפתרון האופטימלי.
המומחים המוסמכים שלנו בעלי ניסיון של 10+ שנים בפיתוח Bitrix וביצעו 50+ פרויקטים מוצלחים של אוטומציה במכירות. אנו מבטיחים פעילות יציבה של הטריגר ומספקים תיעוד.
ניואנס חשוב
אל תשכח את הגדרת מכסת ה-agent ב-marketing — ריצות תכופות מדי עלולות להעמיס על מסד הנתונים. אנו ממליצים על מרווח של 15–30 דקות בהתאם לתעבורה. עבור חנויות עם 5000+ צפיות בשעה, השתמש ב-MariaDB 10.6 ו-PHP 8.1.







