مشكلة في تكامل CF7 مع Brevo: لماذا تفشل رسائل الترحيب الإلكترونية؟
يقوم Contact Form 7 (CF7) الخاص بك بإضافة جهات الاتصال إلى Brevo، ولكنه يفشل في إرسال رسائل الترحيب الإلكترونية. لقد تحققت من كل شيء؛ تظهر جهات الاتصال في قائمتك، ولكن فريق دعم Brevo لا يرى أي طلبات بريد إلكتروني من موقعك.
المشكلة ليست تعارضاً في الإضافات (plugins)، بل هي قصور في التكامل المدمج.
يستخدم CF7 استدعاءً واحداً لـ API لإضافة جهات الاتصال إلى Brevo، حيث يستهدف نقطة نهاية جهات الاتصال (contacts endpoint). وهذا يعمل بشكل جيد.
يتطلب إرسال رسالة ترحيب استدعاءً مختلفاً لـ API، حيث يجب أن يستهدف نقطة نهاية البريد الإلكتروني المعاملاتي (transactional email endpoint). لا يقوم CF7 بهذا الاستدعاء الثاني، فالتكامل المدمج يفتقر ببساطة إلى هذه الميزة.
إن خيار "Send a welcome email" في إعدادات CF7 مضلل؛ فمن المرجح أنه يقوم فقط بتفعيل رسائل التأكيد الخاصة بـ Brevo على مستوى القائمة، ولا يقوم بتفعيل قالب البريد الإلكتروني المعاملاتي المخصص الخاص بك.
لديك طريقتان لإصلاح ذلك.
الخيار 1: استخدام دالة PHP
يمكنك استخدام hook في حدث إرسال 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 مباشرة بنقطة نهاية البريد الإلكتروني المعاملاتي في Brevo عبر لوحة التحكم الخاصة بك، حيث يمكنك ربط الحقول وتعيين معرف القالب (template ID) دون الحاجة لكتابة PHP.
فحص أخير: تأكد من أن حالة قالب Brevo هي "Active". لن يقوم Brevo بإرسال رسائل البريد الإلكتروني للقوالب التي لا تزال في حالة مسودة (draft).