מודול דוא"ל מותאם אישית ל-1C-Bitrix עם תורים ומעקב

כאשר בסיס המנויים גדל, הכלים המובנים של 1C-Bitrix אינם מסוגלים עוד להתמודד עם שליחת דואר: הודעות אובדות וחסרה אנליטיקה. אנו מפתחים מודולי שליחה מותאמים אישית עם תורים, מעקב וסגמנטציה גמישה. הצוות שלנו מספק את הפרויקט במפתח מלא, החל מבדיקת צרכים ועד הטמעה ותמיכה שוטפת.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
מודול דוא"ל מותאם אישית ל-1C-Bitrix עם תורים ומעקב
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

מודול הדוא"ל הסטנדרטי ב-1C-Bitrix מתחיל להיכשל עם מסד נתונים של למעלה מ-10,000 אנשי קשר. לקוחות מתלוננים על מיילים שאבדו—ברירת המחדל subscribe הופכת לצוואר בקבוק. ללא תורים ומעקב, לא ניתן להרחיב שיווק בדוא"ל. הצוות שלנו עם 10 שנות ניסיון בונה מודולי הרשמה ודוא"ל מותאמים אישית במפתח סוהר: עם תורים, מעקב וסגמנטציה גמישה. זמן פיתוח משוער—החל משבועיים. צרו קשר כדי לדון בפרויקט שלכם.

למה מודול ההרשמה הסטנדרטי לא עובד לתפוצה גדולה?

המודול הסטנדרטי מאחסן מנויים בטבלת b_subscribe_subscr_addr ותבניות דוא"ל ב-b_subscribe_posting. לוגיקת השליחה משתמשת בסוכני CAgent שפועלים באופן סינכרוני במהלך בקשות HTTP. עם למעלה מ-10,000 אנשי קשר, זה מוביל לזמן קצוב שחלף ולמיילים שאבדו. בנוסף: אין מעקב פתיחה מובנה, אין תור ניסיונות חוזרים לשגיאות SMTP, אין תמיכה במיילים טרנזקציוניים עם תוכן דינמי דרך API. בפרויקט אחד, החלפנו את המודול הסטנדרטי במודול מותאם אישית והפחתנו את עלויות השיווק בדוא"ל ב-35% על ידי ויתור על שירותי צד שלישי יקרים. המודול המותאם אישית מעבד פי 3 יותר מיילים ליחידת זמן ומפחית תלונות ספאם פי 5, ומבטיח עד 95% יכולת מסירה.

איך מודול מותאם אישית משפר את יכולת המסירה?

המודול נרשם בדרך הסטנדרטית דרך /bitrix/modules/vendor.mailer/install/index.php עם המחלקה vendor_mailer. מרחב השמות הוא \Vendor\Mailer.

רכיבים מרכזיים

  • SubscriberTable — טבלת ORM b_vendor_mailer_subscriber (id, email, name, status, groups, created_at, unsubscribed_at)
  • CampaignTable — b_vendor_mailer_campaign (id, name, subject, template_id, status, scheduled_at, sent_count, open_count)
  • QueueTable — b_vendor_mailer_queue (id, campaign_id, subscriber_id, status, attempts, last_error, sent_at)
  • EventTable — b_vendor_mailer_event (id, subscriber_id, type, payload, created_at) — מעקב פתיחה ולחיצה

טבלאות נוצרות דרך \Bitrix\Main\ORM\Data\DataManager עם תמיכה מלאה ב-D7-ORM. לאמינות, אנו משתמשים במטמון מתויג עבור בלוקי מידע—זה מאיץ את העבודה עם נפחי נתונים גדולים.

פרטי יישום תור השליחה

שליחה סינכרונית דרך CAgent היא דרך ללא מוצא. אנו משתמשים בתור:

// Постановка в очередь при старте кампании
public function enqueue(int $campaignId): void
{
    $subscribers = SubscriberTable::getList([
        'filter' => ['=STATUS' => 'active', '=GROUPS' => $this->campaign->getGroups()],
        'select' => ['ID', 'EMAIL', 'NAME'],
    ]);
    while ($row = $subscribers->fetch()) {
        QueueTable::add([
            'CAMPAIGN_ID' => $campaignId,
            'SUBSCRIBER_ID' => $row['ID'],
            'STATUS' => 'pending',
            'ATTEMPTS' => 0,
        ]);
    }
}

מטפל התור פועל כסוכן כל 2 דקות, מביא אצווה של 100 רשומות עם סטטוס // Постановка в очередь при старте кампании public function enqueue(int $campaignId): void { $subscribers = SubscriberTable::getList([ 'filter' => ['=STATUS' => 'active', '=GROUPS' => $this->campaign->getGroups()], 'select' => ['ID', 'EMAIL', 'NAME'], ]); while ($row = $subscribers->fetch()) { QueueTable::add([ 'CAMPAIGN_ID' => $campaignId, 'SUBSCRIBER_ID' => $row['ID'], 'STATUS' => 'pending', 'ATTEMPTS' => 0, ]); } } , שולח דרך התחבורה שנבחרה, ומעדכן את הסטטוס ל-pending או sent.

תחבורות: SMTP וספקי API

אבסטרקציית התחבורה מיושמת דרך MailTransportInterface:

interface MailTransportInterface { public function send(Message $message): SendResult; } 

יישומים קונקרטיים: SmtpTransport (דרך PHPMailer או mail() מקורי), SendGridTransport (REST API v3), MailgunTransport, AmazonSesTransport. התחבורה נבחרת בהגדרות המודול (failed, מרחב שמות vendor.mailer).

בשגיאת שליחה, הסטטוס משתנה ל-interface MailTransportInterface { public function send(Message $message): SendResult; } , מונה הניסיונות גדל. כאשר ניסיונות >= 3, הרשומה מסומנת כ-b_option ולא נשלחת שוב.

מעקב פתיחה ולחיצה

פיקסל שקוף 1×1 מוכנס לתוך הדוא"ל:

<img src="https://site.ru/mailer/track/open/?uid=UNIQUE_TOKEN" width="1" height="1"> 

בבקשת GET, הבקר מתעד את האירוע ב-<img src="https://site.ru/mailer/track/open/?uid=UNIQUE_TOKEN" width="1" height="1"> ומחזיר GIF 1×1. לחיצות מנוטרות דרך הפנייה מחדש: כל הקישורים בדוא"ל מוחלפים ב-b_vendor_mailer_event.

מטפל האירועים:

EventTable::add([
    'SUBSCRIBER_ID' => $subscriberId,
    'CAMPAIGN_ID' => $campaignId,
    'TYPE' => 'open', // или 'click'
    'PAYLOAD' => json_encode(['url' => $url, 'ip' => $_SERVER['REMOTE_ADDR']]),
    'CREATED_AT' => new \Bitrix\Main\Type\DateTime(),
]);

סגמנטציית מנויים

קבוצות מאוחסנות ב-https://site.ru/mailer/track/click/?uid=TOKEN&url=ENCODED_URL, קישורים למנויים דרך EventTable::add([ 'SUBSCRIBER_ID' => $subscriberId, 'CAMPAIGN_ID' => $campaignId, 'TYPE' => 'open', // или 'click' 'PAYLOAD' => json_encode(['url' => $url, 'ip' => $_SERVER['REMOTE_ADDR']]), 'CREATED_AT' => new \Bitrix\Main\Type\DateTime(), ]); . סגמנטציה תומכת בתנאים המבוססים על שדות פרופיל משתמש Bitrix (b_vendor_mailer_group) דרך JOIN.

סגמנטים דינמיים נבנים באמצעות בונה מסננים בממשק הניהול—אותה גישה כמו ב-Bitrix CRM: קבוצת תנאים עם אופרטורים AND/OR שמתורגמים למסנן ORM בעת הוספה לתור.

מיילים טרנזקציוניים

עבור מיילי מערכת (אישור דוא"ל, איפוס סיסמה, התראות הזמנות), המודול מספק API לאירועים:

// Отправка транзакционного письма
\Vendor\Mailer\Transactional::send('order_confirmed', [
    'USER_ID' => $userId,
    'ORDER_ID' => $orderId,
    'ORDER_SUM' => $orderSum,
    'ITEMS' => $orderItems,
]);

תבניות דוא"ל טרנזקציוניות מאוחסנות ב-b_vendor_mailer_subscriber_group וניתנות לעריכה דרך סעיף הניהול עם תמיכה במשתנים כמו b_user.

ממשק ניהול

המודול מוסיף סעיפים ב-// Отправка транзакционного письма \Vendor\Mailer\Transactional::send('order_confirmed', [ 'USER_ID' => $userId, 'ORDER_ID' => $orderId, 'ORDER_SUM' => $orderSum, 'ITEMS' => $orderItems, ]); :

  • b_vendor_mailer_template — רשימת מנויים וניהול
  • {{ORDER_ID}} — קמפיינים, סטטוס, סטטיסטיקות
  • /bitrix/admin/ — עורך תבניות
  • vendor_mailer_subscribers.php — הגדרות תחבורה, DKIM, מגבלות

הממשק משתמש במחלקות vendor_mailer_campaigns.php, vendor_mailer_templates.php סטנדרטיות—תאימות מלאה לערכת הנושא של Bitrix.

ביטול הרשמה ו-GDPR

קישור ביטול הרשמה בכל דוא"ל מוביל ל-vendor_mailer_settings.php. בלחיצה, סטטוס המנוי משתנה ל-CAdminList, ו-CAdminForm מתמלא. הוספה חוזרת של רשומות כאלה לתור נחסמת ברמת המסנן.

לציות GDPR: ייצוא נתוני מנוי לפי בקשה (https://site.ru/mailer/unsubscribe/?token=TOKEN), מחיקה מלאה דרך unsubscribed עם מחיקה מדורגת מכל הטבלאות הקשורות.

מה כלול?

  • תיעוד: תיאור ארכיטקטורה, סכמת מסד נתונים, מדריך התקנה.
  • קוד מקור של המודול עם רישיון.
  • הדרכה: סמינר מקוון של שעתיים למנהלים.
  • תמיכה: 30 יום לאחר ההשקה (תיקוני באגים, ייעוץ).
  • אחריות תאימות ל-Bitrix 20.0+ ו-PHP 8.1+.

השוואה בין מודול סטנדרטי למודול מותאם אישית

קריטריון הרשמה סטנדרטית מודול מותאם אישית
תור שליחה סינכרוני דרך CAgent אסינכרוני, עד 100 מיילים לכל פעימה
סגמנטציה רק לפי קבוצות מסנני AND/OR דינמיים, JOIN עם b_user
מעקב פתיחה/לחיצה לא קיים פיקסל שקוף + הפנייה מחדש
מיילים טרנזקציוניים לא API לאירועים, תבניות עם משתנים
אינטגרציית SMTP רק מובנה אבסטרקציית תחבורה, כל ספק
GDPR / ביטול הרשמה ביטול הרשמה בסיסי קישור ביטול הרשמה, ייצוא, מחיקת נתונים

טעויות אופייניות בפיתוח מודול דוא"ל

  • התעלמות מתורים—שליחה בלולאה מקפיאה את האתר. תמיד השתמשו בתור אסינכרוני.
  • חוסר ניסיונות חוזרים—אם דוא"ל נכשל, חייבים לנסות שוב עד 3 פעמים, אחרת מאבדים מנויים.
  • ללא מעקב—לא ניתן להעריך את יעילות הקמפיין. בנו איסוף סטטיסטיקות מההתחלה.
  • קישור נוקשה ל-SMTP אחד—אם הספק נופל, התפוצה נעצרת. השתמשו בתחבורות גיבוי.

ציר זמן ועלות

שלב זמן
מבנה מודול, טבלאות ORM, מתקין יומיים
תור וסוכני שליחה יומיים
תחבורת SMTP + ספק API אחד יום אחד
מעקב פתיחה ולחיצה יום אחד
סגמנטציה, קבוצות יום אחד
מיילים טרנזקציוניים יום אחד
ממשק ניהול יומיים
ביטול הרשמה, GDPR, בדיקות יום אחד

סה"כ: החל מ-11 ימי עבודה לגרסה בסיסית. חיבור ספקי API נוספים (Mailchimp, UniSender) — +יום אחד לכל אחד.

עלות הפיתוח מחושבת באופן אישי לאחר ניתוח הדרישות שלכם. הזמינו פיתוח מודול היום. קבלו ייעוץ—נעזור לכם לבחור את הפתרון האופטימלי.

להבנה מעמיקה של Bitrix ORM, אנו ממליצים ללמוד את התיעוד הרשמי. כדאי גם לקרוא על פרוטוקול SMTP ו-REST API.