Usage
The Odoo Insert transform requires the following configuration settings:
Parameter | Description |
Transform Name | A unique identifier for this transform step in your workflow (e.g., "insert-mailing-contacts") |
Odoo Connection | The configured Odoo connection to target (e.g., "odoo-testing"). This defines which Odoo instance receives the insert commands. |
Odoo Model | The target model/object in Odoo to create (e.g., "mailing.contact", "res.partner", "sale.order"). Uses the internal model name. |
Batch Size | Number of records to insert in each batch (e.g., 100-1000). Larger batches are faster but consume more resources. Recommended: 100-500 for most operations. |
Return IDs | If enabled, returns the ID of each created record. Useful when you need to perform follow-up operations on newly created records. |
Field Mappings | Maps source data fields from your stream to Odoo model fields. Each mapping specifies which stream field populates which Odoo field. |
Connection configuration
Before using the transform, you must define an Odoo database connection. The fields required are:

Field | Required | Description |
Odoo connection name | Yes | A descriptive name for the connection in Hop. |
Base URL (domain) | Yes | Full URL of the Odoo instance, e.g., https://mycompany.odoo.com. |
Username | Yes | Odoo username for authentication (or API user). |
Password | Yes | Odoo password or API key, depending on authentication method. |
Database | Yes | Name of the Odoo database to query. |
Practical examples
Example 1: Loading Mailing List Contacts
Scenario: You have a list of contacts from an external source (CSV, database, or web scraping) and want to create them as mailing contacts in Odoo for email marketing campaigns.
Workflow Steps:
Read contacts from source (CSV, SQL query, API, etc.)
Filter out invalid records (null emails, missing names, duplicates)
Enrich data (add mailing list IDs, default values, calculated fields)
Insert records into mailing.contact model
Log results for audit and monitoring
Configuration:
Setting | Value |
Transform Name | insert-mailing-contacts |
Odoo Connection | odoo-testing |
Odoo Model | mailing.contact |
Batch Size | 0 |
Return IDs | No |
Field Mappings | email → email, name → name, list_ids → list_ids |
Input Data Example:
email,name,list_ids
john@example.com,John Doe,2
jane@company.com,Jane Smith,2
bob@test.org,Bob Johnson,3
Result: 605 new mailing contacts created in Odoo, ready for email marketing campaigns.
Example 2: Importing Sales Leads from Web Forms
Scenario: Your website has a contact form. You capture form submissions in a database and want to automatically create CRM leads in Odoo for your sales team to follow up.
Workflow Steps:
Query form submission database for unprocessed submissions
Validate email format and required fields
Create CRM leads (crm.lead) with contact details and source tracking
Assign leads to sales team members based on rules
Send notification emails to sales team
Configuration:
Setting | Value |
Transform Name | import-crm-leads |
Odoo Connection | odoo-production |
Odoo Model | crm.lead |
Batch Size | 50 |
Return IDs | Yes |
Example 3: Bulk Product Catalog Import
Scenario: You maintain a product catalog in an ERP system or CSV file. You need to sync products to Odoo whenever the catalog is updated, including prices, inventory, and categorization.
Workflow Steps:
Read products from source system (ERP, CSV, or API)
Validate product data (SKU uniqueness, required fields, price range)
Map categories and suppliers to Odoo records
Insert or update products with pricing and inventory
Publish products to e-commerce channels
Configuration:
Setting | Value |
Transform Name | import-products |
Odoo Connection | odoo-production |
Odoo Model | product.product |
Batch Size | 200 |
Return IDs | Yes |