Comment envoyer des emails transactionnels HubSpot depuis votre propre domaine (et pourquoi ça change tout)
Pourquoi vos emails transactionnels passent inaperçus (et ce que ça coûte à votre marque)
Tu as passé des heures à peaufiner tes workflows HubSpot. Des séquences de bienvenue qui s'étalent sur des semaines. Des rappels de panier abandonné. Des emails de réinitialisation de mot de passe qui sont même ouverts.
Mais voici le problème : quand ton client reçoit ce mail de réinitialisation, sa boîte mail affiche peut-être un avertissement signé Google : « Gmail n'a pas pu vérifier que yahoo.com a bien envoyé ce message ».
Pas exactement l'image de marque que tu voulais projeter.
Le cœur du problème : une incohérence d'authentification
Le système d'emails transactionnels de HubSpot fonctionne bien. Jusqu'au moment où tu regardes les en-têtes d'authentification.
Par défaut, HubSpot signe ces emails avec ses propres clés DKIM. Les tiennes, personne n'y touche. Résultat : l'adresse From affiche contact@tonsite.com, mais la signature DKIM indique header.d=hubspot.com.
Ça s'appelle un échec d'alignement DMARC. Et pour les emails transactionnels — ceux qui comptent le plus parce que les utilisateurs agissent dessus — c'est un vrai souci.
Marketing vs. Transactionnel : deux mondes différents
Avant de corriger quoi que ce soit, comprenons ce qui les distingue.
Les emails marketing HubSpot transitent par leur infrastructure dédiée. L'équipe deliverability gère la réputation IP, le warming, les sender scores. Pour des campagnes de masse, ça fait le travail.
Les emails transactionnels, c'est autre chose. Ce sont des communications un-à-un, déclenchées par les actions utilisateur : réinitialisation de mot de passe, confirmation de commande, reçus, formulaires. Les utilisateurs s'attendent à recevoir ces messages directement de ta boîte. Et les clients mail les traitent différemment — les contrôles d'authentification sont plus stricts parce que ces emails sont des cibles privilégiées pour le phishing.
Quand HubSpot les expédie avec sa propre signature, tu empruntes sa réputation au lieu de construire la tienne.
MailKite : сделай confiance à ton domaine
MailKite est un service SMTP relay qui se place entre ton application et les serveurs de réception. Le point clé : il signe chaque email avec ta clé DKIM, pas celle de HubSpot.
Concrètement :
- L'alignement DMARC passe. Ton domaine From correspond à ta signature DKIM.
- Ta réputation se construit. Chaque email envoyé renforce ton historique d'envoi.
- Logs et analytics complets. Tu vois exactement quels emails sont allés où et leur statut.
- Retry et failovers. Si le serveur du destinataire est temporairement indisponible, MailKite gère la réémission.
L'installation est étonnamment simple.
Configurer HubSpot avec ton domaine : étape par étape
Étape 1 : Réclame ton domaine chez MailKite
Inscris-toi sur MailKite et ajoute ton domaine d'envoi. Tu auras besoin d'accéder à tes paramètres DNS. Si tu gères ton DNS chez NameOcean, c'est encore plus rapide depuis notre dashboard.
MailKite te fournira trois enregistrements DNS à publier :
- Un MX pour le routage des emails entrants
- Un TXT pour SPF
- Un DKIM pour la signature
Une fois la propagation faite (5 à 30 minutes en général), ton domaine est vérifié.
Étape 2 : Récupère tes identifiants SMTP
Dans le dashboard MailKite, crée un utilisateur SMTP. Note l'adresse serveur, le port et la clé API. Tu en auras besoin pour HubSpot.
Voici ce que tu cherches :
Serveur : smtp.mailkite.dev
Port : 587
Identifiant : ton username MailKite
Mot de passe : ta clé API (commence par mk_live_)
Sécurité : STARTTLS requis
Étape 3 : Configure le SMTP Relay dans HubSpot
Dans HubSpot, va dans Settings → Transactional Email. La configuration SMTP se trouve dans les paramètres de ton domaine d'envoi.
Colle tes identifiants MailKite. HubSpot enverra un email de test — assure-toi de le recevoir.
Étape 4 : Vérifie tes en-têtes d'authentification
Ne saute pas cette étape. Envoie un email transactionnel de test via ton workflow HubSpot. Puis ouvre-le dans Gmail et vérifie les en-têtes.
Cherche ceci :
Authentication-Results: mx.google.com;
dkim=pass header.d=tonsite.com;
spf=pass;
dmarc=pass
Les trois doivent afficher pass. Si dkim indique header.d=hubspot.com, quelque chose ne colle pas dans ta configuration. Vérifie que ton domaine d'envoi dans HubSpot correspond exactement à ton domaine vérifié chez MailKite.
SMTP vs. API : quelle option choisir ?
HubSpot propose deux méthodes pour envoyer des emails transactionnels. Voici ce qui compte en pratique :
Choisis SMTP quand :
- Tu veux une config simple qui fonctionne automatiquement pour tous les emails HubSpot
- Tu envoies depuis des systèmes externes (Laravel, WordPress, CRM custom)
- Tu veux les logs et la logique de retry de MailKite pour chaque email
- Tu n'as pas besoin du tracking open/click natif de HubSpot pour ces messages
Choisis l'API quand :
- Tu as besoin des analytics open/click natives de HubSpot
- Tu veux que chaque email apparaisse automatiquement dans la timeline HubSpot
- Tu construis une intégration custom où les événements email déclenchent d'autres workflows
Honnêtement ? SMTP est plus simple à maintenir. Une fois configuré, chaque email transactionnel passe par MailKite sans code supplémentaire. L'API t'oblige à mettre à jour chaque appel d'envoi.
Bonus : Récupère les réponses et envoie-les dans HubSpot
Là où ça devient intéressant. Quand tes clients répondent à tes emails transactionnels, ces réponses doivent aller quelque part. Avec le routage inbound de MailKite, tu peux poster les réponses reçues vers un webhook.
Tu veux que ces réponses soient attachées au bon contact dans HubSpot ? Voici un Cloudflare Worker qui fait exactement ça :
export default {
async fetch(request, env) {
if (request.method !== "POST") return new Response("OK");
const { from, subject, text } = await request.json();
// Trouver le contact correspondant dans HubSpot
const searchRes = await fetch(
"https://api.hubapi.com/crm/v3/objects/contacts/search",
{
method: "POST",
headers: {
Authorization: "Bearer " + env.HUBSPOT_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
filterGroups: [{
filters: [{
propertyName: "email",
operator: "EQ",
value: from,
}]
}],
properties: ["email", "firstname", "lastname"],
}),
}
);
const { results } = await searchRes.json();
if (!results.length) return new Response('{"ok":true}', { status: 200 });
const contactId = results[0].id;
// Attacher la réponse comme note
await fetch(
"https://api.hubapi.com/crm/v3/objects/notes",
{
method: "POST",
headers: {
Authorization: "Bearer " + env.HUBSPOT_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
properties: {
hs_note_body: `Réponse à : ${subject}\n\n${text}`,
hs_timestamp: Date.now(),
},
associations: [{
to: { id: contactId },
types: [{
associationCategory: "HUBSPOT_DEFINED",
associationTypeId: 202,
}],
}],
}),
}
);
return new Response('{"ok":true}', { status: 200 });
},
};
Maintenant chaque réponse client devient une note sur son enregistrement contact dans HubSpot — avec le sujet original inclus.
Vue d'ensemble : l'email fait partie de ta stratégie domaine
Ce n'est pas qu'une question de deliverability. Ton domaine, c'est ton identité numérique. Chaque email, chaque requête DNS, chaque vérification d'authentification construit — ou érode — la confiance dans cette identité.
Quand tu routes tes emails transactionnels via ton propre domaine signé DKIM :
- Gmail et Outlook font davantage confiance à tes messages
- Ta réputation d'expéditeur grandit indépendamment de toute plateforme
- Tes clients voient ta marque, pas celle d'un prestataire
- Ton domaine prend de la valeur en tant qu'actif
Chez NameOcean, on voit deux types de clients. Ceux qui treat les domaines comme des achats jetables. Et ceux qui les comprennent comme de l'infrastructure. L'authentification email — DMARC, DKIM, SPF — est aussi fondamentale que la disponibilité de ton site.
Tes emails transactionnels sont souvent les communications les plus importantes que tu envoies. Ils méritent le même soin que tes landing pages et ton produit lui-même.