Resources · n8n integration

Odoo n8n integrationAutomate Odoo with n8n.

Every Odoo record reachable from a workflow, without touching the API by hand. The Odoo n8n integration covers 20 operations across 4 resources: contacts, opportunities, activities and any custom model in your database. n8n ships no Odoo trigger, so a Schedule Trigger or another app starts the run.

Verified Trustpilot reviews · AI, automation & growth agency

Why automate

What does the Odoo n8n integration actually cover?

The Odoo n8n integration is a single node, shipped with n8n, that reads and writes records in an Odoo database through its external API. It exposes 20 operations across 4 resources: Contact, Opportunity, Activity and Custom Resource, the last one pointing at any Odoo model you name. Authentication runs on one credential, created once and reusable in every workflow.

Three shapes of workflow come back often. The first one fills the CRM: a form entry, or a row added in Google Sheets, lands in Odoo through contact.create, then opportunity.create opens the deal attached to it.

The second one keeps the sales team moving. opportunity.getAll pulls the open deals every morning, a filter keeps the ones that went quiet, and activity.create schedules the follow up call on the record itself, with a short message posted to Slack. The reminder lives in Odoo, where the sales team already works.

The third one exports. contact.getAll with Return All walks every page of the API and pushes the result into Postgres or Airtable, which is the usual way to build a report the database does not offer natively. Published templates go further: one summarizes incoming emails and saves them as notes on a sales opportunity (template 2336), another imports product images from Google Drive (template 3181).

Custom Resource is the escape hatch inside the node. Name the Odoo model in Resource Name or ID, and the same create, read, update, delete and list verbs apply to it. Most of what the three named resources leave out is reachable that way.

Where it stops: there is no Odoo trigger node, so nothing inside the database starts a workflow on its own. A Schedule Trigger calling a listing operation, or the n8n Webhook node called by an automation on the Odoo side, is how a run begins. External API access also needs a Custom Odoo plan, since the One App Free and Standard plans keep it closed. And when an endpoint is not modelled by the node at all, the HTTP Request node calls it directly and reuses the same credential. If the platform choice itself is still open, the n8n review goes through it in detail.

Connect

How do you connect Odoo to n8n?

  1. 01

    Pick the authentication method

    The node accepts two credentials: API Key (Recommended) and Username & Password. Both ask for the same four values: Site URL, Username, Password or API key, and Database name. Check the Odoo plan before anything else, because access to the external API only exists on a Custom plan. The One App Free and Standard plans will refuse the connection whatever you type.

  2. 02

    Generate the API key in Odoo

    Open Your Profile, then Preferences, Account Security, Developer API Keys. Select New API Key, give it a Description such as n8n integration, then Generate Key. Copy the value straight away and paste it into Password or API key on the n8n side. The Username is the one displayed on the Change password screen in Odoo, not the name shown to colleagues.

  3. 03

    Fill the credential and save it

    Site URL takes the address of your Odoo server or site. Database name is the instance name, the one that tells Odoo which database to open when several share a server. Save it once from the Credentials menu, and every Odoo node in every workflow picks it from a dropdown. A credential is simply that stored login, kept apart from the workflows that use it.

Actions

What can the Odoo node do?

The Odoo node exposes 20 operations across 4 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.

Activity

5 operations
01

Create an activity

activity.create

What you see in n8n

Notes & use cases

Schedules an activity on an existing Odoo record, the way a salesperson plans a call or a task from the record itself.

Key parameters

  • Linked Document Model: the Odoo model the activity attaches to, picked from the list or given as an expression such as {{ $json.model }}.
  • Linked Document: the record inside that model.
  • Activity Type: the kind of activity to schedule, taken from the types defined in Odoo.
  • Additional Fields: the mapper where the remaining fields of the activity are filled.
Use cases
a deal with no movement for a week gets a call scheduled on it automatically, so the reminder sits in Odoo and not in somebody's head.
02

Delete an activity

activity.delete

What you see in n8n

Notes & use cases

Removes a planned activity. The record it was attached to stays untouched, only the scheduled task disappears.

Key parameters

  • Activity: the activity to remove, selected from the list or passed as an expression, most often an id collected by an earlier listing step.
Use cases
a deal closes, and the follow up calls a workflow had scheduled on it are cleared in the same run instead of ageing in the sales team's list.
03

Get an activity

activity.get

What you see in n8n

Notes & use cases

Reads a single activity and returns its fields, which is what a later branch needs before it decides anything.

Key parameters

  • Activity: the one to retrieve.
  • Fields to Include: under Options, keeps the response to the fields you name instead of the whole record.
Use cases
before reposting a reminder into a chat channel, pull the activity behind it and send only what the team needs to read.
04

Get many activities

activity.getAll

What you see in n8n

Notes & use cases

Lists activities in batches, with filters that narrow the result to one model or one record.

Key parameters

  • Return All: switched on, n8n walks every page of the API; switched off, Limit caps how many activities come back.
  • Linked Document Model: in Filters, keeps only the activities attached to one model, for example res.partner.
  • Linked Document ID: narrows further, down to a single record.
  • Fields to Include: trims the fields returned.
Use cases
a digest of everything planned on the pipeline, built before the weekly sales meeting.
05

Update an activity

activity.update

What you see in n8n

Notes & use cases

Changes an activity already in the schedule, instead of deleting it and creating a replacement.

Key parameters

  • Activity: which one to modify.
  • Fields to Update: the mapper listing the fields to overwrite; whatever is left out keeps its current value.
Use cases
a meeting moves, and the workflow writes the new date onto the activity rather than leaving a reminder that points at the wrong day.

Contact

5 operations
06

Create a contact

contact.create

What you see in n8n

Notes & use cases

Adds a contact to Odoo and returns it, id included, so the next node can attach a deal or an activity to it.

Key parameters

  • Fields to Send: required, the mapper where each Odoo field receives its value, typed by hand or taken from the incoming item with an expression like {{ $json.email }}.
Use cases
a signup form fills the CRM without anyone retyping a name, and the same run opens the opportunity behind it.
07

Delete a contact

contact.delete

What you see in n8n

Notes & use cases

Erases a contact from the database. Nothing on the n8n side brings it back, so the branch that calls this operation usually sits behind a condition.

Key parameters

  • Contact: the record to erase, selected in the list or resolved from an expression.
Use cases
an erasure request arrives, the workflow removes the matching contact and writes the trace of the deletion somewhere else.
08

Get a contact

contact.get

What you see in n8n

Notes & use cases

Fetches one contact and hands its fields to the rest of the workflow.

Key parameters

  • Contact: which record to read.
  • Fields to Include: under Options, restricts the response to the fields you pick, which keeps a crowded contact record readable downstream.
Use cases
a support ticket carries an Odoo id, the node reads the contact behind it, and the reply goes out with the right name on it.
09

Get many contacts

contact.getAll

What you see in n8n

Notes & use cases

Returns contacts in bulk, filtered with the operator list Odoo itself uses.

Key parameters

  • Return All: on, every page is collected; off, Limit stops the run at a fixed number of contacts.
  • Field Name or ID, Operator and Value: the filter itself, with operators such as like, in or childOf.
  • Fields to Include: the fields you actually want in the output.
Use cases
a nightly export of the customer base into a warehouse, so reporting stops living in exported spreadsheets.
10

Update a contact

contact.update

What you see in n8n

Notes & use cases

Writes new values onto an existing contact, field by field, leaving the rest of the record as it was.

Key parameters

  • Contact: the record to modify.
  • Fields to Update: the mapper; only the fields listed there are overwritten.
Use cases
a phone number corrected in a support tool flows back into Odoo, so the CRM stops drifting away from the place the data is really maintained.

Custom Resource

5 operations
11

Create a record

custom.create

What you see in n8n

Notes & use cases

Creates a row in any Odoo model, not only in the three resources the node exposes by name.

Key parameters

  • Resource Name or ID: required, the Odoo model to operate on.
  • Fields to Send: required, the values for that model, mapped one by one.
Use cases
a product, a project task or a timesheet line created straight from a workflow, without waiting for a dedicated resource to appear in the node.
12

Delete a record

custom.delete

What you see in n8n

Notes & use cases

Deletes one row from the model you name. Two parameters, both required, because the node has to know the model before it can find the row inside it.

Key parameters

  • Resource Name or ID: the model to operate on.
  • Record: the row to delete.
Use cases
a line created twice by a failed run gets removed by the retry branch, before anyone notices the duplicate in Odoo.
13

Get a record

custom.get

What you see in n8n

Notes & use cases

Reads one row from an arbitrary model and returns its fields.

Key parameters

  • Resource Name or ID: the model to read from.
  • Record: which row to retrieve.
  • Fields to Include: here it is a comma separated list of field names, such as name,email,phone, and not a picker.
Use cases
reading an invoice line to decide whether the workflow sends a payment reminder or stays quiet.
14

Get many records

custom.getAll

What you see in n8n

Notes & use cases

Lists rows from a model you name, which is where most reporting workflows on Odoo begin.

Key parameters

  • Resource Name or ID: required, the model to read.
  • Return All: on, n8n pages through the whole model; off, Limit caps the batch.
  • Fields to Include: a comma separated list of field names.
Use cases
pulling the open invoices every morning and pushing them into the spreadsheet the finance team already opens every day.
15

Update a record

custom.update

What you see in n8n

Notes & use cases

Updates a row in any model. Same logic as the contact update, with the model chosen by hand.

Key parameters

  • Resource Name or ID: the model.
  • Record: the row to modify.
  • Fields to Update: the mapper carrying the new values.
Use cases
a stock quantity recomputed in another system written back onto the product record each night, so the catalogue matches what is really on the shelf.

Opportunity

5 operations
16

Create an opportunity

opportunity.create

What you see in n8n

Notes & use cases

Opens a deal in the pipeline and returns it, ready to be linked to a contact or picked up by an activity.

Key parameters

  • Fields to Send: required, the mapper carrying the fields of the deal, filled by hand or from the incoming item with an expression.
Use cases
a qualified inbound lead becomes a deal at the right stage the minute it is qualified, instead of on Friday afternoon when someone finds the time.
17

Delete an opportunity

opportunity.delete

What you see in n8n

Notes & use cases

Drops a deal from the pipeline for good. The operation takes a single parameter, which makes it easy to wire by mistake, so a condition in front of it is a reasonable habit.

Key parameters

  • Opportunity: the deal to remove, chosen in the list or resolved from an expression such as {{ $json.id }}, usually an id read by an earlier step rather than typed.
Use cases
a deduplication run keeps the older deal and deletes the copy that a form submitted twice created, so forecasts stop counting the same revenue twice.
18

Get an opportunity

opportunity.get

What you see in n8n

Notes & use cases

Pulls a single deal with its fields, so the workflow can branch on what it finds there.

Key parameters

  • Opportunity: which deal to read.
  • Fields to Include: under Options, limits the response to the fields you name.
Use cases
before a quote goes out, read the deal and check which stage it sits in, so the document matches what was actually agreed.
19

Get many opportunities

opportunity.getAll

What you see in n8n

Notes & use cases

Returns deals in batches, filtered with the same operator list as contacts.

Key parameters

  • Return All: on, every page comes back; off, Limit fixes the size of the batch.
  • Field Name or ID, Operator and Value: the filter, with greaterThen or notEqual among the operators available.
  • Fields to Include: the fields kept in the output.
Use cases
a weekly pipeline review assembled automatically from the deals that moved stage.
20

Update an opportunity

opportunity.update

What you see in n8n

Notes & use cases

Moves a deal forward without touching the rest of the record.

Key parameters

  • Opportunity: the deal to modify.
  • Fields to Update: the fields to overwrite; everything else keeps the value it already had.
Use cases
a signed document detected in an inbox pushes the deal to the closing stage, and the workflow tells the team in the channel where they already talk.
Need help

Need help automating Odoo with n8n?

A person reads every message.

FAQ

Odoo and n8n, the questions that come up

01Is the Odoo n8n integration free?
On the n8n side, yes. The Odoo node ships with n8n, so there is nothing to install and nothing extra to pay, whether the workflow runs on n8n Cloud or on a self hosted instance under the Community Edition and its Sustainable Use licence. Odoo is where the condition sits: access to the external API the node talks to is reserved to a Custom plan. The One App Free and Standard plans keep it closed, and a workflow built on one of those will fail at authentication no matter how carefully the credential is filled in.
02What credentials do you need to connect Odoo to n8n?
Two methods work. An API key, which the documentation recommends, or a username and password. Both credentials ask for the same four values: the Site URL of your Odoo server, the Username exactly as it appears on the Change password screen, the Password or API key, and the Database name, also called the instance name. The key itself is generated in Odoo under Your Profile, Preferences, Account Security, Developer API Keys, then New API Key. Copy it right away, because it is shown once. Store it through the Credentials menu in n8n, where every workflow can reuse it from a dropdown.
03What are the limits of the Odoo node in n8n?
The node covers 20 operations over 4 resources: Contact, Opportunity, Activity and Custom Resource. Anything outside the three named resources goes through Custom Resource, where you type the Odoo model yourself and get the same create, read, update, delete and list verbs on it. Two things are worth knowing before you build. Listing operations return a limited batch unless Return All is switched on, in which case n8n chains the pages of the API for you. And when an endpoint is not modelled by the node at all, the HTTP Request node calls it directly while reusing the same Odoo credential.
04Can n8n react in real time when something changes in Odoo?
Not by itself. n8n has no Odoo trigger node, so nothing happening inside the database starts a workflow. Two patterns replace it. The first is a Schedule Trigger, a node that fires at a fixed interval, calling a listing operation such as Get many contacts or Get many opportunities, then comparing what comes back with what the previous run stored. The second is the n8n Webhook node, which is a URL any external service can call, including an automation configured on the Odoo side. That second pattern reacts as soon as the call arrives, but it has to be set up in Odoo first.
05n8n or Make for Odoo?
It depends on where the data is allowed to live and how you want the bill built. Make is hosted by its publisher, with no self hosting option, and charges per operation, which is easy to start with and stays predictable only while volume stays flat. n8n runs either on its hosted offer or on your own servers with Docker or npm, and a workflow behaves the same in both cases. That matters when an Odoo database holds customer data you would rather keep in house. The visual logic differs as well, so rebuild the same small scenario on both before committing to one.