مشکل در اتصال CF7 به Brevo: چرا ایمیل‌های خوش‌آمدگویی ارسال نمی‌شوند؟

فرم تماس ۷ (CF7) شما مخاطبان را به Brevo اضافه می‌کند، اما در ارسال ایمیل‌های خوش‌آمدگویی شکست می‌خورد. شما همه چیز را بررسی کرده‌اید. مخاطبان در لیست شما ظاهر می‌شوند، اما تیم پشتیبانی Brevo هیچ درخواست ایمیلی از سمت سایت شما مشاهده نمی‌کند.

مشکل از تداخل افزونه‌ها نیست؛ بلکه محدودیتِ خودِ اتصالِ داخلی (built-in integration) است.

CF7 برای اضافه کردن مخاطبان به Brevo از یک فراخوانی API استفاده می‌کند. این فراخوانی به endpoint مربوط به مخاطبان (contacts endpoint) متصل می‌شود که به درستی کار می‌کند.

ارسال ایمیل خوش‌آمدگویی به یک فراخوانی API متفاوت نیاز دارد. این فراخوانی باید به endpoint ایمیل‌های تراکنشی (transactional email endpoint) متصل شود. CF7 این فراخوانی دوم را انجام نمی‌دهد. اتصال داخلیِ موجود، صرفاً فاقد این قابلیت است.

چک‌باکس "Send a welcome email" در تنظیمات CF7 گمراه‌کننده است. این گزینه احتمالاً فقط ایمیل‌های تأیید در سطح لیستِ Brevo را فعال می‌کند و قالب تراکنشی سفارشی شما را فعال نمی‌کند.

شما دو راه برای رفع این مشکل دارید.

گزینه ۱: استفاده از یک تابع PHP

شما می‌توانید به رویداد ارسال (submission event) در CF7 متصل شوید (hook). این کار به شما اجازه می‌دهد فراخوانی 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,
    ]);
}

گزینه ۲: استفاده از یک افزونه تخصصی

اگر نمی‌خواهید با کد سر و کار داشته باشید، از افزونه‌ای مانند Contact Form to API استفاده کنید. این افزونه CF7 را مستقیماً از طریق داشبورد شما به endpoint تراکنشی Brevo متصل می‌کند. شما می‌توانید بدون نوشتن کد PHP، فیلدها را نگاشت (map) کرده و ID قالب خود را تنظیم کنید.

یک بررسی نهایی: مطمئن شوید که وضعیت قالب Brevo شما روی "Active" قرار دارد. Brevo ایمیل‌ها را برای قالب‌های در حالت پیش‌نویس (draft) ارسال نمی‌کند.

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