בעיית אינטגרציה בין CF7 ל-Brevo: מדוע אימיילי ברוכים הבאים נכשלים

ה-Contact Form 7 (CF7) שלך מוסיף אנשי קשר ל-Brevo אך נכשל בשליחת אימיילי ברוכים הבאים. בדקת הכל. אנשי הקשר מופיעים ברשימה שלך. צוות התמיכה של Brevo לא רואה בקשות אימייל מהאתר שלך.

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

CF7 משתמש בקריאת API אחת כדי להוסיף אנשי קשר ל-Brevo. היא פונה ל-contacts endpoint. זה עובד מצוין.

שליחת אימייל ברוכים הבאים דורשת קריאת API שונה. היא חייבת לפנות ל-transactional email endpoint. CF7 אינו מבצע את הקריאה השנייה הזו. פשוט חסרה לאינטגרציה המובנית התכונה הזו.

תיבת הסימון "Send a welcome email" בהגדרות CF7 מטעה. סביר להניח שהיא מפעילה רק את אימיילי האישור של Brevo ברמת הרשימה. היא אינה מפעילה את תבנית ה-transactional המותאמת אישית שלך.

יש לך שתי דרכים לפתור זאת.

אפשרות 1: שימוש בפונקציית PHP

ניתן להשתמש ב-hook לאירוע השליחה (submission event) של CF7. זה מאפשר לך לבצע את קריאת ה-API הנדרשת באופן ידני.

השתמש במבנה הקוד הבא:

add_action('wpcf7_before_send_mail', 'send_brevo_welcome_email');

function send_brevo_welcome_email($contact_form) {
    if ((int) $contact_form->id() !== YOUR_FORM_ID) return;

    $submission = WPCF7_Submission::get_instance();
    if (!$submission) return;

    $data = $submission->get_posted_data();
    $email = sanitize_email($data['your-email'] ?? '');
    $name = sanitize_text_field($data['your-name'] ?? '');

    if (empty($email)) return;

    $api_key = defined('BREVO_API_KEY') ? BREVO_API_KEY : '';
    $template_id = 12; 

    wp_remote_post('https://api.brevo.com/v3/smtp/email', [
        'headers' => [
            'api-key' => $api_key,
            'Content-Type' => 'application/json',
        ],
        'body' => wp_json_encode([
            'templateId' => $template_id,
            'to' => [['email' => $email, 'name' => $name]],
            'params' => ['FIRSTNAME' => $name],
        ]),
        'timeout' => 15,
    ]);
}

אפשרות 2: שימוש בתוסף ייעודי

אם אינך רוצה לנהל קוד, השתמש בתוסף כמו Contact Form to API. הוא מחבר את CF7 ישירות ל-transactional endpoint של Brevo דרך לוח הבקרה שלך. אתה ממפה את השדות שלך ומגדיר את ה-template ID שלך מבלי לכתוב PHP.

בדיקה אחרונה: וודא שסטטוס התבנית ב-Brevo הוא "Active". Brevo לא ישלח אימיילים עבור תבניות במצב טיוטה (draft).

Source: https://dev.to/rahul_sharma_15bd129bc69e/cf7-brevo-integration-adds-contacts-but-never-sends-the-welcome-email-here-is-why-1e18