Odoo API paso a paso con n8n: integra tu ERP sin programar desde cero

Odoo API integración con n8n paso a paso
  • Roberth Rodríguez
  • 02 Agosto, 2025

Odoo API paso a paso con n8n: integra tu ERP sin programar desde cero

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.

Diagrama de alto nivel de la integración Odoo y n8n

¿Por qué usar n8n como middleware?

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.

  • 350+ nodos preconfigurados (Shopify, HubSpot, Gmail, Slack, etc.).
  • Editor drag‑and‑drop con vista de dependencias.
  • Reintentos automáticos y manejo avanzado de errores.
  • Versionado, ramificaciones y comparación de cambios.
  • Código abierto: auto‑hosteable o en la nube bajo demanda.

Prerrequisitos

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:

  • Conocimientos: fundamentos de REST / JSON y nociones de orquestación de flujos.
  • Instancia Odoo 17 (Community o Enterprise) con una API Key generada para tu usuario.
  • n8n 1.x instalado mediante Docker, npm o en n8n.cloud.
  • Credenciales del servicio destino, por ejemplo una Shopify Admin API Key.

Visión general de las APIs de Odoo

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.

  • XML‑RPC: la API histórica (Odoo < 14) que sigue disponible por compatibilidad. Usa objetos XML y es más verbosa.
  • JSON‑RPC: puerto 8069 por defecto; soporta todas las operaciones CRUD y es la base del nodo oficial de n8n.
  • REST /web: controladores que exponen vistas específicas (e‑commerce, portal) y permiten autenticación por tokens.
  • Límites de llamadas: por defecto ~80 requests/segundo; ajustable vía limit_request en odoo.conf.
  • Paginación: combina offset + limit (máximo 100 registros recomendados) para evitar timeouts.
Mapa visual de endpoints XML‑RPC y JSON‑RPC en Odoo 17

Instalación y puesta en marcha de n8n

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.

Opción A: Docker Compose (self‑hosted)

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:
                                        
  • El volumen n8n_data persiste credenciales y workflows.
  • N8N_ENCRYPTION_KEY cifra los secretos almacenados.
  • Para producción, coloca un proxy (Nginx, Traefik) con HTTPS delante.

Opción B: n8n.cloud

  1. Regístrate en n8n.cloud y crea un workspace.
  2. Define un nombre de subdominio y elige la región más cercana.
  3. Crea tu primer usuario administrador y activa 2FA.
  4. En Settings → Encryption genera la encryptionKey para cifrar credenciales.
  5. Invita a tu equipo y asigna roles (viewer, editor, owner).

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.

Crear credenciales Odoo en n8n

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.

  1. Generar API Key en Odoo: inicia sesión como el usuario que ejecutará los flujos y navega a Preferencias → API Keys. Pulsa «Nuevo», asigna un nombre interno y copia el token que se genera.
  2. Crear credencial en n8n: ve a Credentials → New → Odoo y rellena los campos:
    • Domain: https://tu‑dominio.com (incluye https).
    • Database: nombre de la base de datos (por defecto odoo si usas contenedor).
    • Email: la dirección de inicio de sesión de tu usuario.
    • API Key: pega el token copiado en el paso 1.
  3. Pulsa Test; si todo está correcto verás el mensaje “Connection Successful”. Guarda la credencial.

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.

Primer flujo CRUD

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.

Captura de pantalla del workflow CRUD de n8n conectando Shopify y Odoo

Create: crear producto desde webhook de Shopify

  1. Webhook Trigger (Shopify → n8n) escucha products/create.
  2. Set mapea campos de Shopify (title, variants[0].price) a formato Odoo.
  3. Odoo → Create a record selecciona modelo product.template e inyecta los datos.

{
    "name": "{\\{ $json[\"title\"] }}",
    "type": "product",
    "list_price": {\\{ $json["variants"][0]["price"] }},
    "sale_ok": true
}
                                        
                                    

Read: obtener inventario y exportarlo a Google Sheets

  1. Cron Trigger cada 6 h.
  2. Odoo → Search en stock.quant con filtro location_id.usage = "internal".
  3. Google Sheets “Append spreadsheet row” escribe ID, nombre y cantidad.

{
    "model": "stock.quant",
    "domain": [["location_id.usage", "=", "internal"]],
    "fields": ["product_id", "quantity"]
}
                                        
                                    

Update: cambiar estado de pedido a “Shipped”

  1. Webhook Trigger (Shopify → n8n) escucha orders/fulfilled.
  2. Odoo → Update a record en sale.order localiza el pedido por x_shopify_order_id y actualiza state = "done".

{
    "id": "{\\{ $json[\"note_attributes\"][\"odoo_id\"] }}",
    "state": "done"
}
                                        
                                    

Delete / Archive: leads descartados desde HubSpot

  1. Webhook Trigger (HubSpot) filtra eventos de pipeline con “Closed – Lost”.
  2. Odoo → Update a record en crm.lead establece active = false para archivar.

{
    "id": "{\\{ $json[\"properties\"][\"odoo_lead_id\"] }}",
    "active": false
}
                                        
                                    

Disparadores en n8n

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:

  • Webhook Trigger: ideal para recibir eventos en tiempo real desde plataformas externas (Shopify, HubSpot, Stripe). Basta exponer la URL generada por n8n y suscribirte al evento que corresponda.
  • Cron / Interval Trigger: ejecuta un flujo con periodicidad fija—por ejemplo, cada 5 minutos para sincronizar inventario o reconciliar pagos.
  • Polling con nodo Odoo: usa el nodo “Odoo → Search” filtrando por write_date > lastRun para detectar cambios incrementales sin depender de webhooks.

Mapeo y transformación de datos

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.

Ejemplo: convertir variantes de Shopify en líneas de pedido Odoo

  1. Set crea un campo variants con la lista line_items del pedido.
  2. Function recorre cada ítem y construye el array que Odoo espera para order_line.
  3. Odoo → Create en 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 } }];
                                    
  • Usa nombre de claves en snake_case para alinearte con la convención de Odoo.
  • Documenta cada nodo con el campo Notes; facilita el mantenimiento.
  • Divide transformaciones complejas en sub‑workflows reutilizables.

Manejo de errores y reintentos

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.

Workflow de error global

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.

Try/Catch node

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.

Reintentos automáticos

  • Configura Max retries y Retry on fail en cada nodo Odoo.
  • Aplica back‑off exponencial: 1 s, 2 s, 4 s, … para no saturar la API.
  • Para procesos masivos, divide el lote con el nodo Split In Batches.

Logging centralizado

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.

Seguridad y gobernanza

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.

  • Credenciales segregadas: crea una credencial Odoo distinta por rol (marketing, logística, finanzas) y limita los permisos en Odoo mediante grupos. Así evitas que un fallo en un flujo afecte a toda la organización.
  • Sub‑workflows y control de versiones: reutiliza sub‑workflows con parámetros, etiqueta cada versión y sincroniza el repositorio de n8n con Git para auditar cambios.
  • Límites de tasa: configura 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.

Despliegue y escalabilidad

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.

  • Staging → Producción: mantén dos instancias de n8n —una para pruebas y otra para producción— y automatiza copias de seguridad diarias de la base de datos (n8n_data).
  • Cluster con n8n EE o Kubernetes: si gestionas cientos de workflows concurrentes, despliega réplicas detrás de un load balancer y activa la opción de ejecución distribuida.
  • Auto-actualizaciones y migraciones: programa tareas que apliquen parches menores de n8n y ejecuta database migrations de Odoo con la bandera -u all fuera de horas pico.

Casos de integración completos

Shopify ↔ Odoo: flujos bidireccionales de productos y pedidos

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.

  • Productos: Cron Trigger en Odoo cada hora → “Odoo → Search” product.template → “Shopify → Product Create/Update”.
  • Pedidos: Webhook Trigger orders/create en Shopify → “Odoo → Create” sale.order con mapeo de variantes.
  • Stock: Después de validar el albarán en Odoo, “Shopify → InventoryLevel Adjust” actualiza la disponibilidad en tiempo real.

HubSpot → Odoo CRM: leads en tiempo real con enriquecimiento

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.

  • Webhook Trigger contact.creation en HubSpot.
  • Function node agrega UTM source/medium a un campo personalizado.
  • Odoo → Create crm.lead y asigna sales team según región.

Power BI ← Odoo: dashboard financiero actualizado

Expón métricas clave de Odoo (ventas, margen, stock) a Power BI utilizando un endpoint REST generado por n8n y programa refrescos diarios.

  • Cron Trigger diario a las 02:00.
  • Odoo → Read sale.report, stock.quantity.report.
  • HTTP Response node devuelve JSON que Power BI consume como fuente web.

Otros escenarios de integración

  • integrar Odoo con eCommerce: sincroniza catálogos y precios en múltiples canales.
  • integración Odoo Shopify: gestiona pedidos y stock en tiempo real.
  • conectar Odoo con WooCommerce: actualiza inventario y estados de envío automáticamente.
  • integrar Odoo con SAP B1: consolida contabilidad y operaciones sin duplicar datos.

Recursos adicionales

Conclusión y próximo paso

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.

Preguntas frecuentes

¿Funciona con Odoo Community y Enterprise?

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.

¿Cuántas tareas simultáneas soporta n8n en Docker?

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.

¿Necesito programar en Python para usar la API de Odoo?

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.