Cet article décrit les exigences techniques d’envoi d’emails marketing transactionnels et promotionnels pour une boutique e-commerce en 2026 : authentification SPF/DKIM/DMARC, conformité aux exigences Google/Yahoo/Microsoft pour expéditeurs en masse, configuration WooCommerce avec un fournisseur SMTP transactionnel, séquences automatisées par hooks, et impact d’Apple Mail Privacy Protection sur les métriques.
1 — Exigences d’authentification 2026
Depuis février 2024 (Google, Yahoo) et mai 2025 (Microsoft), les opérateurs de messagerie majeurs imposent trois enregistrements DNS pour tout expéditeur, et durcissent les exigences au-delà de 5 000 emails/jour vers leurs utilisateurs.
| Volume | Exigence |
|---|---|
| Tout volume | SPF + DKIM + DMARC publiés et alignés |
| ≥ 5 000 emails/jour | Désinscription en un clic (RFC 8058 List-Unsubscribe-Post: List-Unsubscribe=One-Click), taux de plainte spam < 0,30 %, DMARC p=quarantine minimum recommandé |
Un échec d’authentification ne classe plus l’email en spam : il est rejeté au niveau SMTP avec un bounce 5xx. Le destinataire ne reçoit rien et le score d’expéditeur de votre domaine se dégrade.
2 — Configurer SPF, DKIM, DMARC
SPF — TXT à la racine du domaine, liste les serveurs autorisés à envoyer pour ce domaine. Exemple avec Brevo et Google Workspace :
# Type TXT — Nom : @ — Valeur :
v=spf1 include:spf.brevo.com include:_spf.google.com -all
Limite : 10 lookups DNS maximum (RFC 7208). Au-delà, l’enregistrement est en permerror.
DKIM — paire de clés signant numériquement chaque email. La clé publique est publiée dans le DNS sous un sélecteur fourni par le provider :
# Type TXT — Nom : mail._domainkey — Valeur fournie par Brevo/Mailchimp :
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQ...
Chaque provider d’envoi (Brevo, Mailchimp, MailerLite, Postmark) fournit son propre couple sélecteur+clé. Ne pas mélanger.
DMARC — TXT sur _dmarc, indique aux récepteurs quoi faire si SPF ou DKIM échouent.
# Type TXT — Nom : _dmarc — Valeur :
v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@votre-domaine.com; pct=100; aspf=s; adkim=s
Politique de progression recommandée : p=none deux à quatre semaines pour collecter les rapports rua, identifier tous les expéditeurs légitimes (CRM, facturation, marketing, transactionnel), puis passer à p=quarantine et enfin p=reject une fois la base stabilisée.
Pour parser les rapports XML reçus chaque jour, utiliser parsedmarc (open-source) ou un service géré comme dmarcian, EasyDMARC ou Postmark DMARC Digests (gratuit jusqu’à 10 000 rapports/mois).
3 — Choix d’un fournisseur SMTP/marketing
| Provider | Plan gratuit | Prix premier palier | Limite gratuite |
|---|---|---|---|
| Brevo (ex-Sendinblue) | Oui | 9 EUR/mois (5 000 emails) | 300 emails/jour |
| MailerLite | Oui | 9 EUR/mois (500 contacts, illimité) | 1 000 contacts, 12 000 emails/mois |
| Mailchimp | Oui | 13 USD/mois (500 contacts) | 500 contacts, 1 000 emails/mois |
| Postmark (transactionnel uniquement) | 100 emails/mois | 15 USD/mois (10 000 emails) | 100/mois |
| Resend (transactionnel + dev-friendly) | 3 000 emails/mois | 20 USD/mois (50 000 emails) | 3 000/mois |
Pour une PME ouest-africaine démarrant : Brevo couvre marketing + transactionnel sur un même outil ; Resend ou Postmark sont préférables pour des projets dev (Next.js, Laravel, WordPress) où l’API REST est appelée depuis le code.
4 — Connecter Brevo à WooCommerce
Trois étapes pour router les emails transactionnels WooCommerce (confirmation commande, facture, expédition) via Brevo SMTP plutôt que la fonction wp_mail() par défaut.
- Installer le plugin officiel « Brevo for WooCommerce » depuis le répertoire WordPress.
- Dans Brevo > Profil > SMTP & API, créer une clé API v3 et la coller dans les réglages du plugin.
- Activer « Override WooCommerce email » pour rediriger les emails transactionnels par l’API Brevo.
Pour un envoi via l’API directement (sans plugin), depuis functions.php :
add_filter('pre_wp_mail', function($null, $atts) {
$r = wp_remote_post('https://api.brevo.com/v3/smtp/email', array(
'headers' => array(
'api-key' => getenv('BREVO_API_KEY'),
'Content-Type' => 'application/json',
),
'body' => wp_json_encode(array(
'sender' => array('name' => 'Boutique', 'email' => 'noreply@votre-domaine.com'),
'to' => array(array('email' => $atts['to'])),
'subject' => $atts['subject'],
'htmlContent' => $atts['message'],
)),
));
return !is_wp_error($r) && wp_remote_retrieve_response_code($r) === 201;
}, 10, 2);
Note : pre_wp_mail existe depuis WordPress 5.7. Renvoyer un booléen ou un WP_Error court-circuite l’envoi PHPMailer par défaut.
5 — Séquences automatisées par hooks WooCommerce
Les hooks d’événement déclenchent l’envoi de séquences en temps réel sans cron.
// Email post-achat 7 jours après livraison (statut "completed")
add_action('woocommerce_order_status_completed', function($order_id) {
wp_schedule_single_event(time() + 7 * DAY_IN_SECONDS, 'envoyer_demande_avis', array($order_id));
});
add_action('envoyer_demande_avis', function($order_id) {
$order = wc_get_order($order_id);
$email = $order->get_billing_email();
// Appel API Brevo template ID 12 (à créer dans Brevo)
wp_remote_post('https://api.brevo.com/v3/smtp/email', array(
'headers' => array('api-key' => getenv('BREVO_API_KEY'), 'Content-Type' => 'application/json'),
'body' => wp_json_encode(array(
'to' => array(array('email' => $email)),
'templateId' => 12,
'params' => array('order_id' => $order_id, 'first_name' => $order->get_billing_first_name()),
)),
));
});
Pour la relance panier abandonné, WooCommerce ne fournit pas de hook natif. Soit utiliser un plugin (CartFlows, Retainful, Brevo for WooCommerce), soit hooker woocommerce_after_cart_item_quantity_update et wp_logout pour stocker l’état du panier en base et le récupérer via cron horaire.
6 — Apple Mail Privacy Protection (MPP) et métriques
Depuis iOS 15 (septembre 2021), Apple charge automatiquement les pixels de tracking dans Apple Mail dès la réception, avec un proxy. Conséquence : pour tout abonné iOS qui utilise l’app Mail native (typiquement 30 à 50 % d’une base e-commerce francophone), le taux d’ouverture remonté est 100 %, indépendamment de l’ouverture réelle.
Les conséquences en 2026 :
- Le taux d’ouverture (open rate) est devenu une métrique non fiable. Ne pas l’utiliser pour A/B tester un objet d’email.
- Les segments « non-ouvreurs » sont surestimés en faux positifs, sous-estimés en faux négatifs.
- Les métriques fiables sont les clics (CTR), les conversions (revenue per email), et le taux de désinscription.
Configurer A/B testing sur les clics et non sur les ouvertures dans Brevo > Tests A/B > Métrique d’évaluation.
7 — Liste de désinscription en un clic (RFC 8058)
Exigence Google/Yahoo/Microsoft pour les expéditeurs en masse : un en-tête HTTP List-Unsubscribe-Post permet la désinscription en un seul POST sans page intermédiaire.
List-Unsubscribe: <https://votre-domaine.com/unsubscribe?id=ABC123>, <mailto:unsubscribe@votre-domaine.com?subject=unsubscribe>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
Brevo, MailerLite, Mailchimp ajoutent ces en-têtes automatiquement à condition de cocher l’option dans les paramètres de campagne. Pour un envoi via API, les ajouter explicitement :
{
"headers": {
"List-Unsubscribe": "<https://...>, <mailto:unsubscribe@...>",
"List-Unsubscribe-Post": "List-Unsubscribe=One-Click"
}
}
L’absence de cet en-tête au-delà de 5 000 destinataires/jour vers Gmail entraîne un déclassement progressif puis un blocage SMTP.
8 — Suivi des plaintes spam (FBL et Google Postmaster Tools)
Maintenir le taux de plainte sous 0,30 % nécessite une boucle de feedback (FBL).
- Google Postmaster Tools (
postmaster.google.com) — taux de plainte, IP/domaine reputation, taux de spam. Vérification du domaine via TXT. - Microsoft SNDS (
sendersupport.olc.protection.outlook.com) — équivalent pour Outlook/Hotmail. - Yahoo Sender Hub (
senders.yahooinc.com) — récent (2024).
Les FBL Brevo/Mailchimp parsent ces signaux et désinscrivent automatiquement les contacts qui marquent comme spam. Vérifier dans Statistiques > Plaintes que le seuil reste sous 0,1 % en pratique courante (la marge de 0,30 % est un plafond de sécurité, pas une cible).