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 Matomo Connector v 19.0
  4. Sales Conditions FAQ

BambooForge Matomo 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 • CRM (crm)
• Discuss (mail)
• Sales (sale_management)
• Calendar (calendar)
• Contacts (contacts)
• Invoicing (account)
Lines of code 7303
Technical Name bambooforge_matomo_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 Matomo Connector

A real connector between Odoo 19 and Matomo — the leading open-source web-analytics platform, the privacy-friendly Google Analytics alternative. Point it at your Matomo URL, drop in an auth token, and the connector imports your tracked sites, their visit summaries and your goal & ecommerce conversions straight into Odoo over the Matomo Reporting API — read-only against Matomo, on a schedule — and enriches your Odoo CRM/Sales with campaign attribution (enrich-only), with dry-run safety and full source you can audit.

Odoo 19.0 Matomo 4.x / 5.x Reporting API (token_auth) Live-tested on Matomo 5.11.2 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 Matomo 5.11.2 instance — 3 sites + visit summaries imported, 0 errors.
Full source includedComplete source in the package — audit every line, extend it freely, never get locked in.
importsites · visit summaries
0errors on the live Matomo 5.11.2 import
tokentoken_auth — no OAuth, no passwords
read-onlynever writes back to Matomo
Tested for real

Verified live against a running Matomo

We don't just claim a vague version range. The connector was installed on Odoo 19, pointed at a live Matomo 5.11.2 instance over its Reporting API, and run through a full site / visit-summary import — 0 errors.

Matomo versionAPILive result
5.11Reporting API (token_auth)✔ Live-tested — 3 sites + visit summaries, 0 errors
5.xReporting API✔ Compatible — validate on your build
4.xReporting API✔ Supported (same API)

The live test imported 3 sites with no errors — “BambooForge Demo Shop” (an e-commerce site), “BambooForge Blog” and “BambooForge Docs” — each with its main URL, timezone and created date. Their visit summaries came across too: visits, actions, unique visitors and bounce rate became Odoo records, read straight from the Reporting API.

Built to actually sync — not to look busy

Matomo exposes a clean Reporting API, and this connector treats it that way: it authenticates with an auth token sent as token_auth, calls index.php?module=API&method=…&format=json for your sites and their visit summaries, and maps each one onto a dedicated Odoo model — so you can see how your sites are performing 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 Matomo over the Reporting API with an auth token.

Revenue & conversion attribution

Import Matomo goal and ecommerce conversions with their UTM campaign/source/medium, resolve them to Odoo utm.* records, and attribute each to a crm.lead and/or sale.order (by campaign or by email). Enrich-only by default — it fills empty UTM fields, never overwrites — and a Revenue by Campaign report ties Matomo campaigns to real Odoo order revenue.

S

Sites → matomo.site

Each Matomo site (measurable) imports into a dedicated matomo.site record — its name, main URL, timezone, currency, e-commerce flag and created date — so your tracked-site inventory lives in Odoo.

V

Visit summaries → matomo.visit.summary

Each per-site analytics period becomes a matomo.visit.summary record — visits, actions, unique visitors, bounce rate, actions per visit and average time on site — linked back to the site it belongs to.

Summaries linked to sites

Every visit summary is tied to its parent site, so you can open a site in Odoo and see its analytics resolved from the imported summaries — your Matomo structure carries over intact.

Status mapping

The Matomo import status for each site and period is carried across onto the Odoo records through an editable mapping table per instance, so you always know what synced and what is still pending.

Scheduled sync

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

{ }

Token-auth Reporting API client

One client authenticates with a Matomo auth token sent as token_auth against index.php?module=API. 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 Matomo 5.11 — the connection cockpit, a synced site, the imported visit summaries, the status mapping 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 Matomo 5.11 — real data imported through the connector, not mockups.

Connection cockpit
Connection cockpit — Matomo URL, auth token, healthPer-instance Matomo URL, auth token, health and one-click safety controls — connected and green.
Synced site
A Matomo site synced into OdooAn imported site with its main URL, timezone, currency and e-commerce flag, live in Odoo.
Imported visit summaries
Imported Matomo visit summaries in OdooPer-site analytics as matomo.visit.summary records — visits, actions, unique visitors and bounce rate.
Import status mapping
Import status mappingEditable Matomo-status → Odoo table, seeded with sensible defaults per instance.
Import flow templates
Built-in import flow templatesMulti-step import flows (fetch → map → upsert → log) ready to run.
Sync Control Tower — Matomo 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 — Matomo 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 — Matomo 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 Matomo 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 against Matomo

The connector only reads your Matomo over the Reporting API — it never creates, updates or deletes a record there, so a sync can never alter your live sites or analytics. It writes only into Odoo, and CRM/Sales attribution is enrich-only (empty UTM fields, never overwritten by default).

Honest feature matrix

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

CapabilityStatus
Token-auth Reporting API connection (token_auth against index.php?module=API)✔ Included
Sites → matomo.site (name, main URL, timezone, currency, e-commerce flag, created date)✔ Included
Visit summaries → matomo.visit.summary (visits, actions, unique visitors, bounce rate, actions per visit, avg time)✔ Included
Visit summaries linked to their parent site✔ Included
Import status mapping per instance✔ Included
JSON responses parsed across all sites / periods✔ 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
Import Matomo goal / ecommerce conversions with UTM (campaign / source / medium)✔ Included
Attribute conversions to crm.lead / sale.order (enrich-only) + Revenue-by-Campaign report✔ 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
Additional report endpoints (referrers, pages, devices)Roadmap
Inbound webhooks / live-push (instead of scheduled import)Roadmap
Write-back to Matomo (Matomo is pull-only today)Roadmap

Live in four steps

A guided quick-setup wizard and onboarding checklist walk you from a Matomo auth token to your first safe import.

Create an auth token

In Matomo, go to Administration → Personal → Security → Auth tokens and create a token. No schema changes, no plugin to install.

Connect

In Odoo, enter your Matomo base URL plus the auth token, 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 Matomo, read-only.

Buy with full clarity

In the box today

  • Read-only import: sites → matomo.site, visit summaries → matomo.visit.summary
  • Visit summaries linked to their parent site — analytics visible in Odoo
  • Token-auth Reporting API client (token_auth) — no OAuth, no passwords, JSON responses
  • Scheduled (cron) import — point it at your Matomo and it stays current
  • Configurable import status mapping, dry-run safety, rollback snapshots
  • Full source included — audit and extend every line for your own use
  • Conversion / revenue attribution — Matomo goal & ecommerce conversions matched to crm.lead / sale.order (enrich-only) with a Revenue-by-Campaign report
  • 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

  • Additional Reporting API endpoints (referrers, pages, devices)
  • Inbound webhooks / live-push instead of a scheduled import
  • Write-back to Matomo (Matomo is pull-only, so import is the only direction today)
  • Two-way synchronisation back to Matomo

Frequently asked

Which versions are supported?

Odoo 19.0 on the Odoo side. On the Matomo side, the connector was live-tested on Matomo 5.11 and targets the Matomo 4.x and 5.x lines, which expose the same stable Reporting API. Validate on your specific build.

What does it import?

Two Matomo entities, each into a dedicated Odoo model the connector ships: sites become matomo.site records — carrying the name, main URL, timezone, currency, e-commerce flag and created date — and per-site analytics become matomo.visit.summary records with visits, actions, unique visitors, bounce rate, actions per visit and average time on site. Each summary is linked to the site it belongs to. It also imports your Matomo goal & ecommerce conversions with their UTM campaign/source/medium, resolves them to Odoo utm.* records and attributes each to a crm.lead and/or sale.order (enrich-only, filling empty UTM fields), with a Revenue-by-Campaign report. It's read-only against Matomo and enriches Odoo.

How does authentication work?

One mode: an auth token. You create a token in Matomo under Administration → Personal → Security → Auth tokens, then enter your Matomo base URL plus that token in Odoo. The connector sends it as token_auth on every Reporting API call against index.php?module=API — 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). Matomo is pull-only, so write-back and inbound webhooks / live-push are on the roadmap.

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 Matomo, so it can never alter your sites or analytics. 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 Matomo 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.

Matomo Connector PrestaShop Connector Audit Pro — audit, alerts & compliance
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • CRM (crm)
• Discuss (mail)
• Sales (sale_management)
• Calendar (calendar)
• Contacts (contacts)
• Invoicing (account)
Lines of code 7303
Technical Name bambooforge_matomo_connector
LicenseOPL-1

BambooForge Matomo Connector

A read-only bridge from Matomo into Odoo 19: import your Matomo sites and a per-site visit summary of today's traffic so you can see — without leaving Odoo — which sites are tracked, whether ecommerce tracking is on, and how each site is performing today. It ships with a resilient job queue, dry-run safety, pre-flight validation and rollback 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 auth token in Matomo
  • Step 2 — Create the connection in Odoo
  • Step 3 — First import (dry-run, then live)
  • Field mapping & customization
  • Automation (scheduled actions)
  • Safety features
  • Troubleshooting
  • Frequently asked questions
  • Data, privacy & limits
  • Support & updates
  • Upgrading & version compatibility
  • Uninstallation
  • Changelog

Overview

The connector reads from the Matomo Reporting API over token_auth and writes the matching records into Odoo. Every call is a single POST <base_url>/index.php?module=API&method=... with the token sent as a form parameter. It covers:

  • Sites — import your Matomo sites (via SitesManager.getAllSites) into the matomo.site model: the numeric idsite, name, main URL, timezone, currency, the ecommerce flag and the creation timestamp.
  • Visit summaries — import a per-site summary of today's traffic (via VisitsSummary.get with period=day, date=today) into the matomo.visit.summary model: visits, actions, unique visitors, bounce rate, actions per visit and average time on site.

Direction of sync: Odoo ← Matomo (read-only). Matomo is a pull-only analytics source, so the connector never writes back to Matomo. Sites are imported before visit summaries so each summary links back to its site.

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.
  • Matomo: a reachable Matomo server exposing the Reporting API at index.php (the standard entry path). Matomo must be reachable from the Odoo server.
  • Python: no extra libraries beyond a standard Odoo 19 install.
  • Odoo access: any internal user can use the connector screens. The Matomo auth token is stored in a system-only field, so only the Settings / Administration user can read or change the Auth Token.
  • Network: outbound HTTP/HTTPS from Odoo to your Matomo server. By default the connector refuses internal/loopback/private hosts as an SSRF safeguard (see Safety features).

Installation

  1. Copy bambooforge_matomo_connector into your Odoo addons path.
  2. Restart the Odoo service.
  3. Open Apps, click Update Apps List, search for Matomo, and press Activate / Install. Dependencies (base, mail) install automatically.

No Matomo server is required to evaluate the connector: a mock Matomo 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 auth token in Matomo

The Matomo Reporting API authenticates with a single auth token (token_auth). To create one:

  1. Log in to your Matomo server.
  2. Go to Administration ▸ Personal ▸ Security.
  3. Under Auth tokens, click Create new token.
  4. Confirm your password if prompted, give the token a description (e.g. Odoo), and create it.
  5. Copy the token string shown — you will paste it into Odoo in Step 2.

The token is sent only as the token_auth POST form parameter on every request, never on the query string.

Step 2 — Create the connection in Odoo

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

Matomo instance / connection cockpit

Key fields:

Field What to enter
Name A label for this server, e.g. My Analytics.
Base URL Your Matomo server root, e.g. https://analytics.example.com.
Authentication Auth Token (token_auth) — the only supported method.
Auth Token The token string from Step 1 (visible to administrators only).
API Path Leave the default index.php unless your Matomo entry path differs.
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 Matomo on localhost or a private network (lowers the SSRF guard — see Safety features).

Then click Test Connection. The connector lists your sites (SitesManager.getAllSites) as a lightweight connectivity and auth check. A green Connected state means the URL and token are correct. If it fails, the exact error is shown on the form and recorded in Logs (see Troubleshooting).

Tip: use Quick Setup (button on the instance) to seed default field mappings and starter flows 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 creating records they produce Validation Results you can review under Matomo Connector ▸ Operations ▸ Validation Results. This lets you confirm what would happen before anything is written.

To run a first import:

  1. On the instance, click Queue Site Import (and then Queue Visit Summary Import). This enqueues jobs; it does not block the UI. Import sites first so each summary can link back to its site.
  2. Jobs are processed by the Matomo Queue Processor scheduled action (every minute), or immediately if you run it 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 records for real.

Imported records land under Matomo Connector ▸ Imported Data ▸ Sites and ▸ Visit Summaries. Each carries its Matomo reference (the idsite for sites, a synthetic site<idsite>_day_today id for summaries) so re-imports update the same record instead of duplicating it.

An imported Matomo site Imported per-site visit summaries

Field mapping & customization

  • Field Mappings (Configuration) map Matomo fields to Odoo fields per entity. Each mapping has a source path, a target path and an optional transform (string, integer, float, boolean, uppercase, lowercase, JSON string, CSV join, first item, or a safe Python expression). The direction is Matomo → Odoo for this read-only connector.
  • Schema Fields lists the discovered Matomo fields per resource. Run schema introspection on the instance to refresh it.
  • The two import entities are Site and Visit Summary. The per-run volume is capped by Import sites limit (default 100) and Import visit summaries limit (default 200) on the instance.

Automation (scheduled actions)

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

Scheduled action Default Purpose
Matomo Queue Processor every 1 min Processes queued import jobs.
Matomo Reconciliation every 15 min Pulls recent remote changes for enabled entities.
Matomo Maintenance every 1 hr Recovers stale/locked jobs and trims old logs.
Matomo Flow Scheduler every 5 min Runs scheduled sync flows.
Matomo Flow Metrics every 1 hr Aggregates flow-run metrics.
Matomo Auto Recover every 15 min Reopens a tripped circuit breaker once Matomo is healthy.

Turn on Auto import / Auto reconcile per entity on the instance to let the scheduled actions keep things in sync hands-free.

There are no webhooks. Matomo is a pull-only analytics source: the Reporting API has no outbound push, so the connector keeps data current by scheduled or on-demand import only.

Safety features

  • Dry-run mode — simulate writes and review Validation Results before going live (field Dry-run, ON by default).
  • Business validation profiles — Minimal / Standard / Strict gate risky writes (field Business validation profile, default Standard).
  • Resilient queue — every remote action is a job with retry and exponential back-off; jobs that exhaust retries move to a Dead state.
  • Circuit breaker — after repeated failures an instance auto-pauses (Tripped); the Auto Recover action reopens it once Matomo responds again.
  • Rollback snapshots — when enabled, imports capture a snapshot so you can undo a batch from Operations ▸ Rollback Snapshots (field Rollback enabled).
  • SSRF guard — the connector refuses internal/loopback/private hosts unless Allow internal host is explicitly enabled.

Troubleshooting

Symptom Cause and fix
Test Connection fails with 401/403 Wrong or expired auth token, or the token lacks permission. Re-check Step 1 and re-paste the token under Auth Token.
"Matomo auth token (token_auth) is required" The Auth Token field is empty. Paste the token from Step 1 (admin-only field).
"is not allowed because it resolves to a non-public address" Base URL points at localhost/private IP. Enable Allow internal host on the instance (test/self-hosted Matomo only).
SSL errors on Test Connection Self-signed certificate. Use a valid cert, or turn off Verify SSL for testing only.
Matomo API error in the body (HTTP 200) Matomo answers 200 OK and signals errors in the JSON body. The connector surfaces the Matomo message verbatim; read it on the form and in Logs.
Jobs stay in Pending The Queue Processor is off or the instance is paused. Check Scheduled Actions is active and the instance is not paused.
Instance shows Tripped Circuit breaker tripped after repeated failures. Fix the server/token; Auto Recover reopens it once Matomo responds.
Jobs in Dead state The job exhausted its retries. Fix the underlying cause, then re-run from Operations ▸ Queue Jobs.
Records imported twice Imports are keyed by the Matomo reference, 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.
Rate limit reached Matomo returned HTTP 429. The connector retries with back-off; if it persists, reduce the import limits or import cadence.

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

Frequently asked questions

Which versions are supported? Odoo 19.0 on the Odoo side. On the Matomo side the connector targets the standard Reporting API at index.php with token_auth. Validate your exact build with the bundled mock first.

Do I need Matomo installed to evaluate it? No. A mock Matomo 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 Matomo auth token under Administration ▸ Personal ▸ Security ▸ Auth tokens, then paste it into the instance Auth Token field. It is sent only as the token_auth POST form parameter on every request.

Does it write anything back to Matomo? No. The connector is read-only: it imports sites and visit summaries from Matomo and never sends changes back.

Is there a webhook for real-time updates? No. Matomo has no outbound webhook push, so the connector keeps data current by scheduled or on-demand import only.

Is it safe to run against production data? Dry-run is ON by default, validation blocks 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 sites and visit summaries from your Matomo server and writes the corresponding Odoo records. The auth token is stored in an admin-only field.
  • In scope today: read-only import of Matomo sites and per-site visit summaries, field mapping, scheduled and on-demand import, dry-run, validation and rollback.
  • Out of scope: writing back to Matomo (the connector is read-only); webhook push (Matomo does not offer one); historical multi-period reporting (the visit summary is period=day, date=today per site in v1).

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 / Matomo Reporting 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_matomo_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 (22 models, prefixed matomo.*) — 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:

  • Attribute revenue to Matomo campaigns inside Odoo 19: import Matomo goal & ecommerce conversions with UTM and match them to crm.lead / sale.order (enrich-only), with a Revenue-by-Campaign report.
  • Plus sites & visit-summary import. 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