Problème d'intégration CF7 Brevo : Pourquoi les e-mails de bienvenue ne partent pas
Votre Contact Form 7 (CF7) ajoute des contacts à Brevo mais ne parvient pas à envoyer les e-mails de bienvenue. Vous avez tout vérifié. Les contacts apparaissent bien dans votre liste. L'équipe d'assistance de Brevo ne voit aucune demande d'e-mail provenant de votre site.
Le problème ne provient pas d'un conflit de plugin. Il s'agit d'une limitation de l'intégration native.
CF7 utilise un seul appel API pour ajouter des contacts à Brevo. Il cible l'endpoint « contacts ». Cela fonctionne parfaitement.
L'envoi d'un e-mail de bienvenue nécessite un appel API différent. Il doit cibler l'endpoint des e-mails transactionnels. CF7 n'effectue pas ce second appel. L'intégration native manque tout simplement de cette fonctionnalité.
La case à cocher « Send a welcome email » dans les paramètres de CF7 est trompeuse. Elle ne déclenche probablement que les e-mails de confirmation au niveau de la liste de Brevo. Elle ne déclenche pas votre modèle transactionnel personnalisé.
Vous avez deux solutions pour corriger cela.
Option 1 : Utiliser une fonction PHP
Vous pouvez utiliser un hook sur l'événement de soumission de CF7. Cela vous permet d'envoyer manuellement l'appel API requis.
Utilisez cette structure de code :
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,
]);
}
Option 2 : Utiliser un plugin spécialisé
Si vous ne souhaitez pas gérer de code, utilisez un plugin comme Contact Form to API. Celui-ci connecte CF7 directement à l'endpoint transactionnel de Brevo via votre tableau de bord. Vous mappez vos champs et définissez votre ID de modèle sans écrire de PHP.
Une dernière vérification : assurez-vous que le statut de votre modèle Brevo est « Active ». Brevo n'enverra pas d'e-mails pour les modèles en mode brouillon (draft).