---
title: "Odoo Integration"
description: "A generic ORM client for any Odoo model. Search, read, create, update, and delete records, discover model fields, and call arbitrary methods over Odoo’s External API."
url: https://flowrunner.ai/integrations/odoo
date_modified: 2026-08-01T02:40:32-07:00
---

# Odoo

[ERP](https://flowrunner.ai/integrations/category/finance-accounting)

A generic ORM client for any Odoo model. Search, read, create, update, and delete records, discover model fields, and call arbitrary methods over Odoo’s External API.

[Verified](https://flowrunner.ai/integrations/verified "What does verified mean?") · 9 actions · API key · available

[Odoo website](https://odoo.com/) · [Platform Documentation](https://www.odoo.com/documentation/master/developer/reference/external_api.html) · Capability data verified 2026-08-12

1.  A new contact or order arrives from an upstream system
2.  Agent reads the record and maps it to the target Odoo model
3.  Agent runs Search Read to find an existing match and avoid duplicates
4.  Agent confirms the required fields against the model via Fields Get
5.  Agent runs Create or Update on the model to write the record
6.  The originating team is updated with the Odoo record ID
7.  Confirming a sales order via Call Method is paused for approval on large values

## What This Integration Enables

Agents work against any Odoo model with a compact, generic operation set. They query with domain filters (Search Read, Search, Search Count), read specific records (Read), and write (Create, Update, Delete). Fields Get discovers a model's fields before an agent builds a create or update payload, which keeps the flow honest against custom models and version differences. Call Method invokes arbitrary model methods, so an agent can drive real Odoo business logic, for example calling `action_confirm` to confirm a sales order or posting a message on a record. Because every operation is model-agnostic, one connector reaches the entire Odoo surface: CRM, sales, purchasing, inventory, accounting, and any custom module a team has built.

### Without FlowRunner

**Manual re-keying**: Someone copies contacts and orders from other tools into Odoo by hand

**Duplicates pile up**: New records are created without checking whether the partner already exists

**Orders confirmed blind**: A sales order is confirmed without a check on its value or credit terms

### With FlowRunner

**Records synced in-flow**: Create and Update write the record the moment the upstream event fires

**Deduped on write**: Search Read runs before any create, so existing partners are matched, not duplicated

**Large orders reviewed**: Confirming a high-value order routes to a person before Call Method posts it

## Use Case Scenarios

### Contact Sync from CRM

A new contact is created in an upstream CRM. The agent calls Search Read on `res.partner` to check for an existing match by email, then Create if the partner is new or Update if it exists. It confirms the write with a follow-up Search Read and returns the Odoo record ID to the originating system. Contacts that used to be re-keyed by hand land in Odoo deduped and complete, the moment they are created elsewhere.

### Order Intake and Reporting

Orders flow in from a store. The agent maps each one to `sale.order`, runs Create to record it, and adds the lines against the right product records. On a schedule, it calls Search Read on `sale.order` for recent activity and logs each order to a reporting sheet in [Google Sheets](https://flowrunner.ai/integrations/google-sheets). The ERP stays current without a person exporting and pasting once a week.

### Field Discovery for a Custom Model

An operation runs a custom Odoo module with its own model. Before writing to it, the agent calls Fields Get to read the model's available fields, then builds a Create payload that matches. When the module changes, the flow adapts to the new field set instead of breaking on a hardcoded assumption.

## Human-in-Loop Highlight

Reading and syncing records is safe to automate. Confirming a sales order posts a commitment, and that is where an agent should stop and ask, because human-in-the-loop is the pattern where the agent pauses on the actions that carry consequence, assembles the context, and resumes on a human's answer. When a workflow is about to confirm an order via Call Method with `action_confirm` and the order value crosses a configurable threshold, the agent does not post it on its own. It presents the customer, the order total, the credit terms, and any open balance, then routes to the account owner in [Slack](https://flowrunner.ai/integrations/slack): "Order for Acme Inc totals $84,000 and the account has a past-due balance. Confirm the order, hold it, or escalate?" The owner decides. On approval, the agent runs Call Method and records who confirmed it. Routine orders confirm automatically; the ones with money at stake get a human.

Agent processes routinely

Detects exception requiring judgment

Clear match Continues automatically

Ambiguous Routes to human via Slack

Human decides

Agent resumes with decision

## Agent Capabilities

9 actions

### Records

7

-   **Search Read** Searches a model with a domain filter and returns matching records in one call. Used as the find step before a create or update.
-   **Search** Searches a model with a domain filter and returns matching record IDs.
-   **Search Count** Counts records matching a domain filter without fetching them. Used to drive branching and reporting logic.
-   **Read** Reads specified fields from records by ID.
-   **Create** Creates a record in any Odoo model from a values object.
-   **Update** Updates one or more records by ID.
-   **Delete** Deletes records by ID.

### Metadata

1

-   **Fields Get** Discovers the fields a model exposes before building a payload. Used to stay correct against custom models and version differences.

### Advanced

1

-   **Call Method** Calls an arbitrary model method, such as \`action\_confirm\` on a sales order or posting a message on a record. Used to drive real Odoo business logic from a flow.

## Frequently Asked Questions

### What can FlowRunner do with Odoo?

FlowRunner agents can run Search Read, Search, and Search Count in Odoo, plus 6 more actions.

### Does connecting Odoo to FlowRunner require OAuth?

No. Odoo connects to FlowRunner with an API key, no OAuth flow required.

### Can Odoo trigger a FlowRunner workflow automatically?

Odoo doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

**Work at Odoo?** This integration exposes Odoo to AI agents on every FlowRunner plan, including through MCP, at no cost to you. [See what FlowRunner offers integration partners](https://flowrunner.ai/integrations/partners), including how to keep this page current.

---
Markdown version of https://flowrunner.ai/integrations/odoo. Site index: https://flowrunner.ai/llms.txt
