Odoo
Odoo connects your flow to your Odoo instance so you can work with its records without opening Odoo: contacts, notes, opportunities, sales orders, invoices, delivery notes, payments and products. If you need another kind of record, you can work with any Odoo model by giving its name.
It is useful to get sales, customers and payments that start in other systems (an online shop, a form, an AI agent) into Odoo, or to look up Odoo data and use it in the rest of the flow.
When to use it
- A customer signs up on your website and you want to create them as a contact in Odoo.
- An order arrives from your online shop and you want to create the sales order in Odoo and confirm it.
- You want a report with the invoices that are still unpaid.
- A payment is recorded in your payment gateway and you want to register it in Odoo.
- An AI agent serves your customers and needs to look up their orders or invoices.
Configuration
You need an Odoo API credential with your Odoo server address, the database name, your user and an Odoo API key. See Credentials.
| Field | What it does |
|---|---|
| Credential (required) | The Odoo API credential used to access your Odoo. |
| Operation (required) | What the component does. See Operations. |
| Resource Type (required) | The kind of record: contact, note, opportunity, order (sales order), invoice, delivery_note, payment, product or custom resource (another Odoo model). Default: contact. Its fields appear depending on the type chosen. |
| Resource ID (required) | The record’s ID in Odoo. In Update Resource, Get Resource, Delete Resource and Confirm Resource. |
Fields for each record type
These fields are used when creating or changing the record (Create Resource and Update Resource).
| Type | Fields |
|---|---|
contact | Name (required), Email, Phone. |
note | Memo (required): the note’s text. Open: whether the note stays open; on by default. Color: the note’s color, as a number; default: 2. From Odoo 17, where notes became the To-do app, a to-do is created: the first line of Memo is its title, and with Open off it is marked as done. |
opportunity | Name (required). Partner ID: the contact’s ID. Probability: chance of success from 0 to 100; default: 100. Expected Revenue: expected revenue; default: 5000. Lead: when on, it is created as a lead instead of an opportunity; off by default. |
order | Customer (Partner ID) (required): the customer’s ID. Order Lines: the order lines, connected from another component; each line carries product_id (the product’s ID), product_uom_qty (quantity) and, optionally, price_unit (unit price). |
invoice | Invoice Type: out_invoice (customer invoice), in_invoice (vendor bill), out_refund (customer credit note) or in_refund (vendor credit note); default: out_invoice. Customer (Partner ID) (required). Invoice Lines: the invoice lines, connected from another component, with product_id, quantity and price_unit. Invoice Date: the date in the format 2026-03-20. Source Document: the reference of the source document, for example the order number. |
payment | Customer (Partner ID) (required). Amount (required). Journal ID: the ID of the payment journal, for example the bank one. Payment Type: inbound (money received) or outbound (money paid); default: inbound. |
product | Product Name (required). Sale Price. Product Type: consu (consumable), service or product (storable); default: consu. From Odoo 18, which has no storable type, product creates goods with inventory tracking. Internal Reference: the product’s internal reference or code. |
custom resource | Resource Name (required): the technical name of the Odoo model, for example res.partner. Resource Data (required): the record’s data, connected from another component or written as a JSON object. |
Delivery notes (delivery_note) have no fields of their own: you can look them up, delete them and confirm them, but not create or change them.
Operations
| Operation | What it does |
|---|---|
Create Resource | Creates a new record of the chosen type and returns its details. |
Update Resource | Changes the details of an existing record and returns how it ended up. Text fields left empty keep their current value in Odoo. |
Get Resource | Returns one record by its ID. |
Get All Resources | Returns the records of the chosen type, optionally filtered. |
Delete Resource | Deletes a record. |
Confirm Resource | Confirms or validates a record: confirms a sales order (order), posts an invoice (invoice) or a payment (payment) and validates a delivery note (delivery_note). Other types return an error. |
Query options
| Field | What it does |
|---|---|
| Fields | The Odoo fields you want back, for example name or email. If you leave it empty, all fields are returned. Only in Get Resource and Get All Resources. |
| Top | The maximum number of records to return. Default: 50. Only in Get All Resources. |
| Filters | Conditions to return only some records. Only in Get All Resources. See below. |
In Filters each condition gives the Odoo field (fieldName), how it is compared (operator) and the value (value). For example, to return posted invoices:
{"fieldName": "state", "operator": "equal", "value": "posted"}To combine several conditions, which must all be met, write them in square brackets separated by commas. The available comparisons are equal, notEqual, like (contains the text), greaterThen (greater than), lesserThen (less than), greaterOrEqual, lesserOrEqual, in (is in a list), notIn (is not in a list) and childOf (belongs to a hierarchy).
Output
The Data output returns the record you worked with as Odoo stores it, with all its fields or only the ones you asked for in Fields. With Get All Resources you get one item per record found. Delete Resource and Confirm Resource return a confirmation with the record’s ID.
You can connect the result to an agent so it can use it in its answer, or to another Odoo component, for example to confirm the order you just created. The component can also be connected to an Agent as a tool. See Tool Mode.
Example
An online shop wants every paid order recorded and confirmed in Odoo.
- The order reaches the flow with the customer’s Odoo ID and its product lines.
- Add Odoo with the
Create Resourceoperation and theordertype. - In Customer (Partner ID) enter the customer’s ID and connect the order lines to Order Lines.
- Add a second Odoo with the
Confirm Resourceoperation, theordertype and, in Resource ID, the order ID returned by the first one.
Good practices
- The IDs of customers, products and journals are found with
Get All Resources. Use Filters and Top so you don’t fetch more records than you need. Delete Resourcecannot be undone, and Odoo may refuse to delete records that are already confirmed, such as a posted invoice.
Related components
- Odoo Webhook: starts a flow when a record is created or changed in Odoo.