If you run Odoo on Odoo.sh — Odoo's managed cloud platform — and you've tried to connect a data warehouse or BI tool, you've almost certainly hit the same wall: there is no direct PostgreSQL access. Fivetran fails. Airbyte fails. Any connector that expects a Postgres host, port, and credentials fails.
This is not a configuration mistake. It is a deliberate platform restriction. And yet your business needs Odoo data in BigQuery, Microsoft Fabric, Power BI, or Google Sheets. This post covers the three approaches that actually work — with an honest comparison of each.
Why Odoo.sh blocks direct database connections
Odoo.sh is a PaaS — Odoo runs your instance on shared infrastructure and manages the PostgreSQL database for you. To keep tenants isolated and the platform secure, Odoo blocks all inbound TCP connections to port 5432 at the network level. There is no configuration toggle to enable it.
This means tools that work perfectly on self-hosted Odoo — Fivetran's Postgres source, Airbyte's Postgres connector, any BI tool with a "connect to database" option — are simply not compatible with Odoo.sh. The restriction also applies to Odoo Online (odoo.com hosted instances).
The good news is that Odoo still exposes all of its data through its Python ORM and its HTTP API layer. Any solution that works within or through those layers works on Odoo.sh.
The three approaches that work on Odoo.sh
After the database access restriction, you have three viable paths to get Odoo data into a warehouse:
Native connector modules
Install a purpose-built Odoo module that syncs data directly from inside Odoo's Python process — no external DB access needed.
REST API / Webhooks
Use Odoo's JSON-RPC API or webhook module to push or pull data over HTTP to your warehouse or pipeline.
Built-in export + scheduled jobs
Odoo's native CSV export and scheduled email actions. Works for simple cases but does not scale.
Approach 1: Native Odoo connector modules
The most reliable path for Odoo.sh is a connector module installed directly into your Odoo instance from the Odoo App Store. Because the module runs inside Odoo's Python process, it uses the ORM to read data — it never needs a raw database connection. It connects outbound to your warehouse (BigQuery, Fabric, Sheets) using that warehouse's official API, which is always allowed.
KSROlabs publishes connector modules that work exactly this way:
Incremental sync of any Odoo model to BigQuery. Supports CDC via write_date, partitioned tables, and schema auto-migration.
Expose Odoo 17 data to Microsoft Fabric through secure REST exports, $.next pagination, and full or incremental loads.
Direct Odoo-to-Power BI data push. No gateway required. Configured entirely within Odoo settings.
Sync Odoo models to named sheets on a schedule. Ideal for operational dashboards and small-team reporting.
Pros
Governed incremental syncs. No external infrastructure needed beyond the target warehouse. Full Odoo ORM access means you can sync computed fields, related records, and multi-company data. Installed and configured entirely within Odoo — no code required.
Cons
Must be sourced from the Odoo App Store — you can't install arbitrary code on Odoo.sh. Sync frequency is limited by Odoo's scheduled action engine (typically every 1–60 minutes), so true real-time streaming is not possible with this approach alone.
Approach 2: Odoo REST API / Webhooks
Odoo exposes a JSON-RPC API at /web/dataset/call_kw that works on every Odoo deployment including Odoo.sh. Any tool that can make HTTP requests can read and write Odoo data through this API — no database connection required.
The KSROlabs Webhooks & REST API module extends this with outbound webhooks: configure HTTP actions that fire when Odoo records are created, updated, or reach a specific status. This is ideal for real-time or near-real-time event streaming into a warehouse or data pipeline.
Use cases: push confirmed sales orders to a BigQuery streaming insert endpoint; trigger a Fabric pipeline when an invoice is posted; send inventory moves to a custom HTTP sink in real time.
Pros
True real-time event-driven syncs. Works on Odoo.sh, Odoo Online, and self-hosted. You control the destination — any HTTP endpoint including Kafka, Pub/Sub, or a custom ingest function.
Cons
Requires an HTTP endpoint to receive data — you need to provision and maintain this infrastructure. Initial historical backfills require a pull-based polling script against the JSON-RPC API. More engineering effort than a pre-built connector module.
Approach 3: Odoo's built-in export + scheduled jobs
Odoo ships with a built-in list-view export (CSV/XLSX) and a scheduled actions engine that can run server actions on a timer. For very simple use cases — a weekly CSV email of open invoices, for example — this requires no additional modules.
In practice this approach breaks down quickly. Exports are manually triggered through the UI and limited to what you can select on a list view — no computed fields, no cross-model joins, no incremental tracking. Scheduled actions can automate the trigger, but the output goes to email attachments, not directly to a warehouse. You end up building fragile glue scripts to parse and load these files, which creates more maintenance burden than using a proper connector.
Consider this approach only for ad-hoc one-off exports or as a stopgap while evaluating a proper connector module. It does not scale beyond a handful of rows and will not replace a data warehouse pipeline.
Comparison: which approach is right for your Odoo.sh setup?
A quick reference across the three approaches:
| Criteria | Native Connector | REST API / Webhooks | Built-in Export |
|---|---|---|---|
| Setup time | ~30 min | ~1–2 hrs | Minutes (but manual) |
| Real-time sync | Scheduled (near real-time) | Yes (event-driven) | No — manual trigger |
| Incremental CDC | Yes | Yes (with write_date filter) | No |
| No external infra | Yes | Needs HTTP endpoint | Yes |
| Works on Odoo Online | Yes | Yes | Yes |
| Governed field access | Yes (ORM-level) | Yes (key scopes) | User-dependent |
For most Odoo.sh customers, a native connector module is the right default — especially if your destination is BigQuery, Microsoft Fabric, or Google Sheets. Add Webhooks if you need real-time event streaming on top.
Frequently asked questions
Can I connect Fivetran or Airbyte to Odoo.sh?
Not via direct database connection — Odoo.sh blocks external PostgreSQL access entirely. However, both Fivetran and Airbyte have REST API connectors that can pull data from Odoo's JSON-RPC API. Alternatively, the KSROlabs Webhooks & REST API module lets you push data to any HTTP endpoint on a schedule, which works well as a source for custom pipeline ingestion.
Does Odoo.sh support direct PostgreSQL connections?
No. Odoo.sh is a managed PaaS and deliberately blocks all external TCP connections to the underlying PostgreSQL database. This is by design — Odoo enforces multi-tenant database isolation and security at the platform level. Even if you have shell access via the Odoo.sh dashboard, you cannot expose port 5432 to external tools. This breaks standard ETL connectors like Fivetran's Postgres source, Airbyte's Postgres connector, and any BI tool that connects directly to the database.
How do I get Odoo.sh data into BigQuery?
Install the KSROlabs BigQuery Connector for Odoo as a module from the Odoo App Store. Because it runs inside Odoo's Python process using the ORM, it needs no external database connection. Configure it with your Google Cloud project credentials, select the models to sync, and it pushes data incrementally to BigQuery on a schedule you control. This works on Odoo.sh, Odoo Online, and self-hosted Odoo.
Can I sync Odoo.sh data to Microsoft Fabric?
Yes. The KSROlabs Microsoft Fabric Connector module works on Odoo.sh because it runs inside Odoo and exposes token-protected REST export endpoints that Microsoft Fabric can pull from. No inbound database access is required. For Odoo 17, it supports full exports, write_date incremental loads, Fabric REST pagination with $.next, and job monitoring.
How do I get Odoo.sh data into Power BI?
You have two good options. First, install the KSROlabs Power BI Connector module, which pushes Odoo data to a staging layer that Power BI can query. Second, use the BigQuery or Fabric Connector to land Odoo data in a warehouse, then connect Power BI to that warehouse — this gives you a more governed semantic layer. The REST API approach also works if you build a custom Power BI dataflow using Odoo's JSON-RPC endpoint.
What is the fastest way to export Odoo.sh data to a spreadsheet?
The KSROlabs Google Sheets Connector is the fastest path — install the module, authenticate with your Google account, and Odoo pushes selected models to named sheets on a schedule. For event-driven pushes (e.g., push a record to Sheets when a sale order is confirmed), the Webhooks & REST API module lets you configure HTTP actions triggered by Odoo events, with Google Sheets as the destination via its API or a Zapier/Make intermediary.