FlowKit

Automatiser les relances de dossiers incomplets avec n8n : cron, Supabase et IA

Publié le 18 juillet 2026 · 7 min de lecture

Dans un cabinet d'audit, un service conformité ou une équipe RH qui collecte des pièces justificatives, le scénario est toujours le même : un dossier est ouvert, la moitié des documents arrive dans les 48 heures, et le reste s'éternise pendant des semaines. Pas parce que les gens sont de mauvaise volonté — simplement parce que personne, en interne, n'a le temps de relancer méthodiquement chaque dossier en souffrance. Les études internes des cabinets qui suivent ce genre d'indicateur convergent toutes autour d'un même ordre de grandeur : entre 30 et 50 % des dossiers démarrés ne se terminent jamais sans relance active. C'est le point mort le plus rentable à automatiser, et pourtant l'un des plus négligés.

n8n permet de construire ce filet de sécurité en une seule après-midi : un workflow qui tourne chaque matin ouvré, identifie les dossiers incomplets, fait rédiger une relance personnalisée par un LLM, l'envoie, trace la date, puis vous résume la tournée sur Slack. Voici l'architecture complète, nœud par nœud.

Pourquoi la relance manuelle échoue toujours

Deux problèmes s'additionnent. D'abord la charge mentale : relancer suppose de se souvenir qui a été contacté, quand, et pour dire quoi — une liste qui grandit plus vite qu'elle ne se vide dans un agenda déjà plein. Ensuite le ton : l'automatisation naïve (un email générique envoyé en boucle par un cron basique) irrite plus qu'elle ne relance, précisément parce qu'elle est identique pour tout le monde et qu'on la repère en une seconde.

La solution n'est pas de choisir entre les deux (relance humaine soignée mais irrégulière, ou relance automatique régulière mais robotique) — elle consiste à automatiser la régularité et à confier la rédaction à un modèle de langage qui a accès au contexte réel du dossier.

Architecture du workflow

Le pipeline tient en six étapes, toutes déclenchées automatiquement :

  1. Déclencheur cron — chaque matin ouvré à 9 h.
  2. Lecture Supabase — récupère les dossiers au statut incomplet.
  3. Boucle (Split In Batches) — traite les dossiers un par un.
  4. Rédaction IA — un LLM compose l'email à partir du contexte du dossier.
  5. Envoi + traçabilité — email SMTP, puis mise à jour de last_reminder_at.
  6. Résumé Slack — un message de synthèse une fois la tournée terminée.

Étape 1 — Un cron qui respecte les jours ouvrés

Le nœud Schedule Trigger se règle avec l'expression cron 0 9 * * 1-5 : tous les jours de semaine à 9 h, jamais le week-end. C'est un détail qui compte plus qu'il n'y paraît — une relance reçue un dimanche matin dessert le propos et donne une image négligée de votre process, même quand le fond du message est irréprochable.

Étape 2 — Récupérer les dossiers incomplets dans Supabase

Un nœud Supabase interroge la table dossiers filtrée sur statut = 'incomplet'. Si vous démarrez de zéro, la structure minimale ressemble à ceci :

create table dossiers (
  id bigserial primary key,
  nom text not null,
  email text not null,
  statut text default 'incomplet',
  documents_manquants text,
  created_at timestamptz default now(),
  last_reminder_at timestamptz
);

Pour espacer les relances au lieu de harceler le même dossier chaque matin, ajoutez un filtre sur last_reminder_at (par exemple last_reminder_at is null or last_reminder_at < now() - interval '3 days') directement dans la requête Supabase — le nœud ne remonte alors que les dossiers réellement mûrs pour une nouvelle relance.

Étape 3 — Traiter un dossier à la fois

Le nœud Split In Batches (taille de lot 1) transforme la liste de dossiers en boucle séquentielle : rédaction, envoi et traçabilité se font dossier par dossier, avant de revenir en tête de boucle jusqu'à épuisement de la liste. C'est ce qui garantit qu'un email raté sur un dossier n'empêche pas le traitement des suivants.

Étape 4 — La rédaction par IA, le cœur du workflow

Un nœud Chain LLM (branché sur un sous-nœud modèle de chat, par exemple lmChatOpenAi) reçoit le contexte du dossier — nom, ancienneté, documents manquants, nombre de relances déjà envoyées — et rédige l'email. Un prompt système simple mais efficace :

Tu rédiges une relance email courtoise et brève pour un dossier incomplet.
Contexte : {{ $json.nom }}, dossier ouvert le {{ $json.created_at }},
documents manquants : {{ $json.documents_manquants }},
nombre de relances précédentes : {{ $json.nb_relances }}.

Consignes :
- Ton professionnel et bienveillant, jamais culpabilisant.
- Rappelle précisément ce qui manque, sans lister l'historique complet.
- Si nb_relances >= 2, adopte un ton légèrement plus direct sans devenir sec.
- Une signature générique en fin de message, pas de fioritures.

C'est cette personnalisation qui change la donne : deux destinataires ne reçoivent jamais le même texte, alors qu'un email à trous classique se repère en un coup d'œil et finit ignoré. Pour les bases de la connexion entre n8n et un fournisseur de modèle, notre guide connecter Claude ou GPT à n8n détaille le paramétrage du credential et le choix du modèle.

Étape 5 — Envoyer et tracer

Un nœud Send Email (SMTP) envoie le message généré, avec une adresse d'expéditeur sur votre propre domaine — la délivrabilité et l'image professionnelle en dépendent directement (pensez SPF/DKIM configurés côté DNS). Immédiatement après, un second nœud Supabase met à jour last_reminder_at sur le dossier concerné : c'est ce champ, combiné au filtre de l'étape 2, qui empêche les doubles relances et constitue la traçabilité de l'ensemble.

Étape 6 — Un résumé, pas une notification par dossier

Une fois la boucle terminée (branche done du Split In Batches), un nœud Slack poste un récapitulatif de la tournée : nombre de relances envoyées, éventuels échecs. Un seul message par matin, pas une notification par dossier — la supervision doit rester lisible, pas devenir elle-même une source de bruit.

Aller plus loin

Quelques ajustements transforment un bon workflow en un excellent :

  • Escalade progressive du ton. En passant le compteur de relances au prompt, la troisième relance peut légitimement être plus directe que la première, sans jamais devenir agressive — c'est justement le genre de nuance qu'un modèle de langage gère bien mieux qu'un modèle d'email statique.
  • Canal alternatif pour les destinataires peu réactifs à l'email. Basculer une relance vers SMS ou WhatsApp après deux tentatives email restées sans effet augmente sensiblement le taux de réponse pour certains publics.
  • Alerte dédiée en cas d'échec d'envoi. Un Error Workflow séparé, déclenché uniquement quand un envoi échoue réellement, évite de découvrir un problème SMTP trois semaines plus tard. Notre guide gérer les erreurs dans n8n explique comment le brancher proprement, avec retry et alerte Slack.
  • Auto-hébergement si le volume de dossiers est sensible. Pour des données RGPD sensibles (dossiers RH, pièces d'identité), garder n8n sur votre propre infrastructure plutôt qu'en cloud managé peut être un prérequis de conformité — notre comparatif n8n self-hosted ou cloud vous aide à trancher.

Les erreurs qui coûtent une soirée de debug

  • Oublier le filtre sur last_reminder_at : sans lui, le même dossier reçoit une relance identique chaque matin, ce qui ruine instantanément la crédibilité du dispositif.
  • Un prompt trop générique : sans le contexte précis du dossier (documents manquants, nombre de relances), le LLM produit un texte plausible mais insuffisamment ciblé — la personnalisation est tout l'intérêt de l'approche.
  • Pas de gestion d'erreur sur l'envoi SMTP : un souci de credential ou de quota qui passe inaperçu pendant des jours, alors qu'une alerte Slack immédiate suffit à le corriger dans l'heure.
  • Boucle sans traçabilité : mettre à jour last_reminder_at après l'envoi effectif, jamais avant — sinon un échec silencieux se traduit par un dossier qu'on croit relancé sans qu'il l'ait réellement été.

Gagner l'après-midi

Construire ce pipeline de zéro — table Supabase, cron, boucle, prompt calibré, traçabilité, résumé Slack — prend facilement une demi-journée quand on découvre les nœuds n8n concernés. Le Pack Conformité & Audit (149 €) livre ce workflow de relances prêt à importer, aux côtés d'un bot de questionnaire, d'un enregistrement d'audit trail dans Supabase et d'un rapport de synthèse généré par IA — les quatre briques qui couvrent la collecte de dossiers de bout en bout. Vous connectez vos credentials, vous adaptez le prompt à votre ton de marque, et la première tournée de relances part dès le lendemain matin ouvré.

Une fois en place, ce type d'automatisation s'améliore par petites touches : un filtre affiné, un canal ajouté, une escalade mieux dosée. C'est exactement le genre de tâche répétitive et sensible au détail où n8n et un LLM, combinés, font gagner des heures chaque semaine sans jamais sacrifier la qualité de la relation client.

FAQ

Questions fréquentes

Combien de temps avant de relancer un dossier une deuxième fois ?

Il n'y a pas de règle universelle, mais un espacement de 3 à 5 jours ouvrés entre deux relances évite l'effet spam tout en gardant le dossier vivant. Filtrez sur last_reminder_at pour l'appliquer : le node Supabase ne remonte que les dossiers dont la dernière relance date de plus de N jours.

Le ton généré par l'IA est-il vraiment différent à chaque envoi ?

Oui, à condition d'injecter le contexte du dossier dans le prompt (nom, ancienneté, nombre de relances déjà envoyées). Le modèle rédige alors un email spécifique à chaque destinataire plutôt qu'un texte à trous : deux personnes ne reçoivent jamais la même formulation, même si le fond du message reste cohérent avec votre ton de marque.

Que se passe-t-il si l'envoi d'email échoue au milieu de la boucle ?

Sans précaution, le Split In Batches passe simplement au dossier suivant et le champ last_reminder_at du dossier en échec n'est jamais mis à jour — il sera donc relancé le lendemain, ce qui est un comportement raisonnable par défaut. Pour être notifié de l'échec plutôt que de le découvrir a posteriori, branchez un Error Workflow dédié (voir notre guide sur la gestion des erreurs n8n).

Bundle FlowKit Complet

269 €