Odoo lo hace casi todo, y ese es justo el motivo por el que la gente acaba buscando cómo automatizarlo: cuando un sistema toca ventas, almacén, facturación y proyectos, cualquier proceso que se quede fuera obliga a picar datos a mano en el único sitio donde no debería hacer falta.
La buena noticia, y no es habitual en el software de gestión español: n8n tiene nodo nativo de Odoo. Cubre contactos, oportunidades, actividades y modelos personalizados, así que no hay que pelearse con la API a mano como pasa con Sage.
Para quién es esta guía
Pymes con Odoo ya implantado que quieren conectarlo con herramientas de fuera, o que tienen procesos manuales alrededor del ERP. No es una guía de implantación de Odoo: si aún no lo tienes, ese es otro proyecto y bastante más grande.
Qué cubre el nodo nativo, y qué no
El nodo oficial trabaja con cuatro recursos, y cada uno admite crear, leer, listar, actualizar y borrar:
| Recurso | Para qué sirve |
|---|---|
| Contact | Clientes, proveedores y contactos. Es el recurso que más se usa |
| Opportunity | Oportunidades del CRM de Odoo, si usas ese módulo |
| Activity | Tareas y actividades asociadas a registros |
| Custom | La pieza clave: te deja atacar cualquier modelo de Odoo por su nombre técnico |
El recurso «Custom» es el que lo cambia todo. Los tres primeros cubren lo evidente, pero Odoo tiene decenas de modelos: facturas, pedidos, albaranes, productos, proyectos. Con Custom puedes trabajar con cualquiera indicando su nombre técnico —account.move para facturas, sale.order para pedidos—. Si algo no aparece en los desplegables, la respuesta casi siempre es Custom, no «no se puede».
Lo que falta: no hay disparador oficial
El nodo oficial es de acción, no de disparo. Es decir: n8n puede escribir y leer en Odoo, pero Odoo no avisa a n8n cuando pasa algo. Dos formas de resolverlo:
- Consulta programada. Cada X minutos preguntas por registros nuevos o modificados desde la última vez. Sencillo, funciona siempre, y el precio es la latencia.
- Nodo trigger de la comunidad. Existe uno con unas 10.000 descargas que añade disparadores. No está verificado, así que pruébalo en un entorno de test antes de meterlo en producción.
Conectar n8n con Odoo
La conexión pide cuatro datos y ninguno tiene misterio: la URL de tu instancia, el nombre de la base de datos, el usuario y una clave de API que se genera desde el perfil del usuario en Odoo. Dos avisos que ahorran tiempo:
- Usa un usuario dedicado para la integración, no el tuyo. Cuando alguien se vaya de la empresa y desactivéis su cuenta, los flujos seguirán funcionando.
- Dale solo los permisos que necesita. Si el flujo solo crea contactos y facturas, no le des acceso a nóminas. Odoo permite ese control por módulo y conviene usarlo.
El recurso Custom, que es donde está todo lo demás
Si te quedas solo con los recursos con nombre propio, el nodo parece limitado. Y entonces alguien descubre Custom Resource y la cosa cambia por completo.
Con Custom le dices al nodo contra qué modelo de Odoo quieres trabajar escribiendo su nombre técnico, y tienes las mismas cinco operaciones que en el resto. Como en Odoo todo es un modelo —las facturas, los pedidos, los productos, el stock, los proyectos—, en la práctica el nodo llega a cualquier rincón de tu instalación, módulos propios incluidos.
| Qué quieres tocar | Modelo que pones en Custom |
|---|---|
| Facturas de cliente y de proveedor | account.move |
| Pedidos de venta | sale.order |
| Pedidos de compra | purchase.order |
| Productos y tarifas | product.template |
| Existencias por almacén | stock.quant |
| Partes de horas de proyecto | account.analytic.line |
Cómo averiguar el nombre técnico sin adivinar. Activa el modo desarrollador en Odoo, entra en Ajustes → Técnico → Estructura de la base de datos → Modelos y busca por la etiqueta que ves en pantalla. Ahí tienes el nombre exacto del modelo y, muy útil, el de cada campo. Ese listado te va a ahorrar más tiempo que cualquier tutorial.
No hay nodo trigger de Odoo: cómo se resuelve
Este es el detalle que descoloca a mucha gente y conviene decirlo pronto: Odoo no tiene nodo disparador en n8n. No puedes decir «cuando se cree una factura en Odoo, haz esto». Hay dos formas de salvarlo, y sirven para casos distintos.
Opción A: sondeo periódico, que vale para el 90 % de los casos
write_date > última ejecución → IF (¿hay algo?) → resto del flujo.
La clave está en el filtro por write_date: sin él te traes todos los registros cada quince minutos y acabas con un flujo lento que reprocesa lo mismo una y otra vez. Guarda la marca de tiempo de la última ejecución en un nodo de datos estáticos o en una tabla, y filtra siempre contra ella.
Opción B: que sea Odoo quien avise
Si necesitas reacción inmediata, crea en Odoo una acción automatizada —Ajustes → Técnico → Acciones automatizadas— que al crearse o modificarse un registro ejecute código Python con una llamada a la URL de un nodo Webhook de n8n. Es más trabajo y requiere permisos de administrador, pero te da tiempo real de verdad.
Un aviso práctico: en Odoo Online las acciones con código Python están restringidas. Si estás en la versión SaaS y no en Odoo.sh ni en instalación propia, cuenta con quedarte en la opción A.
Flujo 1: del CRM externo a Odoo, sin duplicados
Mucha pyme lleva el comercial fuera de Odoo, porque el CRM del ERP le queda rígido o porque el equipo de ventas ya trabajaba con otra herramienta. El flujo que une los dos mundos:
- Disparador en el CRM cuando la oportunidad se gana.
- Buscar el contacto en Odoo por NIF con el recurso Contact. Este paso evita el problema clásico de acabar con tres fichas del mismo cliente.
- Crear o actualizar según el resultado.
- Generar el pedido de venta con el recurso Custom sobre
sale.order, con las líneas que vengan del trato. - Devolver la referencia al CRM como nota, para que comercial vea el estado sin entrar en Odoo.
Pipedrive
Desde 14€/usuario/mes · nodo nativo con disparador
Sobre el lado del CRM en este flujo hay un detalle práctico: como Odoo no tiene disparador oficial, conviene que el disparo venga del otro extremo. Pipedrive sí tiene nodo con trigger propio en n8n, así que el flujo arranca en el momento exacto en que se gana el trato y Odoo solo recibe. Si el CRM comercial aún está por decidir, eso ahorra montar una consulta programada. A través de Flowmatic son 30 días de prueba en lugar de 14.
Enlace de afiliado. Flowmatic recibe una comisión si contratas tras hacer clic, sin coste adicional para ti.
Flujo 2: avisos de stock que llegan a tiempo
- Consulta programada cada mañana al modelo de productos, filtrando por los que están por debajo del mínimo.
- Se agrupan por proveedor, para no mandar seis avisos sueltos al mismo.
- Se envía el resumen por email o WhatsApp a quien compra.
- Opcionalmente, se crea el borrador de pedido de compra en Odoo, siempre en borrador: la aprobación la da una persona.
Ese último matiz es el que separa una automatización útil de una que da problemas. El sistema prepara; alguien decide.
Flujo 3: cobros vencidos que se reclaman solos
De todos los flujos que montamos sobre Odoo, este es el que más rápido se paga. Reclamar facturas vencidas es una tarea que todo el mundo odia, que se hace tarde y que cuando se hace tarde cuesta dinero.
account.move filtrando estado publicado, tipo factura de cliente, importe pendiente mayor que cero y fecha de vencimiento pasada → Switch por días de retraso → Send Email con el tono que toque → Odoo: Activity Create si pasa de 30 días.
El nodo Switch es lo que separa esto de un envío masivo torpe. Tres ramas bastan:
| Retraso | Qué manda | Tono |
|---|---|---|
| 1-7 días | Email automático con la factura adjunta | Recordatorio amable. Se les ha pasado, sin más |
| 8-30 días | Email con copia al comercial de la cuenta | Directo, pidiendo fecha concreta de pago |
| Más de 30 | Nada automático: crea actividad en Odoo para llamar | Aquí hace falta una persona, no un email |
Esa tercera rama es deliberada. Automatizar la reclamación de un impago de sesenta días es la mejor forma de perder un cliente que quizá tenía un problema puntual. El automatismo detecta y avisa; la conversación difícil la sigue teniendo alguien.
Odoo Online, Odoo.sh o servidor propio: qué cambia
La misma integración se comporta distinto según dónde viva tu Odoo, y conviene saberlo antes de prometer nada:
| Modalidad | API externa | Acciones con código | Qué implica |
|---|---|---|---|
| Odoo Online | Sí | Restringidas | Sondeo periódico y poco más. Suficiente para casi todo |
| Odoo.sh | Sí | Sí | Puedes montar avisos en tiempo real hacia n8n |
| Servidor propio | Sí | Sí, sin límites | Control total. Y el mantenimiento también es tuyo |
Si tu Odoo está en un servidor propio detrás del firewall de la oficina y tu n8n está en la nube, hay un paso más: alguien tiene que abrir el acceso, y hacerlo bien significa restringir por IP de origen y usar HTTPS con certificado válido, no publicar el puerto y esperar lo mejor.
Tres errores que se repiten
| Error | Consecuencia | Cómo evitarlo |
|---|---|---|
| No comprobar si el registro existe | Duplicados que ensucian el ERP y rompen informes | Buscar siempre por un campo único, normalmente el NIF, antes de crear |
| Consultar demasiado a menudo | Carga innecesaria sobre el servidor de Odoo | Ajustar la frecuencia a la realidad: casi nada necesita revisarse cada minuto |
| Automatizar sobre módulos personalizados sin avisar | Una actualización del partner rompe el flujo sin previo aviso | Documentar qué modelos toca cada flujo y avisar a quien mantiene el Odoo |
Por dónde empezar y qué esperar en horas
Si es tu primera integración con Odoo, el orden importa. Estos son los cuatro automatismos por los que empezamos casi siempre, ordenados por relación entre lo que cuestan y lo que devuelven:
| Automatismo | Montaje | Devuelve | Dificultad |
|---|---|---|---|
| Reclamación de vencidos | 3-4 h | Cobras antes. El impacto en caja se nota el primer mes | Baja |
| Lead del formulario a Odoo | 2 h | Nada se pierde y el comercial se entera al momento | Baja |
| Avisos de stock bajo | 3 h | Dejas de quedarte sin producto por despiste | Media |
| Sincronía con la tienda online | 8-16 h | Mucho, si vendes online en volumen | Alta. Aquí conviene ayuda |
Una recomendación que vale más que cualquier truco técnico: monta el primer flujo contra una base de datos de prueba. Odoo Online te deja duplicar la base, y equivocarte creando doscientos contactos duplicados en un entorno de pruebas es una anécdota, mientras que hacerlo en producción es una tarde de limpieza a mano.
Preguntas frecuentes
¿Funciona igual con Odoo Community y Enterprise?
La API funciona en ambas. La diferencia está en qué módulos tienes disponibles: si un módulo es exclusivo de Enterprise y no lo tienes, sus modelos tampoco existen en tu base de datos. Antes de diseñar el flujo, comprueba qué módulos hay instalados de verdad.
¿Y si mi Odoo está en un servidor propio sin salida a internet?
Entonces n8n tiene que estar en la misma red. Es un argumento fuerte a favor de autoalojar n8n en lugar de usar la nube, y de paso te quita el asunto de las transferencias de datos fuera de la UE.
¿Uso el CRM de Odoo o uno aparte?
Si tu proceso comercial es sencillo y valoras tenerlo todo en un sitio, el de Odoo cumple. Si tienes equipo comercial con pipeline propio y necesitas que lo usen a diario sin quejarse, un CRM especializado suele ganar en adopción. La integración entre ambos, como ves en el flujo 1, es asumible.
¿Necesito saber Python para esto?
No para los flujos que hemos descrito. Con el recurso Custom y algo de soltura con expresiones de n8n vas sobrado. Python solo hace falta si eliges la opción de acciones automatizadas dentro de Odoo, y aun ahí son cinco líneas para llamar a un webhook.
¿El nodo funciona con cualquier versión de Odoo?
Funciona contra la API externa, que se mantiene bastante estable entre versiones. Lo que sí cambia entre versiones son los nombres de algunos campos y modelos, así que si actualizas Odoo revisa tus flujos después: lo típico es que un campo se haya renombrado y una llamada devuelva vacío sin dar error.
¿Es mejor usar la clave API o usuario y contraseña?
Clave API siempre que puedas. Puedes revocarla sin cambiar la contraseña de nadie, no se rompe cuando alguien actualiza sus credenciales y limita el daño si se filtra. Además, crea un usuario dedicado para la integración en vez de usar el de una persona: el día que esa persona se vaya de la empresa, tus flujos siguen funcionando.
¿Cuánto cuesta mantener esto funcionando?
Los flujos sencillos, prácticamente nada: se montan y funcionan. El mantenimiento real aparece cuando actualizas Odoo o cuando cambias procesos, y es de horas, no de días. Lo que sí conviene es tener activadas las notificaciones de error, para enterarte de que algo falló el mismo día y no a final de mes.
¿Odoo conectado con el resto de tu stack?
Montamos estas integraciones con n8n sabiendo dónde están los límites del nodo y cuándo hay que bajar al modelo personalizado. Si tu Odoo lo mantiene un partner, trabajamos con ellos en lugar de por detrás.
Si tu gestión no va por Odoo, tienes el mismo planteamiento para Sage —donde el camino es bastante más áspero porque no hay nodo— y para Holded y Quipu.





