Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Productivity
  3. BambooForge Metabase Connector v 19.0
  4. Sales Conditions FAQ

BambooForge Metabase Connector

by BambooForge Labs
Odoo

$ 101.59

v 19.0 Third Party
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies Discuss (mail)
Lines of code 7071
Technical Name bambooforge_metabase_connector
LicenseOPL-1
Versions 17.0 18.0 19.0
  • Description
  • Manifest
  • Documentation
  • License
BambooForge Labs
BambooForge Labs Production-grade Odoo apps · source included · tested
Odoo 19.0 bambooforge.labs@gmail.com

BambooForge Metabase Connector

A real connector between Odoo 19 and Metabase — the popular open-source business-intelligence platform for dashboards, questions and SQL. Point it at your Metabase URL, drop in an API key, and the connector imports your databases, questions and dashboards straight into Odoo over the Metabase REST API — import-first and read-only, on a schedule, to catalog your BI content inside Odoo, with dry-run safety and full source you can audit.

Odoo 19.0 Metabase self-hosted REST API (x-api-key) Live-tested — 1 db · 42 questions · 3 dashboards Read-only import Scheduled sync Source included
Buy & deploy today →
24-hour supportWe answer every request within 24 hours — setup help included.
2-month money-backReport a bug within 2 months of purchase — if it isn't resolved within 15 days, you get a full refund.
Live-tested, not theoreticalVerified against a real Metabase instance — 1 database, 42 questions and 3 dashboards imported, 0 errors.
Full source includedComplete source in the package — audit every line, extend it freely, never get locked in.
importdatabases · questions · dashboards
0errors on the live Metabase import
keyx-api-key — no OAuth, no passwords
read-onlynever writes back to Metabase
Tested for real

Verified live against a running Metabase

We don't just claim a vague version range. The connector was installed on Odoo 19, pointed at a live Metabase v0.62 instance over its REST API, and run through a full database / question / dashboard import — 0 errors.

Metabase versionAPILive result
v0.62REST API (x-api-key)✔ Live-tested — 1 database, 42 questions, 3 dashboards, 0 errors
v0.5x – v0.6xREST API✔ Compatible — validate on your build
Open-source / Pro / EE/api + API keys✔ Supported (x-api-key)

The live test imported 1 database (“Sample Database”, engine h2), 42 questions and 3 dashboards with no errors. Each question carried its chart display type — smartscalar, table, gauge, row and more — and linked back to its parent database, while the dashboards “E-commerce Insights”, “Sales Overview” and “Product Analytics” became Odoo records, read straight from the Metabase REST API.

Built to actually sync — not to look busy

Metabase exposes a clean REST API, and this connector treats it that way: it authenticates with an API key sent as x-api-key, calls the /api endpoints for your databases, saved questions and dashboards, and maps each one onto a dedicated Odoo model — so you can catalog your Metabase BI content without leaving Odoo. Every model ships with verifiable sync logic, covered by tests — no fake dashboards, no “readiness score” with nothing behind it.

What you actually get

Everything below ships in the box — an import-first, read-only connector that reads your Metabase over the REST API with an API key.

Live signed-embed dashboards

Embed live Metabase dashboards and questions straight into an Odoo record via Metabase signed embedding: Odoo mints a short-lived HS256 JWT server-side, signs it with your embedding secret (which never leaves the server) and points the Live View iframe at it. The token is re-signed every time the form opens, so a leaked URL expires fast.

D

Databases → metabase.database

Each data source Metabase connects to imports into a dedicated metabase.database record — its name and engine — so your Metabase data-source inventory lives in Odoo.

Q

Questions → metabase.question

Each saved question (card) becomes a metabase.question record — its name, its chart display type, and the database it queries — so you can see every saved query at a glance.

Dashboards → metabase.dashboard

Each Metabase dashboard imports into a metabase.dashboard record by name, so your collection of dashboards is catalogued and searchable inside Odoo.

Questions linked to databases

Every question is tied to its parent database, so you can open a database in Odoo and see which saved questions run against it — your Metabase structure carries over intact.

Scheduled sync

The connector imports from Metabase on a schedule (cron) — point it at your instance and it keeps Odoo up to date. Write-back is on the roadmap (Metabase is pull-only).

{ }

Key-auth REST API client

One client authenticates with a Metabase API key sent as the x-api-key header against the /api endpoints. No OAuth, no passwords — JSON responses, with retry, backoff and rate-limit handling built in.

Sync Control Tower

A live operations dashboard for every instance — sync health, circuit-breaker state, queue backlog, dead-letter count, open conflicts and throughput, each a click-through to the jobs behind it. Know sync is healthy without reading a single log line.

Bulk dead-letter console

Every job that exhausted its retries lands here, grouped by instance and error. Select many at once and bulk requeue once you've fixed the cause, or bulk discard — no record-by-record clean-up.

Conflict-resolution workbench

When a local and a remote change collide, the conflict is captured with a side-by-side snapshot diff. Triage them in one place and bulk-resolve — keep local or take remote — instead of digging through history.

Field-mapping studio

Map source fields to Odoo fields visually, test the exact payload transform in a wizard before you save, and let one-click suggestions propose sensible mappings. Expression transforms and step conditions evaluate through Odoo's sandboxed safe_eval.

See it running

A live walkthrough inside Odoo 19

Recorded in a real Odoo 19 connected to a live Metabase — the connection cockpit, a synced database, the imported questions and dashboards, and the flow engine, all on real data.

Your browser does not support embedded video — see the screenshots below.
Real screenshots

Every screen, from a live install

Captured from a running Odoo 19 connected to a live Metabase — real data imported through the connector, not mockups.

Connection cockpit
Connection cockpit — Metabase URL, API key, healthPer-instance Metabase URL, API key, health and one-click safety controls — connected and green.
Imported questions
Imported Metabase questions with chart typesSaved questions as metabase.question records — name, chart display type and parent database.
Imported dashboards
Imported Metabase dashboards in OdooEach dashboard catalogued as a metabase.dashboard record by name, live in Odoo.
Synced databases
Synced Metabase databasesEach data source as a metabase.database record — name and engine.
Import flow templates
Built-in import flow templatesMulti-step import flows (fetch → map → upsert → log) ready to run.
Sync Control Tower — Metabase connector
Sync Control TowerEvery store on one board: health, circuit-breaker state, backlog, dead-letters, conflicts, 24h throughput and failure rate — drill into any number in a click.
Dead-letter console — Metabase connector
Dead-letter consoleExhausted-retry jobs grouped by error type with the exact API error kept — bulk requeue or discard once the remote system is fixed.
Conflict workbench — Metabase connector
Conflict workbenchRecords changed on both sides shown Odoo vs. remote with a field diff — resolve with “Odoo wins”, “Remote wins” or mark reviewed.
Premium operations, in motion

Run every Metabase store from one Control Tower

A short walkthrough of the operations tooling on real data: the Control Tower board, the side-by-side conflict workbench and the bulk dead-letter console.

Your browser does not support embedded video — see the screenshots above.

Production safety, by default

Resilient queue

Retry with exponential backoff, rate-limit awareness, dead-letter handling and conflict capture for every job.

Circuit breaker

Auto-pauses sync after N consecutive failures so a broken endpoint can never flood your data.

Dry-run mode

Default-ON for every new instance — preview the exact write before anything touches live records.

Pre-flight validation

Blocking and warning findings surfaced before go-live, with auto-fix suggestions.

Rollback snapshots

Capture record state before risky writes and roll back cleanly when needed.

Read-only by design

The connector only reads your Metabase over the REST API — it never creates, updates or deletes anything there, so a sync can never alter your live databases, questions or dashboards.

Honest feature matrix

No asterisks, no fake checkmarks. Here is exactly what this version does — and what is on the roadmap.

CapabilityStatus
Key-auth REST API connection (x-api-key against /api)✔ Included
Databases → metabase.database (name, engine)✔ Included
Questions → metabase.question (name, chart display type, parent database)✔ Included
Dashboards → metabase.dashboard (name)✔ Included
Questions linked to their parent database✔ Included
JSON responses parsed across all databases / questions / dashboards✔ Included
Scheduled (cron) import✔ Included
Queue: retry · backoff · dead-letter · circuit breaker✔ Included
Pre-flight validation · rollback snapshots · dry-run✔ Included
Built-in import flow templates✔ Included
Live signed-JWT embedding of Metabase dashboards & questions in an Odoo iframe (short-lived, server-side signed)✔ Included
Sync Control Tower — live health / circuit / backlog / dead-letter / conflicts / throughput dashboard✔ Included
Bulk dead-letter console — grouped exhausted jobs, bulk requeue / discard✔ Included
Conflict-resolution workbench — snapshot diff, triage & bulk resolve✔ Included
Field-mapping studio — payload-test wizard, one-click suggestions, safe_eval transforms & conditions✔ Included
Question metadata import (full query definition / parameters)Roadmap
Dashboard card layout importRoadmap
Write-back to Metabase (create / update content)Roadmap
Inbound webhooks from MetabaseRoadmap

Live in four steps

A guided quick-setup wizard and onboarding checklist walk you from a Metabase API key to your first safe import.

Create an API key

In Metabase, go to Admin → Settings → API Keys and create a key. No schema changes, no plugin to install.

Connect

In Odoo, enter your Metabase base URL plus the API key, then run the first scheduled import. One click tests reachability.

Dry-run

Preview exact writes with dry-run + validation on. Clear any blocking findings.

Go live

Let the scheduled (cron) import keep Odoo up to date from Metabase, read-only.

Buy with full clarity

In the box today

  • Read-only import: databases → metabase.database, questions → metabase.question, dashboards → metabase.dashboard
  • Questions linked to their parent database — your Metabase structure visible in Odoo
  • Key-auth REST API client (x-api-key) — no OAuth, no passwords, JSON responses
  • Scheduled (cron) import — point it at your Metabase and it stays current
  • Built-in import flow templates, dry-run safety, rollback snapshots
  • Full source included — audit and extend every line for your own use
  • Live signed-embed view — Metabase dashboards & questions inside Odoo via short-lived HS256 JWTs (secret stays server-side)
  • Sync Control Tower — one live dashboard for health, circuit breaker, backlog, dead-letter, conflicts & throughput
  • Bulk dead-letter console & conflict-resolution workbench — triage and fix at scale, not row by row
  • Field-mapping studio — visual mapping, a payload-test wizard, one-click suggestions and safe_eval transforms

Roadmap

  • Question metadata import (full query definition and parameters)
  • Dashboard card layout import
  • Write-back to Metabase (import is the only direction today — Metabase is pull-only)
  • Inbound webhooks from Metabase

Frequently asked

Which versions are supported?

Odoo 19.0 on the Odoo side. On the Metabase side, the connector was live-tested on Metabase v0.62 (open-source edition) using the stable REST API (/api), and is compatible with Metabase versions across the v0.5x and v0.6x lines that expose the /api REST endpoints and API keys. Validate on your specific build.

What does it import?

Three Metabase entities, each into a dedicated Odoo model the connector ships: databases become metabase.database records (name and engine), saved questions become metabase.question records (name, chart display type and parent database), and dashboards become metabase.dashboard records (name). Each question is linked to the database it queries. It's import-first, to catalog your Metabase BI content inside Odoo.

How does authentication work?

One mode: an API key. You create a key in Metabase under Admin → Settings → API Keys, then enter your Metabase base URL plus that key in Odoo. The connector sends it as the x-api-key header on every REST API call — no OAuth, no passwords, and it only ever reads.

Does it push changes in real time?

Not yet. The connector imports on a schedule (cron). Metabase is pull-only, so write-back and inbound webhooks are on the roadmap — this version imports your databases, questions and dashboards into Odoo.

Is it safe to run against production data?

Dry-run mode is ON by default for new instances, validation blocks risky writes, and rollback snapshots let you undo. The connector is read-only against Metabase, so it can never alter your databases, questions or dashboards. You decide when to go live.

What support and refund policy do I get?

Every request is answered within 24 hours, setup help included. If you report a bug within 2 months of purchase and it isn't resolved within 15 days, you're entitled to a full money-back refund.

Connect Odoo and Metabase the honest way

24-hour support · Report a bug within 2 months — unresolved in 15 days = full refund · Full source included

bambooforge.labs@gmail.com

More from BambooForge Labs — one vendor, the same standard: tested, source included, supported.

Metabase Connector PrestaShop Connector Audit Pro — audit, alerts & compliance
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies Discuss (mail)
Lines of code 7071
Technical Name bambooforge_metabase_connector
LicenseOPL-1

BambooForge Metabase Connector

A read-only bridge that catalogs your Metabase business-intelligence assets inside Odoo 19: import your Metabase databases, saved questions (cards) and dashboards into a local, searchable catalog — over the official Metabase REST API, with a resilient job queue, dry-run safety and full logging so you stay in control.

This page is the complete manual. If you follow it top to bottom you can install, connect, run your first import, automate it, and fix the common issues without contacting support.

  • Overview
  • Requirements
  • Installation
  • Step 1 — Create an API key in Metabase
  • Step 2 — Create the connection in Odoo
  • Step 3 — First import (dry-run, then live)
  • Field mapping & customization
  • Automation (scheduled actions & webhooks)
  • Safety features
  • Troubleshooting
  • Frequently asked questions
  • Data, privacy & limits
  • Support & updates
  • Upgrading & version compatibility
  • Uninstallation
  • Changelog

Overview

The connector reads three Metabase asset types over the Metabase REST API and keeps a local mirror of them inside Odoo. It is import-only: nothing is ever written back to Metabase. It covers:

  • Databases — every data source registered in Metabase, with its name and engine. Imported from GET /api/database into metabase.database.
  • Questions (cards) — saved questions with their chart type (the Metabase display value) and a link to the parent Metabase database. Imported from GET /api/card into metabase.question.
  • Dashboards — dashboards with their collection. Imported from GET /api/dashboard into metabase.dashboard.

Direction of sync: Odoo ← Metabase (read-only catalog). The connector never creates, updates or deletes anything in Metabase; it only catalogs metadata about your BI assets inside Odoo.

Databases are imported before questions, so each question can resolve its parent database. Every remote call goes through a queue: nothing is written to Odoo until a job runs, jobs retry with back-off on transient failures, and a circuit breaker pauses an instance that keeps failing.

Requirements

  • Odoo: 19.0, Community or Enterprise. Depends only on base and mail, which are always present.
  • Metabase: a reachable Metabase server that supports API-key authentication (the x-api-key header) on its REST API. The connector reads /api/database, /api/card and /api/dashboard.
  • Python: no extra libraries beyond a standard Odoo 19 install.
  • Odoo access: any internal user can use the connector screens. The Metabase API key and webhook secret are stored in system-only fields, so only the Settings / Administration user can read or change them.
  • Network: outbound HTTPS from the Odoo server to your Metabase server. By default the connector refuses internal/loopback/private hosts as an SSRF safeguard (see Safety features).

Installation

  1. Copy bambooforge_metabase_connector into your Odoo addons path.
  2. Restart the Odoo service.
  3. Open Apps, click Update Apps List, search for Metabase, and press Activate / Install.

No Metabase server is required to evaluate the connector: a mock Metabase REST API ships inside the module, so you can install, explore and run the full import flow against sample data before pointing it at a real server.

Step 1 — Create an API key in Metabase

The connector authenticates with a single Metabase API key, sent on every request as the x-api-key HTTP header. Create one in Metabase:

  1. Sign in to Metabase as an administrator.
  2. Open the gear menu and go to Admin settings ▸ Authentication ▸ API keys (on some builds: Admin settings ▸ Settings ▸ API keys).
  3. Click Create API key.
  4. Give it a name such as Odoo and assign it to a group that can read your databases, questions and dashboards. Read access is enough — the connector never writes.
  5. Click Create and copy the generated key. It is shown once.

You will paste this key into Odoo in Step 2.

Step 2 — Create the connection in Odoo

Open Metabase Connector ▸ Configuration ▸ Instances and create a record.

Key fields:

Field What to enter
Name A label for this server, e.g. Company Metabase. Must be unique per company.
Base URL Your Metabase server root, e.g. https://metabase.example.com.
Authentication API Key (x-api-key) — the only supported method.
API Key The key from Step 1. Sent as the x-api-key header on every request (visible to administrators only).
API Path The API path prefix. Leave the default api unless your server differs; the client builds <base_url>/api/database and so on.
Timeout (seconds) HTTP timeout per request. Default 30.
Verify SSL Keep on for production. Turn off only for self-signed test certificates.
Allow internal host Off by default. Turn on only to reach a Metabase server on localhost or a private network (lowers the SSRF guard — see Safety features).

Then click Test Connection. The connector lists your Metabase databases as a lightweight auth + connectivity check; a green Connected state means the API key and URL are correct. If it fails, the exact error is recorded on the form (Last Connection Error) and in Logs (see Troubleshooting).

Tip: use Quick Setup (button on the instance) to seed default flows, field mappings and a recommended schedule in one step.

Step 3 — First import (dry-run, then live)

New instances start with Dry-run ON. In dry-run, import jobs simulate writes: instead of changing data they produce Validation Results you can review under Metabase Connector ▸ Operations ▸ Validation Results. This lets you confirm what would happen before anything is written.

To run a first import:

  1. On the instance, open the Import tab and click Queue Database Import (and/or Queue Question Import, Queue Dashboard Import). This enqueues jobs; it does not block the UI. Queueing questions imports databases first so each question resolves its parent database.
  2. Jobs are processed by the Metabase Queue Processor scheduled action (every minute), or immediately if you run it manually from Operations ▸ Queue Jobs.
  3. Review Validation Results while still in dry-run.
  4. When satisfied, open the instance, turn Dry-run OFF, and run the imports again to write the catalog records for real.

Imported records land in Metabase Connector ▸ Catalog: Databases, Questions and Dashboards. Each carries its Metabase external ID, so re-imports update the same record instead of duplicating it. A question shows its chart type and is linked to its database.

Field mapping & customization

  • Field Mappings (Configuration) map Metabase fields to the Odoo catalog fields per entity. Use Suggest Mappings on the instance to seed the core ones, then adjust.
  • Schema Fields lists the discovered Metabase fields per entity. Run Schema Introspection on the instance to refresh it: it samples one live Metabase record per entity (falling back to the bundled mock when the API is unreachable) and flattens its shape next to the Odoo target fields.
  • Import limits are per-entity dials on the instance — Databases import limit (default 100), Questions import limit (default 200), Dashboards import limit (default 200) — capping how many remote IDs each import enqueues.

Automation (scheduled actions & webhooks)

The module ships these scheduled actions (Settings ▸ Technical ▸ Scheduled Actions):

Scheduled action Default Purpose
Metabase Queue Processor every 1 min Processes queued import jobs.
Metabase Reconciliation every 15 min Re-lists enabled entities and queues imports for anything missing or previously failed.
Metabase Maintenance every 1 hr Recovers stale/locked jobs and trims old jobs and logs.
Metabase Flow Scheduler every 5 min Runs scheduled import flows.
Metabase Flow Metrics every 1 hr Aggregates flow-run metrics.
Metabase Auto Recover every 15 min Reopens a tripped circuit breaker once the server is healthy again.

Turn on Auto import / Auto reconcile per entity on the instance (Import tab) to let the scheduled actions keep the catalog current hands-free.

Webhooks: this connector is a pull-only importer, so there is no webhook intake. A route exists at /metabase/webhook only so anything still pointed at it gets a clear not supported reply (HTTP 501) instead of a 404; a genuine push path is a roadmap item, not part of this read-only version. Keep the catalog current with the scheduled actions above.

Safety features

  • Dry-run mode — simulate writes and review Validation Results before going live. Controlled by Dry-run on the instance (ON by default).
  • Pre-flight validation — Minimal / Standard / Strict business-validation profiles gate risky writes. Controlled by Validation and Business validation profile.
  • Resilient queue — every import action is a job with retry and exponential back-off (Retry limit, Backoff policy, Backoff base/cap minutes). HTTP calls additionally retry transient failures (API retry limit, default 2).
  • Circuit breaker — after repeated failures (Auto pause threshold, default 5) an instance auto-pauses (Tripped); the Auto Recover action reopens it once the server responds again. Auth/configuration errors trip it immediately.
  • Rollback snapshots — when Rollback is enabled, imports capture a snapshot so you can undo a batch from Operations ▸ Rollback Snapshots.
  • SSRF guard — the connector refuses internal/loopback/private hosts (and cloud-metadata addresses such as 169.254.169.254) unless Allow internal host is explicitly enabled.

Troubleshooting

Symptom Cause and fix
Test Connection fails with 401 / 403 Wrong or expired API key, or the key's group lacks read access. Re-create the key in Admin settings ▸ Authentication ▸ API keys and paste it again. The connector sends it as the x-api-key header.
"API Key (x-api-key) is required" The API Key field is empty. Paste the key from Step 1 (it is an admin-only field).
"...is not allowed because it resolves to a non-public address" Base URL points at localhost/private IP (SSRF guard). Enable Allow internal host on the instance (self-hosted/test only).
SSL errors on Test Connection Self-signed certificate. Use a valid cert, or turn off Verify SSL for testing only.
Connection times out Metabase is unreachable from the Odoo server or slow to answer. Check the Base URL, firewall/outbound rules, and raise Timeout (seconds) if needed.
Jobs stay in Pending The Queue Processor is off or the instance is paused. Check the Metabase Queue Processor scheduled action is active and the instance is not Paused.
Instance shows Tripped Circuit breaker tripped after repeated failures (or an auth error). Fix the server/credentials; Auto Recover reopens it, or click Resume Sync.
Questions imported without a database link Databases were not imported first. Use Queue Question Import (it imports databases first) or run Queue Database Import before questions.
Records imported twice Imports are keyed by the Metabase external ID, so this should not happen. If it does, check that two instances do not point at the same server.
Nothing happens after Import You are in Dry-run. Review Validation Results, then turn dry-run off and re-run.
POST to /metabase/webhook returns 501 Expected. This connector has no webhook intake; use the scheduled actions to keep the catalog current.

For anything else, Operations ▸ Logs records every API call and error with a timestamp.

Frequently asked questions

Which versions are supported? Odoo 19.0 on the Odoo side. On the Metabase side, any server whose REST API supports API-key authentication via the x-api-key header and the /api/database, /api/card and /api/dashboard endpoints. Validate your exact build with the bundled mock first.

Do I need a Metabase server to evaluate it? No. A mock Metabase REST API ships inside, so you can install, explore and demo the full import flow before connecting a real server.

How does authentication work? Create a Metabase API key under Admin settings ▸ Authentication ▸ API keys and paste it into the instance. The connector sends it as the x-api-key header on every request. There is no username/password and no token exchange.

Does this write anything back to Metabase? No. The connector is read-only by design: it only lists and reads your databases, questions and dashboards. It never creates, updates or deletes anything in Metabase.

Is there real-time / webhook sync? No. This is a pull-only importer; the /metabase/webhook route is a stub that answers not supported. Use the scheduled Reconciliation and Auto import to keep the catalog current. A push path is a roadmap item.

Is it safe to run against production data? Yes. The connector never touches your Metabase data. On the Odoo side, dry-run is ON by default, validation gates risky writes, and rollback snapshots let you undo. You decide when to go live.

What support and refund policy do I get? Every request is answered within 24 hours, setup help included. If you report a bug within 2 months of purchase and it is not resolved within 15 days, you are entitled to a full money-back refund.

Data, privacy & limits

  • The connector reads metadata only — database names and engines, question names/chart types and their database link, and dashboard names/collections — and writes the corresponding Odoo catalog records. It does not read or copy the rows inside your databases, nor the result data of any question. The Metabase API key and webhook secret are stored in admin-only fields.
  • In scope today: read-only import of Metabase databases, questions (cards) and dashboards into Odoo; scheduled reconciliation; dry-run, validation and rollback safety; schema introspection; field-mapping suggestions; a bundled mock for evaluation.
  • Out of scope / roadmap: any write-back to Metabase; webhook/push intake (the route is a neutralized stub); incremental list filtering by timestamp (v1 lists by cursor pagination); importing question result data or query definitions.

Support & updates

  • Support: bambooforge.labs@gmail.com — answered within 24 hours, setup help included.
  • Refund: report a bug within 2 months of purchase; if unresolved within 15 days, full refund.
  • Full source is included. Updates track the supported Odoo 19 / Metabase REST API line.

Upgrading & version compatibility

This build targets Odoo 19.0. Each Odoo major series (17.0, 18.0, 19.0) has its own dedicated build of this module — always install the build that matches your Odoo version. Mixing a build with a different Odoo series is not supported.

Patch upgrades (same series, e.g. 19.0.1.0.0 → later)

  1. Back up your database and filestore first.

  2. Replace the module folder with the newer build.

  3. Restart Odoo with the module updated:

    ./odoo-bin -c your.conf -u bambooforge_metabase_connector -d your_db
    
  4. Odoo applies any schema/data changes automatically. Your existing records and configuration are preserved.

Cross-version migration (e.g. Odoo 17 → 18)

Upgrading Odoo itself is a database migration handled by Odoo's standard upgrade tooling. When you migrate the database to the next Odoo series, install the matching build of this module for that series. Data created by this module carries over with the database migration.

After any upgrade the module's scheduled actions resume on their normal cadence — no manual re-activation is required.

Uninstallation

You can remove this module at any time from Apps → (this module) → Uninstall, or from the command line. Uninstalling is clean and reversible by reinstalling — but note what is and is not deleted.

What is removed

  • The module's own tables and every record in them (23 models, prefixed metabase.*) — this is the data this module created.
  • The menus, actions, views and reports this module installed.
  • Its scheduled actions (cron jobs) — they stop immediately on uninstall.
  • Connection records, credentials, field mappings, queue jobs and sync logs stored in Odoo.

What is preserved

  • Your remote platform is never touched. Uninstalling only removes the Odoo-side connector; products, customers and orders on the external store/service are untouched.
  • Records already imported into standard Odoo models (e.g. contacts, products, sales orders) remain — they are ordinary Odoo records once created.
  • Attachments and chatter messages on standard records are kept.

As always, take a database backup before uninstalling in production.

Changelog

19.0.1.0.0

Current release for Odoo 19.0. This build includes:

  • Embed live Metabase dashboards & questions inside Odoo 19 via short-lived signed JWTs (HS256, secret never leaves the server).
  • Plus a searchable catalog of databases, questions & dashboards. Resilient queue, dry-run, auditable source.

Feature additions and fixes ship as new builds on the Odoo Apps store; this page and the module's version reflect the current published release. Always keep the build matched to your Odoo series (see Upgrading & version compatibility).

Odoo Proprietary License v1.0

This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with