Tutorieln8nClaude12 août 2026 · 11 min
Connecter email, IA et tableau de suivi avec n8n
Une boîte partagée où tout arrive, et rien ne se trace. Voici comment construire une chaîne qui lit chaque message, le classe, propose une réponse et garde une trace exploitable — sans jamais répondre à votre place.
Le problème
Une boîte contact@ reçoit tout : demandes commerciales, questions techniques, factures,
candidatures, spam. Trois personnes y accèdent. Personne ne sait, à la fin du mois, combien de
messages sont restés sans réponse.
Le but de cette chaîne n'est pas de répondre automatiquement. C'est de rendre la boîte lisible et mesurable.
1. Lire les messages sans les perdre
Le nœud Email Trigger (IMAP) relève la boîte. Trois réglages qui évitent les ennuis :
Ne marquez pas comme lu tout de suite. Si le workflow échoue à l'étape suivante, un message marqué lu disparaît de la vue humaine. Marquez à la fin, pas au début.
Filtrez sur la boîte de réception uniquement. Sans cela, une réorganisation de dossiers peut relancer le traitement de milliers d'anciens messages.
Prévoyez la reprise. Notez le dernier identifiant traité dans une variable de workflow. Après une coupure, on reprend là où on s'était arrêté plutôt que tout retraiter.
2. Nettoyer avant de qualifier
Un email brut contient une signature, une chaîne de citations, parfois un avertissement juridique de quinze lignes. Tout cela perturbe la qualification et coûte des jetons.
// Nœud Code — isole le message utile
const brut = $input.first().json.textPlain ?? ''
const coupures = [
/^--\s*$/m, // séparateur de signature
/^Le .+ a écrit\s*:/m, // citation française
/^On .+ wrote\s*:/m, // citation anglaise
/^De\s*:.+$/m, // en-tête de transfert
]
let utile = brut
for (const c of coupures) {
const m = utile.match(c)
if (m?.index !== undefined) utile = utile.slice(0, m.index)
}
return [{
json: {
corps: utile.trim().slice(0, 4000),
expediteur: $input.first().json.from,
sujet: $input.first().json.subject,
recu: $input.first().json.date,
},
}]La limite à 4 000 caractères n'est pas cosmétique : elle borne le coût et écarte les messages anormalement longs, qui sont presque toujours des transferts en chaîne.
3. Qualifier
Tu classes les messages d'une boîte contact partagée.
Réponds UNIQUEMENT en JSON :
{
"categorie": "commercial" | "support" | "administratif" | "candidature" | "indesirable",
"urgence": "haute" | "normale" | "basse",
"action_attendue": "une phrase, 15 mots maximum",
"delai_suggere": "24h" | "72h" | "1 semaine" | "aucun"
}
Règles :
- urgence haute uniquement si un blocage ou une échéance datée est mentionné
- "indesirable" uniquement si le message est clairement une sollicitation de masse
- en cas de doute entre deux catégories, choisis celle qui demande une action humaineLa dernière règle est importante : en cas d'ambiguïté, il vaut mieux qu'un humain regarde un message qui ne le méritait pas, que l'inverse.
4. Tracer — l'étape qui donne sa valeur au reste
Chaque message alimente une ligne du tableau :
| Colonne | Contenu | Pourquoi |
|---|---|---|
| Reçu le | horodatage | mesure du délai |
| Expéditeur | domaine seul | évite de stocker l'adresse complète |
| Catégorie | issue du modèle | volume par type |
| Urgence | issue du modèle | détection des pics |
| Action attendue | issue du modèle | lisible sans ouvrir le mail |
| Délai suggéré | issue du modèle | priorisation |
| Statut | « à traiter » | mis à jour à la main |
| Première réponse le | vide au départ | l'indicateur qui compte |
| Classement corrigé | case à cocher | mesure la qualité du modèle |
Les deux dernières colonnes sont celles qu'on oublie et qui servent le plus. Le délai de première réponse est l'indicateur que vous voudrez montrer dans trois mois. Le taux de correction vous dira si votre prompt est bon.
Ne stockez que le domaine de l'expéditeur. Le nom et l'adresse complète restent dans la boîte email, qui est déjà sécurisée. Un tableau partagé l'est rarement autant.
5. Proposer une réponse, jamais l'envoyer
Pour les catégories courantes, un second agent rédige un brouillon à partir du message et de vos éléments de réponse habituels. Le nœud suivant est Create Draft, jamais Send.
Ajoutez systématiquement en fin de brouillon une liste « à vérifier avant envoi » : les points que le modèle n'a pas pu confirmer. C'est ce qui transforme un brouillon en outil de travail plutôt qu'en texte à relire intégralement.
6. Détecter les messages oubliés
Un nœud Schedule quotidien relit le tableau et signale les lignes dont le statut est « à traiter » au-delà du délai suggéré.
// Nœud Code — messages en retard
const seuils = { '24h': 1, '72h': 3, '1 semaine': 7, 'aucun': 999 }
const maintenant = new Date()
return $input.all()
.filter((l) => l.json.statut === 'à traiter')
.filter((l) => {
const jours = (maintenant - new Date(l.json.recu)) / 86400000
return jours > (seuils[l.json.delai_suggere] ?? 3)
})
.map((l) => ({ json: l.json }))Envoyez ce relevé une fois par jour, à une heure fixe, à une personne nommée. Pas dans un canal général : un rappel adressé à tout le monde n'est adressé à personne.
7. Ce qui casse
Les réponses automatiques d'absence créent des boucles si votre chaîne répond. Comme elle ne
répond pas, le risque est limité — mais elles polluent les statistiques. Filtrez les en-têtes
Auto-Submitted et X-Autoreply.
Les messages en plusieurs parties dont la version texte est vide. Prévoyez un repli sur la version HTML nettoyée.
Le quota d'API atteint un lundi matin, quand le volume est le plus fort. Configurez le retry et une file d'attente.
Le workflow désactivé sans alerte. Comme pour toute chaîne en production : une vérification quotidienne qu'au moins une exécution a eu lieu.
Ce que vous saurez au bout d'un mois
C'est le vrai bénéfice, et il est rarement anticipé : vous aurez pour la première fois des chiffres sur une boîte qui était un trou noir. Volume par catégorie, délai moyen de première réponse, proportion de messages jamais traités.
Ces chiffres justifient les décisions suivantes — recruter, réorganiser, automatiser davantage — bien mieux que n'importe quelle intuition.
Sur les mêmes sujets.
Tutoriel· n8n· ClaudeTransformer un formulaire en chaîne de traitement avec n8nUn formulaire qui dépose un email dans une boîte partagée ne sert à rien. Voici comment le transformer en chaîne complète : réception, qualification p…septembre 202614 min Tutoriel· Claude· IACréer un assistant qui répond à partir de vos documentsUn assistant qui invente des réponses est pire que pas d'assistant du tout. Voici comment en construire un qui cite ses sources, dit quand il ne sait…septembre 202612 min Article· Formation· IAFormer une équipe à l'IA sans créer de confusionLa plupart des formations IA en entreprise produisent de l'enthousiasme pendant trois jours, puis rien. Le problème n'est pas le contenu : c'est qu'on…août 202610 min
Ce sujet vous concerne directement ?
En 45 minutes on regarde si ce cas s'applique chez vous, ce qu'il coûterait, et s'il mérite d'être le premier.