Odoo se ha consolidado como uno de los ERP open‑source más flexibles del mercado, capaz de cubrir contabilidad, inventario, ventas y mucho más desde un único core modular. Sin embargo, cuando llega el momento de conectar estos datos con tiendas online, CRMs o herramientas de BI, muchas empresas se pierden entre scripts ad hoc y mantenimientos infinitos. En definitiva, la Odoo integración es la pieza clave que conecta tu ERP con el resto del ecosistema digital.
Aquí es donde n8n entra en juego. Esta plataforma low‑code de automatización permite orquestar más de 350 servicios mediante flujos visuales, reduciendo drásticamente el tiempo de desarrollo y la dependencia del backend. Combinando la API de Odoo 17 con los nodos nativos de n8n 1.x —ya sea en versión self‑hosted o en la nube— podrás construir integraciones robustas sin volver a programar la misma lógica punto‑a‑punto.
En esta guía aprenderás, paso a paso, cómo levantar un entorno de pruebas, crear credenciales seguras y desplegar tu primer flujo CRUD entre Odoo y cualquier plataforma externa, todo sin escribir una sola línea de código desde cero.
Cuando te enfrentas al reto de conectar Odoo con plataformas externas tienes dos opciones: construir integraciones a medida («build») o recurrir a una pieza intermedia que simplifique el trabajo («buy»). El enfoque build suele implicar semanas de desarrollo, mantenimiento continuo y la carga de versionar cada endpoint. Por el contrario, un middleware low‑code como n8n acelera los tiempos de entrega y reduce el TCO.
n8n combina la flexibilidad del código abierto con una biblioteca de más de 350 nodos listos para usar. Esto te permite orquestar flujos complejos—desde Shopify hasta SAP—sin escribir boilerplate. Además, incorpora gestión visual de versiones, reintentos automáticos y un registro de ejecuciones que facilita la auditoría.
Para reproducir los ejemplos de esta guía necesitas un conocimiento básico de REST/JSON y lógica de flujos, así como contar con el siguiente entorno mínimo:
Odoo expone tres familias de interfaces para que aplicaciones externas interactúen con sus modelos de datos: XML‑RPC, JSON‑RPC y los controladores REST bajo la ruta /web
. A efectos prácticos, la comunidad ha estandarizado JSON‑RPC como «la forma moderna» porque reduce la sobrecarga del protocolo y habla JSON nativo.
El nodo “Odoo” de n8n actúa como un Odoo Connector basado en JSON‑RPC, lo que significa que puedes buscar, crear o actualizar cualquier registro sin escribir una sola línea de código, simplemente mapeando campos en la interfaz. Para operaciones de lectura masiva, ten en cuenta los parámetros limit
y offset
para paginar resultados.
limit_request
en odoo.conf
.offset
+ limit
(máximo 100 registros recomendados) para evitar timeouts.Dependiendo de tus necesidades puedes desplegar n8n en tu propia infraestructura o consumirlo como servicio gestionado. A continuación cubrimos las dos rutas más habituales.
La forma más rápida de levantar un entorno de pruebas es con Docker Compose. Crea un archivo docker‑compose.yml
en una carpeta vacía y copia lo siguiente:
services:
db:
image: postgres:16
container_name: odoo18-db
restart: unless-stopped
environment:
POSTGRES_DB: postgres
POSTGRES_USER: odoo
POSTGRES_PASSWORD: odoo
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U odoo"]
interval: 10s
retries: 5
odoo:
image: odoo:18.0
container_name: odoo18
restart: unless-stopped
depends_on:
db:
condition: service_healthy
ports:
- "8069:8069"
- "8072:8072" # longpolling port
environment:
HOST: db
USER: odoo
PASSWORD: odoo
WORKERS: "2"
volumes:
- odoo_data:/var/lib/odoo
- ./addons:/mnt/extra-addons
volumes:
db_data:
odoo_data:
n8n_data
persiste credenciales y workflows.N8N_ENCRYPTION_KEY
cifra los secretos almacenados.encryptionKey
para cifrar credenciales.Tanto en self‑hosted como en la nube, asegúrate de restringir el acceso al puerto 5678 y mantener copias de seguridad del directorio de datos. Una vez arrancado el servicio ya puedes iniciar sesión y crear las credenciales Odoo en el siguiente paso.
Con n8n ya en marcha, el primer paso operativo es darle acceso seguro a tu instancia de Odoo. Para ello necesitarás una API Key creada en tu usuario y configurar las credenciales correspondientes dentro de n8n.
https://tu‑dominio.com
(incluye https).odoo
si usas contenedor).A partir de ahora cada nodo “Odoo” puede reutilizar esta credencial, evitando exponer contraseñas en los workflows y centralizando la renovación del token cuando sea necesario.
Ha llegado el momento de poner a prueba la conexión: construiremos un flujo n8n que cubre las cuatro operaciones CRUD típicas en Odoo—Crear, Leer, Actualizar y Borrar/Archivar—aprovechando disparadores de Shopify, HubSpot y cron interno. Cada sub‑sección muestra la configuración esencial del nodo “Odoo” y un ejemplo de payload en JSON.
products/create
.title
, variants[0].price
) a formato Odoo.product.template
e inyecta los datos.
{
"name": "{\\{ $json[\"title\"] }}",
"type": "product",
"list_price": {\\{ $json["variants"][0]["price"] }},
"sale_ok": true
}
stock.quant
con filtro location_id.usage = "internal"
.
{
"model": "stock.quant",
"domain": [["location_id.usage", "=", "internal"]],
"fields": ["product_id", "quantity"]
}
orders/fulfilled
.sale.order
localiza el pedido por x_shopify_order_id
y actualiza state = "done"
.
{
"id": "{\\{ $json[\"note_attributes\"][\"odoo_id\"] }}",
"state": "done"
}
crm.lead
establece active = false
para archivar.
{
"id": "{\\{ $json[\"properties\"][\"odoo_lead_id\"] }}",
"active": false
}
Un flujo en n8n siempre arranca con un nodo Trigger. Elegir el disparador adecuado evita sobrecargar tu ERP y garantiza que los datos fluyan con la cadencia correcta. Los tres tipos más comunes para integrar Odoo son:
write_date > lastRun
para detectar cambios incrementales sin depender de webhooks.A menudo los datos que llegan a n8n no están listos para consumirse en Odoo tal cual. Los nodos Set y Function permiten formatear, limpiar o enriquecer el payload antes de enviarlo. Esto evita lógica adicional en el ERP y mantiene los flujos desacoplados.
variants
con la lista line_items
del pedido.order_line
.sale.order
utiliza el array transformado.
// Function node
const orderLines = items.map(i => [
0, 0, {
product_id: i.properties.odoo_product_id,
product_uom_qty: i.quantity,
price_unit: i.price
}
]);
return [{ json: { order_line: orderLines } }];
Incluso las integraciones mejor diseñadas fallan: cortes de red, límites de API o datos inesperados pueden romper un flujo. n8n ofrece varias capas para capturar y reintentar estas excepciones sin intervención manual.
Activa el Error Workflow en la pestaña Settings. Cada vez que un nodo lance una excepción, n8n enviará el contexto completo a este flujo, donde puedes registrar el fallo en Slack o crear un ticket de soporte.
Para capturar errores locales, envuelve los nodos críticos dentro de un Try. Conecta la rama Error a un Catch donde decidir si reintentas, saltas o notificas.
Establece N8N_LOG_LEVEL=debug
y exporta los logs a Grafana Loki o cualquier backend compatible con syslog
. Añade etiquetas como workflow_id
y run_id
para filtrar incidencias.
Cuando tus flujos manipulan datos financieros o información de clientes, la seguridad no puede ser un añadido de última hora. A continuación se muestran las prácticas mínimas para mantener el control y la trazabilidad.
limit_request
en odoo.conf
y reglas limit_req
en Nginx para proteger tu instancia frente a bucles de reintentos o ataques de fuerza bruta.A medida que tus flujos crecen en complejidad y volumen, pasar de un entorno de pruebas a producción requiere una estrategia clara. Estas son las recomendaciones básicas para escalar sin sobresaltos.
n8n_data
).-u all
fuera de horas pico.Este escenario conecta el catálogo de productos y el ciclo completo de pedidos entre Shopify y Odoo. Los flujos se ejecutan en ambos sentidos para mantener inventario y estados de pedido siempre sincronizados.
product.template
→ “Shopify → Product Create/Update”.orders/create
en Shopify → “Odoo → Create” sale.order
con mapeo de variantes.Cada nuevo contacto que aterriza en tu pipeline de HubSpot se transforma instantáneamente en un lead de Odoo, añadiendo información de marketing y origen de campaña.
contact.creation
en HubSpot.crm.lead
y asigna sales team según región.Expón métricas clave de Odoo (ventas, margen, stock) a Power BI utilizando un endpoint REST generado por n8n y programa refrescos diarios.
sale.report
, stock.quantity.report
.Con una arquitectura basada en n8n y la API de Odoo, puedes automatizar procesos de negocio complejos sin desarrollar desde cero, reducir tiempos de entrega y mantener el control total de tus datos.
¿Listo para ponerlo en marcha? Clona la plantilla completa de n8n y descarga el checklist PDF con los pasos de seguridad y despliegue. Para recibir más guías prácticas como esta, suscríbete a nuestra newsletter de integraciones.
Sí. El nodo oficial de n8n se comunica con la API independientemente de si tu instancia es Community o Enterprise, siempre que disponga de acceso JSON‑RPC.
Con la imagen por defecto y 2 vCPU puedes ejecutar alrededor de 250 workflows por hora. Para cargas mayores habilita ejecución distribuida o escala a n8n EE en Kubernetes.
No. n8n abstrae todas las operaciones CRUD; sólo debes mapear campos a través de la interfaz. Opcionalmente puedes usar nodos Function (JavaScript) para transformaciones complejas.