Most marketing teams we move to Matomo ask the same question within the first month. They've seen the dashboards, the cookie banner is sorted, the data is theirs and nothing's leaving for Google Analytics anymore. Then someone asks how to put cost data next to conversion data, and the answer turns out to be a spreadsheet. Or a dashboard tool. Or a longer conversation about pipelines.
That's the gap we keep coming back to. Matomo is the right foundation for web analytics. The bridges to the rest of the marketing stack mostly aren't there.
The foundation is right
Matomo got the hard part right. You can self-host it with the On-Premise edition. It's open source, so you can actually read the code that's collecting data on your visitors. The tracker doesn't need third-party cookies, and with the privacy settings configured properly it holds up under GDPR-heavy deployments. The data sits on infrastructure you control, not on infrastructure that lives somewhere else and is two product decisions away from changing under you.
That stack matters more now than it did five years ago. The cookie deprecation story has been chaotic but the direction is clear. iOS limits tracking pixels. Browsers block them. Server-side tracking has gone from a nice-to-have to the baseline. Marketers who built on third-party cookie infrastructure are watching it erode faster than they can replace it. Matomo's design held up because it never needed those assumptions in the first place.
So yes, the foundation is right. The thing on top of the foundation is incomplete.
What Matomo doesn't do
Matomo is web analytics. That's its category. It tracks what visits your site, what pages they hit, what goals they convert on, where they came from. It does this well, with attribution models that the MultiChannelConversionAttribution plugin (MCCA) extends into proper multi-touch territory. It can even tag Google Ads traffic and export its conversion data back to the ad platforms.
What it doesn't do natively is pull spend from Meta and Google, attach that cost to the campaigns it already tracks, and report ROAS. Matomo can tell you that spring_sale brought 415 visits and a few conversions. It can't tell you that you spent €380 on Meta and Google to get them. The data Matomo has is honest and complete on its own side. It's only one side.
Which means every Matomo agency we've talked to has the same workflow gap. Numbers come out of Matomo. Numbers come out of Meta and Google. Someone joins them in a spreadsheet, or in Looker Studio, or in a warehouse. The blended ROAS that ends up in the client deck is born somewhere downstream of both systems.
How teams handle it today
Mostly with effort. We wrote a longer post about this for the ROI side specifically, but the shape is consistent across teams. Spreadsheets first. Looker Studio or Metabase when the spreadsheet stops scaling. A real warehouse and a data person if the budget allows. Some external connectors and custom reports can bring spend-like fields into Matomo, but they still don't hand you one attribution-aware ROAS number.
None of these are bad answers. Looker Studio in particular is the best honest answer if you don't want to build infrastructure. What they share is that the work happens outside Matomo. The marketer who wanted a single place to look has to learn a second tool, or a third, or pay someone who already knows them.
What we're working on
Two things, basically.
The first is Matomo Heatmap Helper, a small browser extension for Chromium browsers like Chrome and Edge (Firefox isn't supported yet). It fixes the failure modes of Matomo's heatmap screenshots: CORS-blocked images, scroll containers that clip content, sticky headers that collapse, the rest of the list we ended up writing a separate post on. We hit broken heatmaps on almost every client engagement, so we built the fix and put it out under GPL-3.0. It's free, the source is on GitHub, and it doesn't phone home to us: it works against your own Matomo instance, and during capture it fetches the page's own images and fonts only so it can embed them in the screenshot. That's the model for how we want to work in this ecosystem. If we hit a problem repeatedly and the fix is general enough to be useful to other people, we give it back.
The second is Martez. Same data ownership philosophy, bigger scope. Matomo stays authoritative for tracking and on-site behaviour. Martez syncs Meta Ads and Google Ads, joins spend to conversions on the campaign keys Matomo already uses, and exposes ROAS, CLV, and multi-touch attribution. Where the platforms report view-through conversions, it pulls those in alongside the click paths Matomo already tracks. The marketer who wanted a single place to look gets one. The data still belongs to whoever runs the instance.
Martez is in private beta. If you've got Matomo running, you're spending on Meta or Google, and this is the gap you've been working around too, join the waitlist.
We're building it because we ran into it ourselves, on client after client, and the workaround stopped feeling like a workaround and started feeling like the actual job.