𝗖𝗙𝟳 𝗕𝗿𝗲𝘃𝗼 𝗜𝗻𝘁𝗲𝗴𝗿𝗮𝘁𝗶𝗼𝗻 𝗜𝘀𝘀𝘂𝗲: 𝗪𝗵𝘆 𝗪𝗲𝗹𝗰𝗼𝗺𝗲 𝗘𝗺𝗮𝗶𝗹𝘀 𝗙𝗮𝗶𝗹
آپ کا Contact Form 7 (CF7) Brevo میں کانٹیکٹس شامل تو کر دیتا ہے لیکن ویلکم ای میلز بھیجنے میں ناکام رہتا ہے۔ آپ نے سب کچھ چیک کر لیا ہے۔ کانٹیکٹس آپ کی لسٹ میں نظر آ رہے ہیں۔ Brevo کی سپورٹ ٹیم کو آپ کی سائٹ سے ای میل کی کوئی درخواست موصول نہیں ہو رہی۔
مسئلہ کسی پلگ ان کے ٹکراؤ (conflict) کا نہیں ہے۔ یہ بلٹ ان (built-in) انٹیگریشن کی ایک حد ہے۔
CF7، Brevo میں کانٹیکٹس شامل کرنے کے لیے ایک API کال استعمال کرتا ہے۔ یہ contacts endpoint پر کام کرتا ہے۔ یہ بالکل ٹھیک کام کرتا ہے۔
ویلکم ای میل بھیجنے کے لیے ایک مختلف API کال کی ضرورت ہوتی ہے۔ اسے transactional email endpoint پر جانا چاہیے۔ CF7 یہ دوسری کال نہیں کرتا ہے۔ بلٹ ان انٹیگریشن میں بس اس فیچر کی کمی ہے۔
CF7 سیٹنگز میں "Send a welcome email" کا چیک باکس گمراہ کن ہے۔ یہ غالباً صرف Brevo کی لسٹ لیول کی کنفرمیشن ای میلز کو ہی ٹرگر کرتا ہے۔ یہ آپ کے کسٹم ٹرانزیکشنل ٹیمپلیٹ (transactional template) کو ٹرگر نہیں کرتا۔
اس مسئلے کو حل کرنے کے دو طریقے ہیں۔
آپشن 1: PHP فنکشن کا استعمال کریں
آپ CF7 سبمیشن ایونٹ (submission event) میں ہک (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,
]);
}
آپشن 2: ایک مخصوص پلگ ان کا استعمال کریں
اگر آپ کوڈ مینیج نہیں کرنا چاہتے، تو Contact Form to API جیسا پلگ ان استعمال کریں۔ یہ آپ کے ڈیش بورڈ کے ذریعے CF7 کو براہ راست Brevo transactional endpoint سے جوڑ دیتا ہے۔ آپ بغیر PHP لکھے اپنے فیلڈز کو میپ (map) کر سکتے ہیں اور اپنی ٹیمپلیٹ آئی ڈی (template ID) سیٹ کر سکتے ہیں۔
ایک آخری چیک: یقینی بنائیں کہ آپ کے Brevo ٹیمپلیٹ کا اسٹیٹس "Active" ہے۔ Brevo ڈرافٹ ٹیمپلیٹس کے لیے ای میلز نہیں بھیجے گا۔