Vai al contenuto principale
Torna al blog
Odoo ERP Integrazione

Come integrare Odoo con il tuo stack tecnologico

Guida tecnica per integrare Odoo con API esterne, database, e-commerce e strumenti di business. Esempi reali con codice e caso Somos Música.

JM
Javier Manzano
CEO & Co-founder • 22 maggio 2026

Odoo è uno degli ERP più flessibili del mercato grazie alla sua natura open source e alla sua potente API. Ma integrarlo correttamente con il resto del tuo stack tecnologico richiede di conoscere le sue peculiarità: l’ORM di Odoo, il sistema di moduli, XML-RPC e JSON-RPC, e le best practice per mantenere le integrazioni stabili quando Odoo si aggiorna.

In Soamee abbiamo integrato Odoo in molteplici progetti. Il più significativo è stato Somos Música, dove abbiamo costruito un sistema completo di gestione dei diritti musicali e royalties su Odoo, integrandolo con piattaforme di streaming, sistemi di distribuzione e strumenti di reporting esterni. Questa guida raccoglie ciò che abbiamo imparato.

Perché integrare Odoo (invece di fare tutto dentro Odoo)

Odoo ha moduli per quasi tutto: CRM, inventario, fatturazione, HR, e-commerce, marketing. Ma cercare di fare assolutamente tutto dentro Odoo presenta dei problemi:

  • Performance: Odoo non è progettato per gestire dashboard analitiche con milioni di record o elaborazione in tempo reale
  • UX: L’interfaccia di Odoo è funzionale ma non sempre la migliore esperienza per l’utente finale
  • Specializzazione: Strumenti come Stripe per i pagamenti, Mailchimp per l’email marketing o Metabase per la BI fanno meglio il loro lavoro specifico
  • Scalabilità: Alcuni carichi di lavoro scalano meglio in microservizi separati

La strategia ideale è usare Odoo come ERP core (contabilità, inventario, fatturazione, acquisti) e integrarlo con strumenti specializzati per il resto.

Metodi di integrazione con Odoo

XML-RPC (il metodo classico)

XML-RPC è il metodo di integrazione più stabile e documentato di Odoo. Funziona in tutte le versioni e permette operazioni CRUD complete su qualsiasi modello.

import xmlrpc.client

# Configurazione
url = 'https://il-tuo-odoo.com'
db = 'il-tuo-database'
username = 'admin@azienda.com'
password = 'la-tua-api-key'

# Autenticazione
common = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/common')
uid = common.authenticate(db, username, password, {})

# Operazioni
models = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/object')

# Cercare le fatture dell'ultimo mese
fatture = models.execute_kw(db, uid, password,
    'account.move', 'search_read',
    [[['move_type', '=', 'out_invoice'],
      ['invoice_date', '>=', '2026-04-01']]],
    {'fields': ['name', 'partner_id', 'amount_total', 'state'],
     'limit': 100})

JSON-RPC (più moderno)

JSON-RPC offre la stessa funzionalità di XML-RPC ma con payload JSON, rendendolo più facile da integrare con applicazioni JavaScript moderne.

async function odooRPC(method, model, args, kwargs = {}) {
  const response = await fetch('https://il-tuo-odoo.com/jsonrpc', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      jsonrpc: '2.0',
      method: 'call',
      params: {
        service: 'object',
        method: 'execute_kw',
        args: [DB, UID, PASSWORD, model, method, args, kwargs]
      }
    })
  });
  return (await response.json()).result;
}

// Creare un cliente
const partnerId = await odooRPC('create', 'res.partner', [{
  name: 'Azienda Esempio S.r.l.',
  email: 'contatto@esempio.com',
  vat: 'IT12345678901',
  is_company: true
}]);

REST API (Odoo 17+)

Da Odoo 17, esiste un’API REST nativa che semplifica notevolmente l’integrazione per operazioni standard. È più intuitiva ma ha meno flessibilità di XML-RPC per operazioni complesse.

Webhook e azioni automatizzate

Per integrazioni event-driven, Odoo permette di configurare azioni automatizzate che lanciano webhook quando si verificano eventi specifici (nuovo ordine, fattura validata, stock basso). Questo è ideale per mantenere sincronizzati i sistemi esterni senza polling continuo.

Caso pratico: integrazione Odoo + Stripe + React

Uno scenario molto comune è avere Odoo come backend di gestione e un’applicazione React come frontend del cliente, con Stripe per i pagamenti.

Architettura

[Frontend React] → [API Node.js] → [Odoo (ERP)]

                    [Stripe (pagamenti)]

                    [Webhook] → [Odoo aggiorna fattura]

Il flusso funziona così:

  1. Il cliente effettua un ordine nell’app React
  2. L’API Node.js crea l’ordine in Odoo via XML-RPC
  3. Stripe elabora il pagamento
  4. Un webhook Stripe notifica l’API
  5. L’API segna la fattura come pagata in Odoo
  6. Odoo aggiorna automaticamente l’inventario

Middleware consigliato

Non è consigliabile chiamare Odoo direttamente dal frontend. Un middleware (Node.js, Python FastAPI) ti permette di:

  • Mettere in cache le risposte di Odoo per ridurre il carico
  • Trasformare i dati dal formato Odoo al formato che il tuo frontend richiede
  • Autenticare in modo indipendente da Odoo (JWT, OAuth)
  • Rate limiting per proteggere la tua istanza Odoo
  • Retry logic per gestire le interruzioni temporanee di Odoo

Integrazione con e-commerce

Se hai un negozio online (Shopify, WooCommerce, PrestaShop) e usi Odoo per la gestione dell’inventario e della fatturazione, l’integrazione bidirezionale è fondamentale:

  • Ordini: Shopify → Odoo (creare ordine di vendita, riservare stock)
  • Inventario: Odoo → Shopify (sincronizzare stock disponibile)
  • Prodotti: Odoo → Shopify (sincronizzare catalogo, prezzi, descrizioni)
  • Clienti: Bidirezionale (sincronizzare dati di contatto)

La sincronizzazione può essere in tempo reale (webhook) per ordini e inventario, e a batch (cron ogni 15 minuti) per catalogo e prezzi.

Caso Somos Música: integrazione completa

Con Somos Música l’integrazione è stata particolarmente complessa. Il sistema aveva bisogno di:

  1. Importare dati di streaming da Spotify, Apple Music e YouTube Music per calcolare i royalties
  2. Distribuire i ricavi automaticamente tra etichette, artisti e compositori secondo contratti complessi con split variabili
  3. Generare fatture automatiche in Odoo per ogni liquidazione
  4. Esportare report in dashboard custom in React per permettere alle etichette di visualizzare le loro metriche

La chiave è stata trattare Odoo come il sistema di riferimento per la contabilità e la fatturazione, ma costruire tutta la logica di calcolo dei royalties fuori da Odoo in un servizio Python specializzato. Solo i risultati finali (liquidazioni e fatture) vengono scritti in Odoo.

Errori comuni nell’integrazione con Odoo

1. Modificare il core di Odoo

Non modificare mai i moduli nativi di Odoo. Qualsiasi modifica andrà persa al prossimo aggiornamento. Crea sempre moduli custom che ereditano ed estendono i moduli nativi.

2. Non gestire la concorrenza

Odoo usa un ORM con lock ottimistici. Se due processi tentano di modificare lo stesso record simultaneamente, uno fallirà. La tua integrazione deve gestire questi conflitti con tentativi di ripetizione.

3. Sincronizzazione sincrona per tutto

Non chiamare Odoo in modo sincrono per ogni operazione del frontend. Usa code di messaggi (RabbitMQ, Redis) per operazioni che non richiedono risposta immediata e cache per letture frequenti.

4. Ignorare i permessi di Odoo

Le chiamate API rispettano i permessi dell’utente autenticato. Se la tua integrazione ha bisogno di accedere a dati di più aziende o moduli, hai bisogno di un utente tecnico con i permessi adeguati (ma non admin, per sicurezza).

Stack consigliato per integrazioni Odoo

  • Middleware: Node.js con TypeScript o Python con FastAPI
  • Coda messaggi: RabbitMQ o Redis (per operazioni asincrone)
  • Cache: Redis (per ridurre le chiamate a Odoo)
  • Monitoring: Sentry per errori, Datadog per metriche di integrazione
  • Testing: Mock dell’API di Odoo per test unitari

Quando Odoo non è sufficiente

Se le tue esigenze superano ciò che Odoo può offrire (dashboard con milioni di record, elaborazione in tempo reale, logica di business molto complessa), considera un ERP su misura che usi le parti di Odoo che funzionano bene e sostituisca quelle che non funzionano.

L’integrazione con Odoo può essere anche il primo passo di una migrazione incrementale: inizi con l’integrazione, e gradualmente sostituisci i moduli di Odoo con sviluppo custom dove necessario.

Conclusione

Odoo è un ERP potente e flessibile, ma il suo vero potenziale si sblocca quando lo integri correttamente con il resto del tuo stack. La chiave è trattarlo come un componente della tua architettura (non come il centro dell’universo), usare un middleware per proteggerlo e trasformare i dati, e progettare l’integrazione pensando alla manutenibilità nel lungo periodo.

Se hai bisogno di aiuto per integrare Odoo con il tuo stack o per valutare se Odoo è la base migliore per il tuo ERP, prenota una consulenza gratuita con il nostro team.

Non perderti nulla

JM

Javier Manzano

CEO & Co-founder in Soamee

Appassionato di tecnologia e sviluppo software. Condividendo conoscenze e esperienze per aiutare altri sviluppatori a crescere.

Ti è piaciuto questo articolo?

Se hai bisogno di aiuto con il tuo progetto di sviluppo, siamo qui per te.

Prenota una call gratuita →