Automatisation Niveau 3 : Architecte
16 / 45

Module 3 · Concevoir pour l'échecEnviron 1 min

Dédoublonner dans n8n

n8n fournit deux outils pour se souvenir de ce qui a déjà été traité.

  • Le nœud Remove Duplicates, opération Remove Items Processed in Previous Executions, avec Keep Items Where sur Value Is New : il écarte tout élément dont la valeur, ici le numéro de commande, a déjà été vue. Il garde par défaut les 10 000 dernières valeurs, pour ce nœud seul ou pour tout le workflow (réglage Scope).
  • Les Data tables, des tables intégrées à n8n, prévues entre autres pour stocker des marqueurs contre les exécutions en double. Vous y notez le numéro de commande, le statut et le numéro de facture.

Reste une course : en mode file d’attente, deux réceptions du même webhook peuvent être traitées au même moment par deux workers. Les deux consultent la table, n’y trouvent rien, et facturent. La parade la plus sûre est une contrainte d’unicité, dans l’ERP (une référence de commande unique) ou dans PostgreSQL :

sql
-- La première exécution insère la ligne et continue ;
-- la seconde n'insère rien, ne reçoit aucune ligne, et s'arrête avant de facturer.
INSERT INTO commandes_traitees (numero_commande, recu_le)
VALUES ($1, now())
ON CONFLICT (numero_commande) DO NOTHING
RETURNING numero_commande;
Ce que conseille n8nLa documentation d’n8n le recommande pour rendre les rejeux sûrs : préférez les opérations qui mettent à jour un enregistrement existant (Append or Update Row dans Google Sheets, Insert or Update dans Postgres) à celles qui en créent un nouveau.