Connecter Odoo à n8n : node natif, API JSON-RPC et cas d'usage concrets
Publié le 2 août 2026 · 6 min de lecture
Odoo est l'ERP/CRM open source le plus répandu en France : ventes, facturation, stocks, comptabilité et CRM dans une seule base. Le problème, c'est tout ce qui vit autour — formulaires web, e-commerce, outils marketing — et qui finit ressaisi à la main dans Odoo. n8n dispose d'un node Odoo natif qui règle une grande partie du sujet, et l'API JSON-RPC/XML-RPC d'Odoo couvre le reste. Ce guide passe en revue les credentials, les ressources supportées, l'option Custom Resource, puis trois cas d'usage concrets.
L'enjeu n'est pas anecdotique : une étude de Hitt, Wu et Zhou publiée en 2002 dans le Journal of Management Information Systems (étude sur Google Scholar) montre que les entreprises qui investissent dans un ERP affichent de meilleures performances sur de nombreux indicateurs financiers — à condition que les processus suivent. Un ERP alimenté à la main par copier-coller n'exploite qu'une fraction de sa valeur.
Créer les credentials Odoo dans n8n
Le node Odoo utilise un credential unique avec quatre champs :
- Site URL : l'URL de votre instance (
https://mon-entreprise.odoo.comou l'URL de votre serveur self-hosted). - Username : votre identifiant de connexion (l'e-mail du compte, tel qu'affiché dans l'écran de changement de mot de passe d'Odoo).
- Password or API key : le mot de passe du compte ou, de préférence, une clé API.
- Database name : le nom de la base de données (pour Odoo Online, c'est en général le nom de l'instance).
Pour générer une clé API (disponible depuis Odoo 14) :
- Dans Odoo, ouvrez votre profil puis Préférences.
- Allez dans l'onglet Sécurité du compte et repérez la section des clés API développeur.
- Créez une nouvelle clé, donnez-lui une description (« n8n »), puis générez-la.
- Copiez la clé immédiatement (elle n'est affichée qu'une fois) et collez-la dans le champ Password or API key du credential n8n.
Deux pièges classiques. D'abord, sur Odoo Online (SaaS), l'accès à l'API externe est réservé aux plans payants de type Custom : les offres One App Free et Standard ne l'ouvrent pas. Une instance Community self-hosted n'a pas cette limite. Ensuite, la clé API hérite exactement des droits de l'utilisateur : créez un utilisateur dédié à l'intégration avec le minimum de permissions, et suivez les bonnes pratiques de sécurisation des credentials dans n8n.
Le node Odoo natif : ressources et opérations
Le node propose quatre ressources, chacune avec les cinq opérations CRUD classiques (Create, Get, Get All, Update, Delete) :
- Contact : les fiches de
res.partner— clients, fournisseurs, prospects. - Opportunity : les opportunités du CRM (pipeline commercial).
- Note : les notes internes d'Odoo.
- Custom Resource : la ressource joker, qui donne accès à n'importe quel modèle.
Pour un flux simple — créer un contact à chaque inscription, mettre à jour une opportunité quand un deal avance — les trois premières ressources suffisent et se configurent en quelques clics : on choisit la ressource, l'opération, puis on mappe les champs avec des expressions comme {{ $json.email }}.
Custom Resource : toucher n'importe quel modèle Odoo
C'est l'option qui rend le node réellement puissant. En sélectionnant Custom Resource, vous indiquez le nom technique d'un modèle Odoo et appliquez les mêmes opérations CRUD dessus. Quelques modèles utiles :
crm.lead: leads et opportunités (avec plus de contrôle que la ressource Opportunity).sale.order: devis et bons de commande.account.move: factures clients et fournisseurs.product.product: les variantes de produits.stock.quant: les niveaux de stock.
Pour connaître le nom technique d'un modèle ou d'un champ, activez le mode développeur dans Odoo : le nom s'affiche au survol, et la liste complète vit dans les paramètres techniques. En lecture (« Get All »), commencez toujours par un petit limit avant de rapatrier des milliers de lignes.
Trois cas d'usage concrets
1. Synchroniser les leads d'un formulaire web vers le CRM
Le pattern : un Form Trigger n8n ou un webhook reçoit la soumission, un node Odoo (ressource Opportunity ou crm.lead en Custom Resource) crée le lead avec le nom, l'e-mail et la source. Entre les deux, vous pouvez enrichir le lead automatiquement (société, effectif, secteur) ou le qualifier avec un modèle d'IA avant création, pour que les commerciaux ouvrent Odoo sur des fiches déjà propres.
Ce cas d'usage élimine la ressaisie manuelle, dont le coût est documenté : les travaux de Raymond Panko publiés en 1998 dans le Journal of End User Computing (référence sur Google Scholar) montrent que les données saisies et manipulées à la main par des humains contiennent des erreurs de façon quasi systématique — la majorité des feuilles de calcul auditées en contenaient au moins une. Chaque champ recopié à la main est un point de défaillance.
2. Créer une facture à la commande
Quand une commande arrive de votre boutique (Shopify, WooCommerce ou PrestaShop), un workflow n8n peut créer le client s'il n'existe pas (Contact), puis la commande (sale.order) ou directement la facture (account.move) en Custom Resource. Attention : créer l'enregistrement ne suffit pas toujours — confirmer une commande ou valider une facture passe par des méthodes métier d'Odoo, non couvertes par le CRUD du node natif. C'est le domaine de l'API RPC (section suivante). Et si vous devez produire le document PDF côté n8n, voyez comment générer devis et factures en PDF.
3. Alerter sur les opportunités qui stagnent
Un Schedule Trigger quotidien lit les opportunités ouvertes (Get All sur crm.lead), un node Filter garde celles dont la dernière activité remonte à plus de X jours, puis un message Slack ou un e-mail relance le commercial concerné. C'est le même pattern que pour la synchronisation d'un CRM HubSpot ou Pipedrive, appliqué à Odoo.
Au-delà du node : l'API JSON-RPC/XML-RPC via HTTP Request
Le node natif couvre le CRUD, mais pas les appels de méthodes (action_confirm sur une commande, recherche avec domaines complexes, read_group pour des agrégats). Odoo expose pour cela une API externe historique en XML-RPC (/xmlrpc/2/common pour l'authentification, /xmlrpc/2/object pour les appels) et en JSON-RPC (/jsonrpc). Dans n8n, JSON-RPC est le plus pratique : le node HTTP Request parle JSON nativement.
Exemple : rechercher les opportunités sans activité depuis 14 jours via execute_kw. Après un premier appel au service common (méthode authenticate) pour récupérer votre uid, envoyez un POST sur https://votre-instance.odoo.com/jsonrpc :
{
"jsonrpc": "2.0",
"method": "call",
"params": {
"service": "object",
"method": "execute_kw",
"args": [
"nom_de_la_base",
2,
"VOTRE_CLE_API",
"crm.lead",
"search_read",
[[["activity_date_deadline", "<", "2026-07-19"]]],
{ "fields": ["name", "email_from", "user_id"], "limit": 100 }
]
},
"id": 1
}
Le 2 est l'uid retourné par authenticate, et la clé API se passe à la place du mot de passe. Pour les gros volumes, combinez limit et offset comme décrit dans notre guide sur la pagination des API avec HTTP Request. Point de vigilance : Odoo a annoncé la dépréciation à terme de ces endpoints RPC historiques au profit d'une nouvelle API JSON introduite avec Odoo 19 — vérifiez la documentation de votre version avant de bâtir des intégrations lourdes.
Bonnes pratiques et limites
- Utilisateur dédié + clé API : jamais le compte admin, jamais le mot de passe principal.
- Idempotence : avant de créer un contact ou un lead, cherchez-le (Get All filtré sur l'e-mail) pour éviter les doublons en cas de rejeu du webhook.
- Champs relationnels : les champs many2one d'Odoo attendent des identifiants numériques (ID de l'étape, du commercial), pas des libellés. Récupérez ces ID une fois et stockez-les dans le workflow.
- Volumes : le node Odoo n'est pas fait pour des migrations massives ; pour des dizaines de milliers de lignes, passez par l'API avec pagination, voire par un export/import direct en base.
- Plans Odoo Online : rappelez-vous la restriction de l'API externe aux plans Custom avant de promettre une intégration à un client en One App Free.
En résumé
Le node Odoo de n8n se configure avec quatre informations (URL, base, identifiant, clé API) et couvre le CRUD sur les contacts, opportunités et notes — et sur n'importe quel modèle grâce à Custom Resource. Pour les méthodes métier et les requêtes complexes, l'API JSON-RPC via HTTP Request prend le relais. Commencez par un flux simple, formulaire web vers crm.lead, puis étendez vers la facturation et les alertes de pipeline. Vous trouverez des bases prêtes à adapter dans nos workflows n8n.
FAQ
Questions fréquentes
Le node Odoo de n8n fonctionne-t-il avec Odoo Community (self-hosted) ?
Oui. Le node se connecte à toute instance Odoo accessible par HTTP(S), y compris une installation Community auto-hébergée. Il vous faut l'URL de l'instance, le nom de la base de données, votre identifiant et un mot de passe ou une clé API. Sur Odoo Online (SaaS), l'accès à l'API externe est en revanche réservé aux plans payants de type Custom.
Comment toucher un modèle Odoo que le node n8n ne propose pas ?
Utilisez la ressource Custom Resource du node Odoo : elle permet de faire du CRUD sur n'importe quel modèle technique (sale.order, account.move, product.product, etc.) en indiquant son nom. Pour les méthodes métier spécifiques (confirmer une commande, valider une facture), passez par l'API JSON-RPC ou XML-RPC via le node HTTP Request.
Faut-il utiliser le mot de passe ou une clé API dans les credentials ?
Préférez toujours une clé API, générée depuis votre profil Odoo (Préférences > Sécurité du compte > Clés API développeur, disponible depuis Odoo 14). Elle se saisit dans le champ mot de passe du credential n8n, se révoque sans changer le mot de passe du compte et limite les dégâts en cas de fuite.
Quelle est la différence entre XML-RPC et JSON-RPC pour Odoo ?
Les deux protocoles exposent les mêmes méthodes (authenticate, execute_kw) sur les mêmes modèles. JSON-RPC est plus simple à manipuler dans n8n car le node HTTP Request parle JSON nativement, sans construire de XML. Notez qu'Odoo a annoncé la dépréciation de ces endpoints historiques au profit d'une nouvelle API JSON introduite avec Odoo 19.
Bundle FlowKit Complet
269 €