For AI agents: the complete documentation index is available at https://docs.dataplatform.ovh.net/llms.txt, the full documentation bundle is available at https://docs.dataplatform.ovh.net/llms-full.txt, and this page is available as Markdown at https://docs.dataplatform.ovh.net/connectors-sources-odoo.md.
  • 🇬🇧 English
  • Extract Odoo ERP data with the Data Platform connector

    The Odoo connector extracts data from any Odoo ERP instance: contacts, CRM leads, sales orders, invoices, products, inventory, HR, projects, and more

    Objective

    The Odoo connector extracts data from any Odoo ERP instance: contacts, CRM leads, sales orders, invoices, products, inventory, HR, projects, and more.

    26 predefined models covering 9 domains + a custom model endpoint for any Odoo model + a model fields endpoint for schema introspection.

    The connector returns raw JSON from the Odoo JSON-RPC API. The platform automatically flattens nested objects into columns and stores the result in the lakehouse. No manual schema definition needed.

    Compatible with Odoo 14–19.

    1. Get an API Key

    1. Log in to your Odoo instance
    2. Click your avatar (top right) > My Profile
    3. Go to the Account Security tab
    4. Click New API Key
    5. Enter a description (e.g., data-platform-connector)
    6. Click Generate Key
    7. Copy the key immediately: it is shown only once
    Info

    Odoo Online: API access requires the Custom plan. See Odoo Pricing.

    2. Configure Credentials

    FieldRequiredDescription
    URLYesYour Odoo instance URL (e.g., https://mycompany.odoo.com)
    LoginYesYour Odoo login email
    API KeyYesThe API key generated above
    DatabaseNoAuto-detected for *.odoo.com URLs. Required for self-hosted instances.

    3. Available Endpoint Types

    models: Predefined Models

    26 commonly-used Odoo models, grouped by domain:

    DomainModels
    Contactsres.partner
    CRMcrm.lead, crm.stage, crm.team
    Salessale.order, sale.order.line
    Purchasespurchase.order, purchase.order.line
    Invoicingaccount.move, account.move.line, account.journal
    Productsproduct.template, product.product, product.category
    Inventorystock.picking, stock.move, stock.warehouse, stock.location
    HRhr.employee, hr.department
    Projectsproject.project, project.task
    Systemres.users, res.company, res.country, res.currency

    Parameters:

    ParameterTypeRequiredDescription
    ModelselectYesOdoo model to extract
    Fields FiltertagsNoSpecific fields to include (empty = all)
    Domain FiltertextNoOdoo domain filter in JSON (empty = all records)
    Max ItemsnumberNoMax records to extract (empty = all)

    custom_model: Any Odoo Model

    For models not in the predefined list (e.g., helpdesk.ticket, mrp.production, fleet.vehicle).

    ParameterTypeRequiredDescription
    Model NametextYesFull technical model name (e.g., helpdesk.ticket)
    Fields FiltertagsNoSpecific fields to include
    Domain FiltertextNoDomain filter in JSON
    Max ItemsnumberNoMax records

    model_fields: Schema Introspection

    Returns field definitions for any model (name, type, required, help text, relation). Useful to discover available fields before extracting data.

    ParameterTypeRequiredDescription
    Model NametextYesModel to inspect (e.g., res.partner)

    4. Add an Odoo source on Data Platform

    1. In the Data Platform Connectors, find Odoo in the source store and click Select.
    2. Fill in the connection fields from step 2, URL, Login, API Key, and (for self-hosted) Database.
    3. Click Connect to verify the credentials. The connector authenticates via JSON-RPC and resolves your Odoo uid.
    4. Click Add an Endpoint, choose models, custom_model, or model_fields from the dropdown, and fill in the parameters that endpoint requires (e.g. Model, optional Fields Filter, optional Domain Filter, optional Max Items).
    5. Repeat step 4 for every additional endpoint you want to ingest in this source. Each becomes a separate table in the lakehouse.
    6. Name the source and click Create.
    Warning

    The technical name cannot be changed after the source is created. It is used when opening the source via the Data Platform SDK.

    5. Quick Example: Extract Contacts

    1. Endpoint: models
    2. Model: res.partner (Contacts)
    3. Fields Filter: name, email, phone, is_company, city, country_id
    4. Max Items: 100 (or empty to extract all)

    The connector returns raw JSON from the Odoo API. The platform automatically flattens nested objects and stores the result in the lakehouse.

    6. Domain Filter Syntax

    The domain filter uses Odoo's Polish (prefix) notation. Enter it as a JSON array:

    [["state", "=", "sale"], ["amount_total", ">", 1000]]

    Common operators: =, !=, >, <, >=, <=, in, not in, like, ilike

    OR conditions use the | prefix:

    ["|", ["type", "=", "lead"], ["type", "=", "opportunity"]]

    Leave empty [] to extract all records.

    7. Best Practices

    Use the fields filter

    Without a filter, Odoo returns all fields: some models have 200+ fields. Use the fields filter to keep only what you need, especially for large models like res.partner.

    Start with max_items

    Set max_items to 10 or 100 to test quickly. Remove the limit once satisfied.

    Use model_fields to discover fields

    The model_fields endpoint returns the complete schema for any model. Use it to find field names, types, and relationships before setting up extraction.

    Stages and reference tables

    Extract crm.stage, account.journal, product.category as reference tables. Join them with main data on the stage/journal/category ID fields.

    8. Known Limitations

    • Model availability depends on installed apps. Models like crm.lead require the CRM app, sale.order requires Sales, etc. Use custom_model to test if a model exists on your instance.
    • Some fields require specific user groups. For example, project.project.stage_id requires the "Use Stages on Project" group. If you get a permission error, use fields_filter to exclude restricted fields.
    • Odoo Online API access requires the Custom plan. See Odoo Pricing.
    Info

    For detailed technical information (auth internals, full endpoint reference, pagination, rate limits, output format, domain filter reference, version compatibility, limitations), see the Odoo Technical Reference.

    Go further

    If you need training or technical assistance to implement our solutions, contact your sales representative or click on this link to get a quote and ask our Professional Services experts for a custom analysis of your project.

    Ask questions, give your feedback and interact directly with the team building the Data Platform on the dedicated Discord channel.

    If you need support with your OVHcloud services, create a request in our Help Centre.

    Join our community of users.