FlowRunner
PricingContact
Theme
Start Free
Integration Guide July 17, 2026 8 min read

How to Connect Odoo with Google Sheets (With or Without an AI Agent)

Connect Odoo and Google Sheets so order and contact records sync automatically, optionally as an AI agent that pauses for human approval before posting high-value commitments.

How to Connect Odoo with Google Sheets (With or Without an AI Agent)
trigger New or updated row in Google Sheets fires On New or Updated Row, or a schedule fires a Search Read on the Odoo model.
action Agent calls Search Read on the Odoo model to find a matching record by email or order ID. If no match, it calls Fields Get to confirm the model fields, then Create to write the new record.
check Agent evaluates the record: is the order value above the approval threshold, or does the account carry an open balance? Is the sheet row missing required fields?
human Agent pauses and routes context to the account owner in Slack: order total, customer name, credit terms, open balance. Owner approves, holds, or escalates.
action On approval, agent calls Call Method with action_confirm to post the Odoo sales order, then calls Add Row or Update Row in Google Sheets to record the outcome.
action Agent writes a status value back to the originating sheet row and logs the decision, the decider's identity, and the timestamp to the audit trail.

How do you connect Odoo to Google Sheets?

You connect Odoo to Google Sheets by triggering a FlowRunner flow on a Google Sheets event (On New Row, On New or Updated Row) or on a schedule, then using the Odoo connector’s Search Read, Create, Update, and Add Row actions to move records between the two systems. FlowRunner is a visual AI-agent orchestration platform where automations run autonomously and pause for human judgment on the steps that carry real consequence. That same connection can run as an AI agent that reads each record, reasons about whether it should proceed or escalate, and calls a human-in-loop flow as a callable tool before posting any commitment that warrants review.

The problem: your ERP and your spreadsheets are out of sync by default

The gap between Odoo and Google Sheets costs operations teams real time. An AP clerk exports an order report from Odoo on Monday morning, pastes it into a tracking sheet, and by Tuesday afternoon the sheet is already wrong because three orders have been updated and two new contacts have been added. Someone else checks the sheet to answer a question and makes a decision on stale data. The exception the sheet was supposed to catch fell through the cracks because no one saw the row until Thursday.

The fix that teams reach for is a manual sync ritual: scheduled exports, copy-paste, hand-keyed updates. It scales linearly with volume, which means it does not scale at all. When a business processes 200 orders a week instead of 20, the ritual either consumes two people’s afternoons or gets skipped. The spreadsheet becomes a liability instead of a tool.

How it works: the connection

The Odoo connector in FlowRunner is a generic ORM client built and verified against Odoo’s External API. It works against any Odoo model, standard or custom, by passing the model’s technical name. The Google Sheets connector covers the full spreadsheet surface: five triggers and 34 actions for reading, writing, and managing rows, sheets, and documents.

A basic Odoo-to-Sheets sync works like this. A schedule fires on a set interval. The agent calls Search Read on sale.order with a domain filter for the time window, for example orders created or updated in the last hour. Each matching record is mapped to the target sheet columns, and the agent calls Add Row to append new entries or Find Row followed by Update Row to update existing ones. The sheet stays current without anyone opening Odoo.

A dark flat flow diagram showing five labeled steps in sequence: a clock icon labeled "Schedule fires", a database icon labeled "Search Read on sale

The reverse flow runs on the On New Row trigger. When a row lands in a tracked sheet, the agent reads the row values, calls Search Read on res.partner to check for an existing contact by email, and calls Create if no match is found or Update if one is. It runs Fields Get first to confirm the model fields, which keeps the write correct against custom Odoo modules without hardcoding assumptions. After writing, it calls Update Cell to write a status value back to the sheet row: “Synced to Odoo, record ID 4821.”

Real action names used: Search Read, Fields Get, Create, Update, Add Row, Update Row, Find Row, Update Cell.

Can an AI agent run it? (And why a human stays in the loop)

A standard sync tool moves data on a fixed schedule. An AI agent reads the data and decides what to do with it, including deciding when to stop and ask a person.

The difference matters most at the consequential step. In the Odoo context, confirming a sales order via Call Method with action_confirm is a commitment. It posts the order, triggers fulfillment, and starts the clock on payment terms. A sync tool would run that action for every order that meets a hardcoded threshold. An agent reads the full record before deciding.

Here is a real decision moment. An order for Acme Inc comes in at $84,000. The agent checks the record. Acme’s usual order size is $12,000. The account has a past-due balance of $6,200. The agent’s instructions say to confirm routine orders automatically, but this order is not routine. It is 7x the customer’s typical volume, and the account has open debt. The agent does not confirm the order. It invokes the human-in-loop flow.

A dark Slack-style approval card on a dark background

The account owner receives the card in Slack with full context: customer name, order total, how it compares to the customer’s history, the open balance, and three options. Confirm. Hold. Escalate. The owner decides. On approval, the agent runs Call Method with action_confirm, records the decision and the decider’s identity in the audit trail, and logs the confirmed order to the tracking sheet with Update Row. The flow resumes.

This is not a threshold check. The agent evaluated the combination of factors: order size relative to history, account standing, and the instruction to route exceptions to a person. A $90,000 order from a customer with a decade of clean history and zero open balance would have confirmed automatically. Prospects call this a “digital andon cord.” The agent stops the line when it hits real uncertainty.

FlowRunner vs Zapier for Odoo and Google Sheets

Zapier is the tool most operations teams reach for first when they want to connect Odoo and Google Sheets without writing code. It is genuinely easy to set up, has a large template library, and handles simple trigger-and-action flows well. For a team that wants a form submission to append a row or a new Odoo contact to land in a sheet, Zapier works.

The differences appear when the work gets more complex.

FeatureZapierFlowRunner
Human-in-loop orchestrationNot available as a native agent tool; requires a separate approval appNative: agent invokes human oversight as a callable tool and resumes on the response
AI agent with reasoningNot available; Zapier runs fixed step sequencesNative: agent reads data, reasons about it, picks actions based on context
Odoo custom model supportLimited to standard models in the templateFields Get discovers any model’s fields at runtime
Pricing modelPer-task pricing that grows with volumeWorkflow-based execution tiers; Growth starts at $45/mo for 12,000 executions
Unlimited usersSeat-based pricing on most plansUnlimited users on every tier
Self-hosted optionNoYes, free Community Edition

Zapier does not offer a native AI agent layer that can reason about data and invoke human approval as a tool. If the connection needs to make a judgment call before writing to Odoo or committing a row to a sheet, Zapier routes around that decision rather than making it.

Before and after

CategoryBeforeAfter
ERP sync frequencyWeekly export and paste by handContinuous: records sync the moment an event fires
Duplicate contactsNew records created without checking for existing matchesSearch Read runs before every create; existing partners are matched, not duplicated
High-value order reviewOrders confirmed without checking account standingAgent evaluates history and balance; consequential orders pause for human approval
Sheet accuracySheet is out of date within hours of the last exportAgent writes status and outcome back to the sheet row after every operation
Exception visibilityExceptions fall through the cracks until a person noticesFailed rows are flagged in the sheet and routed to the owner before they reach Odoo
ReportingManual export and file deliveryExport Sheet runs on schedule and delivers the file without anyone opening the spreadsheet

A split-panel dark flat illustration

What you can build

Order intake to reporting sheet. When orders arrive from an external source, the agent maps each to sale.order using Create, adds the line items, and logs every order to a Google Sheet with Add Row. The ERP and the tracking sheet stay in sync without a person exporting once a week.

Contact dedup and sync. A new row in a CRM intake sheet triggers the flow. The agent calls Search Read on res.partner to check for an existing match by email. If a match exists, it calls Update. If not, it calls Create. It writes the Odoo record ID back to the sheet with Update Cell.

Scheduled order report delivery. On a schedule, the agent calls Search Read on sale.order for recent activity, calls Export Sheet to generate a file of the reporting tab, and delivers the URL to the team. No one opens the spreadsheet.

Row validation with human fix. A new row triggers downstream processing. The agent validates required fields. Rows that pass are written to Odoo and marked complete with Update Cell. Rows that fail are flagged with Format Row and routed to the data owner with full context before they reach the ERP.

Custom model sync. An operation runs a custom Odoo module. Before writing, the agent calls Fields Get to read the model’s available fields, builds a Create payload that matches, then logs the outcome in Google Sheets. When the module changes, the flow adapts without breaking on hardcoded assumptions.

Common questions

Is it free to connect Odoo and Google Sheets on FlowRunner? FlowRunner offers a $100 credit on the Growth tier, which covers roughly 67 days of real use with no credit card required. After the credit, Growth starts at $45 per month. All tiers include unlimited users and workflows.

Can I self-host FlowRunner? Yes. FlowRunner offers a free Community Edition for self-hosted single-instance deployments and an Enterprise self-hosted tier with multi-instance clustering and a full compliance suite.

Does the AI agent need my own OpenAI key? FlowRunner uses a bring-your-own-keys model. You connect the AI provider of your choice, whether that is OpenAI, Anthropic, or another supported provider, using your own API key. The platform does not lock you into one model.

What happens when the agent is not sure what to do? The agent invokes a human-in-loop flow as a callable tool. It packages the relevant context, routes it to the right person via Slack, email, or another channel, and pauses until it receives a decision. The decider’s identity, their response, and the timestamp are recorded in the audit trail.

Does FlowRunner handle Odoo custom models? Yes. The Odoo connector includes a Fields Get action that discovers the fields a model exposes before any write. This keeps flows correct against custom modules and version differences without hardcoding field names.

What Google Sheets triggers can start a flow? FlowRunner supports five Google Sheets triggers: On New Row, On New or Updated Row, On Document Changed, On New Sheet, and On New Document. Any of these can start a flow that writes to Odoo or runs further processing.

Getting started

FlowRunner includes a $100 credit on the Growth tier covering roughly 67 days of real use. No credit card required. Corporate email required.

Start at flowrunner.ai or book a 30-minute walkthrough at calendly.com/flowrunner/intro to see the Odoo and Google Sheets connection with a real agent running against your data.

Integration pages: Odoo and Google Sheets.

Ready to automate this?

Start building your first workflow free. $100 in credits, no card required.