Dolibarr + Sendinblue : comment automatiser vos campagnes e‑mail et gagner un temps précieux
Article technique – 2025
1. Pourquoi marier Dolibarr et Sendinblue ?
| Dolibarr | Sendinblue |
|---|---|
| Gestion complète de la relation client (CRM), des factures, des devis, des stocks, des contacts… | Plateforme d’e‑mailing, d’automatisation marketing, de SMS et de newsletters, avec segmentation fine et reporting détaillé. |
| Interface française, simple à configurer, open‑source. | API REST + webhooks, très riche en fonctionnalités de suivi des campagnes. |
| Pas de connexion native avec les outils d’e‑mailing modernes. | Besoin de solutions tierces pour synchroniser contacts et campagnes. |
| Besoin d’une automatisation (envoi de relances, suivi de devis, confirmation de paiement). | Possède un engine d’automatisation (workflow, triggers, A/B testing). |
En résumé : Dolibarr excelle dans la gestion opérationnelle (ex. : facturation, comptabilité), tandis que Sendinblue excelle dans la communication automatisée. L’interface entre les deux vous évite de devoir saisir les mêmes contacts ou les mêmes statuts deux fois, et vous permet d’engager vos clients au bon moment, sans effort supplémentaire.
2. Les scénarios les plus gagnants pour le combo Dolibarr + Sendinblue
| Scénario | Ce que Dolibarr fait | Ce que Sendinblue fait | Gains de temps (est.) |
|---|---|---|---|
| Relance après devis refusé | Le devis passe à l’état “Refusé” → déclencheur webhook. | Envoi automatisé d’un e‑mail personnalisé avec argumentaire ciblé + lien de re‑essai. | 1 à 2 minutes / relance manuelle → 1 clic automé. |
| Confirmation de paiement | Facture réglée → statut “Payée”. | Envoi d’une newsletter de félicitations + offre d’upgrade. | Suppression de la tâche de suivi manuel du paiement. |
| Migration client vers un nouveau produit | Ajout d’un produit dans le panier → changement de catégorie client. | Série de 3 e‑mails (introduction, tutoriel, offre spéciale). | Pas besoin de créer manuellement le workflow dans Sendinblue. |
| Anniversaire client | Date d’anniversaire stockée dans le contact. | Envoi d’un e‑mail avec cadeau (coupon) programmé le jour J. | Plus de rappel manuel ; campagne parfaitement programmée. |
| Segmentation dynamique | Tags “Prospects”, “Clients Premium”, “Churn Risk”. | Envoi de campagnes ciblées différentes selon le tag. | Gain de segmentation automatisée (plus besoin de créer des listes à la main). |
3. Prérequis techniques
| Élément | Version minimale | Pourquoi |
|---|---|---|
| Dolibarr | 23.0 (ou supérieure) | Gestion natale des contacts et des webhooks à partir de 22.3. |
| PHP | 7.4+ (8.2 recommandé) | Compatibilité avec les SDK modernes de Sendinblue. |
| Base de données | MySQL 5.7+ (ou MariaDB) | Stockage des envois et des métadonnées. |
| Sendinblue account | API v3 activée, clé d’API configurée | Nécessaire pour appeler les endpoints REST. |
| Optionnel | CURL ou Guzzle (extension PHP) | Pour gérer les requêtes sortantes sans serveur externe. |
Si vous êtes chez un hébergeur partagé, assurez‑vous que les extensions openssl et curl sont activées.
4. Mise en place pas‑à‑pas (exemple : envoi d’un e‑mail après validation d’une commande)
Objectif : lorsqu’une commande passe à “Confirmée”, Sendinblue envoie automatiquement une newsletter de bienvenue contenant le bon de réduction.
4.1. Créer le webhook dans Dolibarr
- Menu → « Administration → Webhooks »
- Cliquez « Ajouter un webhook »
- Nom :
OrderConfirmed_To_SendinBlue - URL cible :
https://api.sendinblue.com/v3/sendCampaign(ou endpoint dédié de l’API “Transactionnal Emails” selon votre besoin) - Méthode :
POST - En‑tête :
Authorization: Bearer <votre_clé_API> - Corps (JSON) :
{
"name": "Commande N°${order_number}",
"to": [{ "email": "${contactemail}", "name": "${firstname} ${lastname}" }],
"subject": "Merci pour votre commande !",
"htmlContent": "<p>Bonjour ${firstname}, votre commande <strong>${order_number}</strong> a bien été confirmée. Voici votre bon de réduction :</p><p><a href='${discount_link}'>Code PROMO10</a></p>",
"senderName": "Nom de votre entreprise",
"senderEmail": "contact@votre-entreprise.com"
}
- Nom :
- Paramètre “Condition”: sélectionnez « Champ ‘statut’ = ‘Confirmée’ ».
- Enregistrez.
Note : le placeholder
${field_name}fonctionne grâce au moteur de substitution de Dolibarr (voir l’onglet Paramètres avancés du webhook). Vous pouvez inclure n’importe quel champ du formulaire de commande ou du contact.
4.2. Activer le webhook
- Retournez dans « Administration → Webhooks », cliquez sur l’icône 🔧 du webhook créé et activez‐le.
- Testez immédiatement en créant une commande fictive et en la confirmant. Vous devez recevoir dans votre boîte Sendinblue (ou dans les logs de votre serveur) le payload JSON d’exemple ci‑dessus.
4.3. Créer la campagne dans Sendinblue (optionnel)
- Campagne > “Automation” → “Trigger”
- Sélectionnez le Trigger “Custom Event” (nom :
OrderConfirmed) – cela vous évite d’utiliser l’API directement, vous ne faites qu’appeler le workflow via l’interface.
4.4. Résultat final
- Dolibarr déclenche le webhook → Sendinblue crée un e‑mail automatisé à la volée, insère les variables
${firstname},${order_number},${discount_link}et l’envoie à votre client. - Aucun développeur n’a besoin d’écrire du code supplémentaire ; tout se configure via les écrans de Dolibarr.
5. Astuces avancées pour maximiser la productivité
| Astuce | Description | Gains concrets |
|---|---|---|
| Batch webhook | Au lieu d’un seul payload, envoyez un tableau contenant plusieurs contacts (ex : 5 à 10 commandes en file d’attente) → réduction du nombre de requêtes HTTP. | Diminution de la latence : 1 appel HTTP = 5 e‑mails, temps moyen < 2 s. |
| *Utiliser les Webhooks de réponse** | Si vous avez besoin de la donnée “status‑feedback” (ouverture, clic), renvoyez via le même webhook le résultat de Sendinblue (event.php?email=...) et mettez à jour le champ “campagne‑statut” dans Dolibarr. |
Suivi des KPI sans quitter l’interface Dolibarr. |
| Segmentation par tags dynamique | Créez un champ custom dans Dolibarr “Segment Marketing” (liste déroulante). Lorsqu’un champ change (type_client = "Premium"), déclenchez un webhook qui ajoute le tag correspondant dans Sendinblue (/contact/delete + addContactToSegments). |
Envoi de campagnes ultra‑ciblées sans créer manuellement les listes. |
| Utiliser la fonction Scheduled Events de Sendinblue | Avec le même webhook, déclenchez un Scheduled Event (ex : 7 jours après la commande, envoyer une campagne “upsell”). | Gestion “one‑shot” avancée, pas besoin de boucler dans Dolibarr. |
| Mise en cache des réponses | Store les réponses d’API dans une table Dolibarr sendemail_log afin d’éviter de renvoyer le même e‑mail si la même commande est modifiée plusieurs fois. |
Évite les doublons et le gaspillage de quota Sendinblue. |
| Déploiement multi‑site | Utilisez le même “secret webhook” pour plusieurs boutiques Dolibarr de votre groupe – les demandes sont routées par sous‑domaine vers le même endpoint, avec un paramètre shop_id. |
Consolidation de tout le trafic marketing dans un seul tableau de bord Sendinblue. |
6. Exemple de script PHP minimal (si vous préférez un code autonome plutôt que le webhook)
<?php
require_once '/path/to/dolibarr/class/dolibarr.php';
include_once '/path/to/dolibarr/billet/function.inc.php';
// --- 1. Récupérer le dernier devis validé ---
$devis_id = dolibarr_lastDocId('invoice', 0, "status = 'Paid'");
if (!$devis_id) exit;
// --- 2. Récupérer les contacts ---
$contact_id = order::getContactIdByInvoice($devis_id);
$contact = new Contact($db);
$contact->fetch($contact_id);
// --- 3. Construire le payload Sendinblue ---
$payload = [
'to' => [[
'email' => $contact->email,
'name' => $contact->name
]],
'subject' => 'Votre facture est à jour',
'htmlContent' => '<p>Bonjour '.$contact->name.', votre facture <strong>'. $devis_id .'</strong> a été réglée. Vous trouverez la facture en pièce jointe.</p>',
'attachment' => [
['path' => '/path/to/invoices/'.$devis_id.'.pdf',
'name' => $devis_id . '.pdf']
],
'senderName' => 'Service Facturation',
'senderEmail' => 'facture@votre-entreprise.com'
];
// --- 4. Appel API Sendinblue ---
$curl = curl_init('https://api.sendinblue.com/v3/sendEmail');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER,
['Accept: application/json',
'X-Api-Key: <votre_clé_API>']);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
// --- 5. Log dans Dolibarr ---
$log = new Log('sendinblue');
$log->addEntry('Message', $httpcode . ' - ' . $response);
?>
Encore une fois : ce script n’est qu’un point de départ. L’interface webhook de Dolibarr vous évite le moindre code, mais il est utile si vous avez besoin d’un traitement asynchrone ou d’appels spécifiques (ex. : ajout d’une balise “défaut” selon le pays).
7. Bonnes pratiques & pièges à éviter
| Problème fréquent | Solution |
|---|---|
| Boucle infinie (Dolibarr déclenche un webhook qui à son tour met à jour le même contact, ce qui relance le webhook). | Implémentez une condition d’exclusion (ex. : if (!empty($old_status) && $old_status == $new_status) return;). |
| Quota Sendinblue dépassé (trop de contacts/sendings simultanés). | Limitez le batch size : 100 e‑mails maximum par heure dans les plans Basique, ou utilisez le endpoint “Transactional Email” (plus généreux). |
| Échec du JSON (placeholders non résolus). | Testez le webhook avec le bouton “Test” de la page d’administration. |
| Déclenchement tardif (délais de 30 s sur certains hébergeurs). | Activez le mode “Cron” : créez une tâche planifiée qui intercepte les messages de la queue dolibarr_webhook_queue. |
| Sécurité API (exposition de la clé). | Stockez la clé dans le fichier de configuration de Dolibarr ($conf{/sendinblue_api_key}) et ne jamais la mettre en clair dans le webhook (utilisez les headers au lieu du corps). |
8. Checklist de déploiement (à cocher avant de basculer en production)
| ✅ | Action |
|---|---|
| 1 | Créer la clé API Sendinblue et la placer dans $conf['sendinblue_api_key']. |
| 2 | Configurer le webhook cible dans Dolibarr (URL, méthode, payload). |
| 3 | Tester le webhook avec 10 contacts de test. |
| 4 | Vérifier les logs de Dolibarr (sendinblue.log) et les rapports d’envoi de Sendinblue. |
| 5 | Mettre en place un fallback (ex. : enregistrement en base en cas d’erreur 500). |
| 6 | Activer le mode “Scheduled” si vous utilisez des campagnes différées. |
| 7 | Mettre à jour la documentation interne (qui sont les contacts impactés, quel workflow utilisé). |
| 8 | Planifier une revue mensuelle du taux d’ouverture/click‑through pour ajuster le contenu. |
9. Conclusion
L’intégration Dolibarr + Sendinblue n’est pas seulement une « connexion technique » ; c’est un véritable gain de temps opérationnel :
- Automatisation : chaque changement de statut déclenche un message pertinent, sans aucune saisie manuelle.
- Personnalisation : en combinant les champs de Dolibarr (nom, catégorie, historique d’achat) avec les templates avancés de Sendinblue, vous créez des communications ultra‑ciblées.
- Suivi : grâce aux webhooks et aux logs, vous avez visibilité totale sur les performances de chaque campagne, directement dans votre ERP.
En suivant les étapes décrites (création du webhook, test d’un payload, mise en place d’un trigger Sendinblue), vous passez d’un processus qui prenait 5 minutes par relance à 1 clic totalement automatisé. Vous récupérez ainsi des heures précieuses chaque mois, que vous pouvez réinvestir dans la création de nouveaux produits, le service client, ou… tout simplement, profiter d’un café bien mérité !
Prêt(e) à tester ?
Commencez par un petit scénario de bienvenue (commande confirmée → e‑mail de remerciement) ; une fois que vous avez validé le processus, déployez les autres scénarios les uns après les autres. Vous verrez rapidement combien votre équipe commerciale et marketing sera plus agile.
Vous avez besoin d’un exemple plus précis (ex. : synchronisation des contacts double‑opt‑in, ou création d’un tableau de bord de KPIs) ? N’hésitez pas à me le préciser, je préparerai le guide détaillé adapté à votre configuration.
Bonne intégration ! 🚀