Straight answers about building on Odoo
No vague marketing copy. These are the same practical explanations we'd give in a real scoping conversation, written down so you don't have to ask first.
Connecting to Odoo
How Odoo's API works, which one your version has, and what it means for an integration.
Why Odoo API calls are slow, and what actually fixes it
Slow Odoo integrations are almost never Odoo being slow. The real causes: one call per row, fetching rows to do arithmetic the database could do, asking for every field, and no pagination. Plus why you cannot profile an Odoo Online database.
Odoo stock quantities: on hand, forecasted, free, and why they disagree
Odoo exposes several quantity fields that all look like the stock level and mean different things. What on hand, forecasted and free quantity each measure, which one an app should show, and why the same field returns a different number depending on the warehouse, location and companies in context.
Odoo API errors: what each one actually means
Access Denied, Invalid apikey, AccessError, 403, 404 and 422 from Odoo's external API, what each one is really telling you, and how to tell an authentication problem from a permissions problem before you change any code.
Odoo API examples: what a call looks like, and what takes the time
What an Odoo API call looks like in JSON-2, JSON-RPC and XML-RPC, which transport your version needs, and why the calls are the easy part: access rights, write-back safety, speed and staying working are the real project.
Odoo 19's JSON-2 API: what changed, and what to do about XML-RPC
Odoo 19 added an HTTP JSON API at /json/2/<model>/<method> with bearer API keys, and scheduled XML-RPC and JSON-RPC for removal in Odoo 22. The request shape, the plan gate, key rotation, the one-call-one-transaction rule and a migration table.
Odoo API keys: how to create, scope and rotate them
Where to generate an Odoo API key, how it is sent on JSON-2 versus XML-RPC, the three-month limit in Odoo 19, which user should hold it, and the six reasons a key usually fails.
How Odoo's API actually works (JSON-2, JSON-RPC, XML-RPC and the ORM)
A practical explanation of Odoo's external API: JSON-2 on Odoo 19, JSON-RPC and XML-RPC before it, API-key authentication, and the ORM methods (search_read, create, write) a custom app calls.
Read-only vs write-back Odoo integrations: which do you need?
The difference between an app that only displays Odoo data and one that creates or updates records in Odoo, and why that distinction changes scope, risk and cost.
Odoo REST API: what exists in Odoo 19, and what came before
Odoo 19 has an HTTP JSON API (JSON-2) with bearer API keys; older versions only have XML-RPC and JSON-RPC, deprecated for removal in Odoo 22. What each looks like and which to use.
Why your Odoo API call returns data from the wrong company
A recurring multi-company Odoo API gotcha: queries can return records across every company a user can access unless the request explicitly scopes company context.
Cost and hiring
What things actually cost, and who to hire for which kind of work.
How much does a custom Odoo app cost?
A grounded look at what drives the price of a small Odoo-connected app, with real ranges instead of vague 'contact us for pricing.'
Hiring an Odoo developer vs a web app studio: what's the difference?
An honest, even-handed comparison of when an Odoo developer or implementation partner is the right call, and when a narrow web app studio is the better fit instead.
Odoo implementation partner cost, and when you don't need one
Honest, hedged ranges for what a full Odoo implementation typically costs, and how to tell whether your actual problem needs one or just a single connected app.
Build, customize or configure
When a change belongs inside Odoo, and when it belongs in an app next to it.
Odoo import errors: external IDs, relations, and what fails silently
Why an Odoo import says no matching record found for external ID, the three ways to point at a related record and why you must pick exactly one, why a second import created duplicates, and the import failures that never raise an error at all.
Odoo access rights errors: why a user cannot see a record
How to read an Odoo access error: which of the two security layers refused the operation, why adding a record rule often removes access instead of granting it, how field-level access hides a field rather than failing, and when locking down the backend is the wrong fix entirely.
Odoo customization vs a custom web app: what's the difference?
How in-Odoo customization (views, studio, custom modules) differs from building a separate web app against Odoo's API, and how to tell which one a given problem actually needs.
What happens to a custom app when Odoo upgrades?
Why a separate web app is affected differently by an Odoo version upgrade than in-Odoo customizations are, and what actually needs to be checked when Odoo moves versions.
Odoo Studio can't do this: where the no-code builder hits a wall
What Odoo Studio is genuinely good at, where its no-code approach hits real limits, and when a workflow needs a different kind of interface entirely.
Apps and portals
The specific builds people ask for most: picking, portals, dashboards, approvals.
Odoo barcode app: use Odoo's, or build a custom one?
Odoo's own Barcode app is genuinely capable. An honest look at when it's enough and when a narrower custom picking app makes more sense.
How to give customers a self-service portal without rebuilding Odoo's frontend
The difference between Odoo's built-in customer portal and a fully custom-branded ordering portal, and how to tell which one a given business actually needs.
Why your Odoo dashboard is slow, and when a standalone one fixes it
The real technical reason cross-module Odoo dashboards and reports can be slow, and how a standalone read-only dashboard app sidesteps that specific problem.
Purchase approvals stuck in Odoo's backend? A simple mobile approve or reject app
Why purchase order approvals bottleneck when managers are away from a desktop, and how a minimal mobile approve/reject screen writes decisions straight back to Odoo.
When Odoo is the problem
Signals that a team needs a simpler interface rather than more training.
Signs your team needs a simpler interface than Odoo's backend
Practical signals, from workarounds on paper to reluctant adoption, that indicate a workflow would benefit from a focused front end instead of more Odoo training.
Reps won't use Odoo on their phones? Build the three screens they actually need
Why desktop-first CRM/Sales interfaces see low adoption from field reps on phones, and why a narrow 3-screen order flow written back to Odoo works better.