n8n
Vos propres flux avec le nœud Cord, ou avec le nœud HTTP pour n’importe quel endpoint.
Ce que fait l’intégration
n8n se connecte à Cord de deux façons. Le nœud Cord (n8n-nodes-cord) est le chemin le plus court : il apporte un déclencheur, Cord Trigger, qui démarre votre flux quand quelque chose se passe dans Cord, et un nœud d’actions, Cord, qui crée et consulte des clients, des devis et des tâches. Le nœud HTTP Request sert pour tout endpoint de l’API que le nœud ne couvre pas encore.
n8n utilise une clé API de Cord, et non l’autorisation en un clic de Zapier et Make : chaque installation de n8n a sa propre adresse de retour, et Cord n’accepte que des adresses enregistrées à l’avance.
Prérequis
| Où | Ce qu’il vous faut |
|---|---|
| Cord | Le droit Paramètres pour activer le mode développeur et créer une clé secrète avec accès en écriture. Toutes les offres. |
| n8n | Votre propre installation de n8n 1.x et des droits d’administrateur pour installer des nœuds communautaires. Sur n8n Cloud, le nœud apparaîtra quand n8n aura terminé de le vérifier. |
| Réseau | Une adresse https publique pour votre n8n : Cord n’envoie pas d’événements vers http, localhost ni vers des adresses internes ou privées. |
| Quota | Chaque opération du nœud consomme des appels du quota mensuel d’API de votre offre Cord. Voir Limites. |
Connecter avec le nœud Cord
- Dans n8n, allez dans Settings › Community nodes et installez
n8n-nodes-cord. - Dans Cord, allez dans Paramètres, activez le mode développeur en bas de l’index et ouvrez API. Créez une clé secrète avec accès en écriture ; les clés qui commencent par
sk_test_travaillent sur votre environnement de test. La clé n’est affichée qu’une seule fois. - Dans n8n, créez des identifiants Cord API et collez la clé. Le bouton de test confirme que la clé fonctionne.
- Ajoutez le nœud Cord Trigger, choisissez les événements et activez le flux : n8n enregistre le webhook dans Cord et le supprime quand vous désactivez le flux.
- Pour agir sur Cord, utilisez le nœud Cord.
Le déclencheur : Cord Trigger
Dans Events, vous choisissez un ou plusieurs des 41 événements de Cord. Cord n’envoie que ceux que vous avez choisis, et le nœud vérifie la signature X-Cord-Signature-V1 de chaque envoi avec le secret reçu lors de l’enregistrement du webhook (Verify Signature, activé par défaut) : un POST qui ne vient pas de Cord est refusé.
Les événements apparaissent en anglais dans n8n, regroupés par catégorie :
| Catégorie | Événement dans n8n | Clé | Quand il se produit |
|---|---|---|---|
| Quotes | Quote created | quote.created |
Un devis est créé. |
| Quotes | Quote sent | quote.sent |
Un devis est envoyé. |
| Quotes | Client opened a quote | quote.viewed |
Le client ouvre le devis. |
| Quotes | Quote approved | quote.approved |
Un devis est approuvé. |
| Quotes | Quote rejected | quote.rejected |
Un devis est refusé. |
| Quotes | Quote edited and resent | quote.updated |
Un devis est modifié et renvoyé. |
| Quotes | Quote expired | quote.expired |
Un devis expire. |
| Quotes | Draft deleted | quote.deleted |
Un brouillon est supprimé. |
| Quotes | Message posted on a quote | quote.comment_added |
Un message est publié sur un devis. |
| Approvals | Internal approval requested | quote.approval_requested |
Un devis demande une validation interne. |
| Approvals | Internal approval decided | quote.approval_decided |
Une validation interne est tranchée. |
| Payments | Quote paid in full | quote.paid |
Un devis est payé en totalité. |
| Payments | Partial payment received | payment.partial |
Un paiement partiel est reçu. |
| Payments | Recurring charge failed | payment.failed |
Un paiement récurrent échoue. |
| Payments | Dispute opened | dispute.created |
Un litige est ouvert. |
| Payments | Dispute closed | dispute.closed |
Un litige est clos. |
| Payments | Refund succeeded | refund.succeeded |
Un remboursement aboutit. |
| Payments | Refund failed | refund.failed |
Un remboursement échoue. |
| Payments | Payout paid | payout.paid |
Un versement est effectué sur votre compte bancaire. |
| Payments | Payout failed | payout.failed |
Un versement échoue. |
| Payments | Payments account updated | account.updated |
Votre compte de paiement change. |
| Invoices | Quote invoiced | invoice.issued |
Un devis est facturé. |
| Invoices | Quote CFDI stamped | invoice.stamped |
Le CFDI d’un devis est timbré. |
| Invoices | Invoice issued | invoice.finalized |
Une facture est émise. |
| Invoices | Invoice sent | invoice.sent |
Une facture est envoyée. |
| Invoices | Invoice paid | invoice.paid |
Une facture est payée. |
| Invoices | Invoice payment failed | invoice.payment_failed |
Le paiement d’une facture échoue. |
| Invoices | Invoice overdue | invoice.overdue |
Une facture passe en retard. |
| Invoices | Invoice voided | invoice.voided |
Une facture est annulée. |
| Invoices | Invoice marked uncollectible | invoice.marked_uncollectible |
Une facture est marquée comme irrécouvrable. |
| Clients | Client created | client.created |
Un client est créé. |
| Clients | Client updated | client.updated |
Un client est mis à jour. |
| Clients | Client deleted | client.deleted |
Un client est supprimé. |
| Products | Product created | product.created |
Un produit est créé. |
| Products | Product updated | product.updated |
Un produit est mis à jour. |
| Products | Product deleted | product.deleted |
Un produit est supprimé. |
| Tasks | Task created | task.created |
Une tâche est créée. |
| Tasks | Task completed | task.completed |
Une tâche est terminée. |
| Tasks | Payment promise recorded | promise.created |
Une promesse de paiement est enregistrée. |
| Tasks | Payment promise kept | promise.kept |
Une promesse de paiement est tenue. |
| Tasks | Payment promise broken | promise.broken |
Une promesse de paiement n’est pas tenue. |
Les déclencheurs temporels de Cord Workflows (échéances qui approchent et factures en retard depuis plusieurs jours) et le déclencheur planifié n’existent pas dans n8n : utilisez le nœud Schedule Trigger de n8n et les recherches du nœud Cord pour les reproduire. Les champs de chaque événement sont décrits dans Webhooks pour les développeurs.
Si vous modifiez les événements d’un Cord Trigger déjà actif, le nœud filtre ceux que vous avez retirés même si Cord continue de les envoyer ; pour que Cord cesse de les envoyer, désactivez puis réactivez le flux.
Les actions : le nœud Cord
| Ressource | Opération | Champs |
|---|---|---|
| Client | Create | Company (obligatoire). Facultatifs : Contact, Email, Phone, Tax ID, Country Code et Payment Terms (Upfront, Net 7, Net 15, Net 30, Net 45, Net 60 ou Net 90 ; Net 7, Net 15, Net 45 et Net 90 à partir de la version 1.2.0 du nœud). |
| Client | Update | Client ID et les champs que vous voulez modifier. |
| Client | Get | Client ID. |
| Client | Search | Texte ou e-mail à rechercher. |
| Quote | Create | Client ID et Items (Description, Quantity, Unit Price). Facultatifs : Currency, Payment Terms, Valid For (Days), Notes et Send Now pour l’envoyer dès sa création. |
| Quote | Get | Quote ID. |
| Quote | Search | Numéro de devis ou client à rechercher. |
| Quote | Send | Quote ID d’un brouillon. |
| Quote | Mark as Paid | Quote ID et, en option, Payment Method. |
| Task | Create | Title. Facultatifs : Due Date et Quote ID pour la rattacher à un devis. |
Le nœud Cord peut aussi servir d’outil à un agent IA dans n8n.
Avec le nœud HTTP Request
- Pour recevoir des événements, ajoutez un webhook dans l’onglet Webhooks du Workbench avec l’URL du nœud Webhook de n8n et choisissez les événements.
- Pour appeler l’API, utilisez HTTP Request sur
https://cordhq.app/api/v1/...avec l’en-têteAuthorization: Bearer sk_.... - Ajoutez l’en-tête
Idempotency-Keyavec une valeur unique par opération quand vous créez des données, pour qu’une relance ne les duplique pas.
Avec le nœud Webhook générique, c’est vous qui vérifiez la signature ; les détails figurent dans Webhooks pour les développeurs.
Ce qui circule et dans quel sens
| Sens | Ce qui circule | Quand |
|---|---|---|
| De Cord vers n8n | Les événements choisis dans Cord Trigger, signés, avec id, event, created_at et data. |
Instantanément, chaque fois qu’ils se produisent dans Cord. Si n8n ne répond pas, Cord relance l’envoi. |
| De n8n vers Cord | Ce que fait le nœud Cord ou votre HTTP Request : clients, devis, paiements enregistrés ou tâches. | Quand le flux s’exécute. |
Ce que n8n fait dans Cord déclenche les mêmes événements que si une personne l’avait fait, avec Qui l’a déclenché : L’API. Si un flux écoute un événement et le provoque aussi, attention aux boucles : filtrez sur le champ modifié ou sur l’auteur de l’action.
Limites
| Limite | Valeur |
|---|---|
| Appels API par mois | Gratuit 100, Starter 1 000, Professionnel 5 000, Scale 10 000, Developer 50 000 |
| Au-delà du quota | Avec l’offre Gratuite, les appels sont refusés jusqu’au mois suivant ; à partir de Starter, ils sont facturés en dépassement, avec un plafond de sécurité fixé à 10 fois le volume inclus |
| Clés API actives | Gratuit 2, Starter 5, Professionnel 20, Scale 50, Developer 200 |
| Webhooks enregistrés par Cord Trigger | 100 par organisation, partagés avec Zapier et Make, en plus des endpoints de votre offre |
| Webhooks que vous créez à la main (nœud HTTP) | Ceux de votre offre : 16 avec Gratuit, Starter et Professionnel ; 32 avec Scale ; 100 avec Developer |
- Ce qui consomme du quota : chaque opération du nœud Cord et chaque appel HTTP Request avec une clé
sk_live_…, ainsi que l’enregistrement ou la suppression du webhook quand vous activez ou désactivez un flux avec Cord Trigger. Recevoir des événements ne consomme pas de quota, pas plus qu’une clésk_test_…. - Votre consommation : dans Paramètres › Offres et abonnement › Abonnement, ligne Appels API.
Déconnecter
- Désactiver un flux : quand vous désactivez un flux avec Cord Trigger, n8n supprime dans Cord le webhook qu’il avait enregistré. Si le webhook n’existait déjà plus dans Cord, n8n se désactive quand même.
- Couper complètement l’accès :
- Dans Cord, ouvrez l’onglet Clés API du Cord Workbench.
- Repérez la clé que vous avez collée dans n8n et cliquez sur Révoquer. Confirmez : elle cesse de fonctionner immédiatement et cette action est irréversible.
- Dans n8n, supprimez les identifiants Cord API.
Une fois la clé révoquée, n8n ne peut plus appeler l’API avec elle, et les webhooks que cette clé avait enregistrés cessent de recevoir des événements.
- Avec le nœud HTTP Request : supprimez aussi le webhook dans l’onglet Webhooks du Workbench.
Problèmes fréquents
| Message ou symptôme | Que faire |
|---|---|
| Le test des identifiants échoue | Collez une clé secrète (sk_live_ ou sk_test_). Les clés publiables (pk_) ne fonctionnent pas ici. Si la clé a été révoquée, créez-en une autre. |
| Le flux avec Cord Trigger ne s’active pas | La clé doit avoir l’accès en écriture pour enregistrer le webhook. Vérifiez aussi que l’adresse de n8n est en https et publique : Cord refuse http, localhost et les adresses internes ou privées. |
| Cord indique que vos intégrations ont atteint le maximum de 100 abonnements par organisation | Désactivez les flux n8n, les Zaps ou les scénarios que vous n’utilisez plus pour libérer de la place. |
| n8n répond 401 aux envois de Cord | Le déclencheur refuse les envois dont la signature ne correspond pas au secret reçu lors de l’enregistrement du webhook. Désactivez puis réactivez le flux pour qu’il en enregistre un nouveau. |
| Le nœud Cord répond 429 | Vous avez dépassé la limite par minute ou le quota mensuel d’API. Vérifiez votre consommation ; avec l’offre Gratuite, attendez le mois suivant ou changez d’offre. |
| Vous ne pouvez pas créer la clé | Vous avez atteint le nombre maximal de clés actives de votre offre. Révoquez-en une que vous n’utilisez plus. |