Why I Chose to Build Clickport Instead of Using Matomo
When I started building Clickport, the first question wasn't "what should I build." It was "does this already exist?"
Matomo was at the top of my list. It's been around since 2007 (originally called Piwik). It's installed on 1.5% of all websites. The European Commission runs it. CNIL, France's data protection authority, specifically endorses it. Over 373,000 companies use it worldwide. It has 21,000+ stars on GitHub and 2,400+ contributors.
If you need analytics that aren't Google, Matomo is the first tool most people consider.
I spent weeks evaluating it. I read the docs, dug through the GitHub issues, studied the architecture, and read hundreds of forum posts from people running it in production. What I found was a project I deeply respect that I couldn't build on top of. Not because it's bad. Because its architecture carries the weight of decisions made in 2007, and those decisions create real problems for the kind of analytics I wanted to offer.
This is what I found, and why I built something different.
Matomo deserves more credit than it gets
Before I get into the problems, I want to be clear about something. Matomo isn't Google Analytics. It isn't a data-harvesting corporation disguised as a free tool. It's an independent, largely bootstrapped company with ~50 employees that has been building open-source analytics for 17 years. The founder, Matthieu Aubry, started it as a student project and has kept it independent through nearly two decades.
That matters. In a world of venture-backed SaaS tools that pivot, get acquired, or shut down, Matomo has been consistently available and consistently open-source since before the iPhone existed.
Here's what it does well.
Self-hosted data sovereignty. You can run Matomo entirely on your own servers. Your data never touches anyone else's infrastructure. For government agencies, universities, and regulated industries, this isn't a nice-to-have. It's a requirement. The European Commission runs Matomo across EU institutions for exactly this reason.
The CNIL exemption. France's data authority explicitly names Matomo as one of the few analytics tools that can operate without a consent banner when properly configured. This exemption also applies in Spain, Italy, and the Netherlands. That's a concrete regulatory advantage no startup can claim.
Feature depth. Heatmaps, session recordings, A/B testing, funnel analysis, ecommerce tracking, form analytics, a built-in tag manager, media analytics, and roll-up reporting. No other open-source tool comes close. If you need all of these in a single self-hosted platform, Matomo is the only serious option.
Unsampled data. Unlike GA4, which samples above 10 million events, Matomo gives you 100% of your data at any volume. What you see is what happened.
I'm not going to pretend these don't matter. They do. If your organization needs self-hosted data sovereignty with enterprise features and the CNIL's specific blessing, Matomo might be exactly the right choice. What follows isn't an argument that Matomo is bad. It's an explanation of why its architecture creates problems that matter for a different set of users.
The database that wasn't built for this
Matomo stores all analytics data in MySQL. MySQL is a row-oriented database designed for transactional workloads: shopping carts, user accounts, content management systems. It's excellent at reading and writing individual rows quickly.
Analytics queries are fundamentally different. When you ask "how many visitors came from Google this month," the database needs to scan millions of rows but only read a few columns (source, timestamp, visitor ID). A row-oriented database like MySQL loads entire rows into memory to find those few columns. A columnar database like ClickHouse stores each column separately and only reads what it needs, reducing I/O by 10-100x.
This isn't a theoretical distinction. It's the reason Matomo needs an entire preprocessing layer that most users don't know about until it breaks.
Reads: every column of every row
├─ visitor_id, ip, url, title, referrer,
│ browser, os, screen, country, city,
│ language, device, timestamp, duration,
│ actions, revenue, custom_vars...
└─ × 500,000 rows
Result: slow. needs preprocessing.
Reads: only the columns it needs
├─ source
├─ timestamp
└─ visitor_id
(skips 20+ other columns entirely)
Result: milliseconds. no preprocessing.
Matomo can't query raw data fast enough for interactive dashboards because MySQL has to scan everything. So Matomo runs a separate archiving cron job that preprocesses all reports on a schedule. Raw data goes into MySQL. A cron job reads it, crunches the numbers, and writes pre-computed results to archive tables. When you open a report, you're seeing yesterday's math, not live data.
For small sites, this works fine. Archiving finishes in minutes and you barely notice the delay.
For medium to large sites, it becomes the single biggest operational headache. Matomo's own documentation says archiving often takes more than two hours on high-traffic sites. Each segment must be archived separately. Creating a new custom report triggers re-archiving of the previous 6 months of data. And when archiving fails or falls behind, your dashboard shows stale data with no warning.
The failure stories are striking. A user running a 48-core, 128 GB RAM server reported that archiving spiked their load average from 0.15 to 5.4 with MySQL queries running for 13+ hours. They wrote: "We have to check the server every day and kill the database process manually, because it never ends."
Memory leaks in the archiver have been a documented issue since 2012. The same bug has resurfaced as issues #5794, #6846, #16285, #18460, and #22875 over the years. After upgrading to version 5.2.0, installations with 700+ sites experienced memory exhaustion at 256 MB.
It's worth noting that Piwik PRO, the enterprise fork that split from Matomo in 2016, migrated to ClickHouse specifically because of these MySQL limitations. The Matomo community has requested ClickHouse support since 2021. The team responded that it would require "rewriting major portions of the codebase." The issue remains open with no roadmap commitment.
This is the architectural decision that shaped everything else about Clickport. I chose ClickHouse from day one. No archiving step. No cron jobs. No preprocessing delays. Queries hit raw event data and return in milliseconds, even across months of data.
What self-hosting actually costs
Matomo's strongest marketing message is "free and open-source." The core analytics platform genuinely is free to self-host. But "free" and "costs nothing" are different things.
Matomo recommends this spec for medium traffic
$259 + $229 + $199 per year
Matomo estimates "a few hours per week" × $50/hr
Let me unpack the line items.
Server costs scale fast. Matomo recommends 2 CPU, 2 GB RAM minimum. Above 1 million pageviews, they recommend separate app and database servers with 8 CPU and 16 GB RAM each. Database storage grows at roughly 1 GB per 5 million pageviews. One user with 350 websites watched their database grow from 2 GB to 60 GB in a single month. Another hit 207 GB in a single archive table.
Premium plugins add up. The features that differentiate Matomo from simpler alternatives are almost all paid add-ons. Heatmaps: $259/yr. Funnels: $229/yr. A/B testing: $259/yr. Form analytics: $199/yr. Custom reports: $259/yr. The full Premium Bundle: $1,899/year for up to 4 users, $3,799 for 5-15 users, $5,699 for unlimited.
Maintenance is the hidden killer. Matomo's own FAQ estimates "a few hours per week" for ongoing maintenance: security patches, PHP updates, MySQL tuning, archiving cron monitoring, GeoIP updates, backup management, and troubleshooting. If you're doing this yourself, it's hours you're not spending on your actual business. If you're paying someone, at $50-75/hour, that's $6,000-15,000 per year.
The cloud pricing gotcha. Matomo Cloud counts "hits" not pageviews. Events, downloads, outbound link clicks, and content interactions all count toward your limit. A site with 200K pageviews easily generates 400K-600K hits. The overages are EUR 2.20 per 5,000 extra hits, which adds up fast.
Privacy that requires a 12-step configuration
Matomo's other strong marketing message is "privacy-friendly." This is true. But "privacy-friendly" and "private by default" are different things.
Out of the box, Matomo uses first-party cookies (_pk_id, _pk_ses, _pk_ref) and collects IP addresses, browser fingerprints, referrer URLs, and page titles. In this default configuration, you need a consent banner in most EU countries.
Getting to "no consent banner required" means following a specific configuration process. Matomo documents 12 steps: disable all cookies, anonymize IP addresses by 2+ bytes, anonymize referrer data, strip personal data from URLs and page titles, strip PII from custom variables, mask data in heatmaps and recordings, exclude ecommerce order IDs, disable User ID features, restrict data to analytics-only use, limit to single-site tracking, implement an opt-out mechanism, and update your privacy policy.
Miss any one of these, and you need a consent banner. There's no "GDPR mode" toggle.
And there are traps within those 12 steps that even careful administrators hit.
UTM parameters cancel the CNIL exemption. CNIL confirmed through direct correspondence that tracking UTM campaign parameters disqualifies you from the consent exemption. Since campaign tracking is one of Matomo's core use cases, this forces a choice: track your marketing campaigns or skip the consent banner. You can't do both.
The opt-out iframe sets cookies anyway. A German state data protection authority discovered that even with disableCookies enabled, Matomo's opt-out mechanism set a MATOMO_SESSID cookie for CSRF protection. They concluded this made cookieless mode non-compliant and were "forced to remove Matomo entirely."
Cookieless mode degrades accuracy. Without cookies, Matomo falls back to config_id, a daily-rotating hash of IP and browser attributes. This means a visitor returning the next day looks like a new visitor. Unique visitor counts, returning visitor metrics, and multi-session conversion attribution all become unreliable.
The exemption is geographically limited. The CNIL exemption only applies in France, Spain, Italy, and the Netherlands. In Germany, Austria, Finland, Ireland, Latvia, Lithuania, and the UK, analytics cookies require consent regardless of configuration.
Clickport doesn't have a privacy configuration because there's nothing to configure. No cookies means no consent banner. No IP storage means no anonymization step. It's compliant by architecture, not by checklist.
217 tables in your WordPress database
Matomo offers a WordPress plugin with 100,000+ active installations. It works by embedding the entire Matomo analytics engine inside your WordPress installation. This is architecturally unusual, and it creates problems that are specific to this approach.
(a default WordPress install has 12)
<10,000 annual visitors
(users report crashes at 1 GB)
recommended by Matomo's own docs
(every pageview bootstraps full WP stack twice)
(unless you find a hidden toggle first)
The plugin creates 217 database tables prefixed with wp_matomo_. One user with fewer than 10,000 annual visitors found it consuming 599 MB. They wrote: "It's really not helpful that with such a waste of space there's no information on how to get this into usable shape."
Because every tracking request bootstraps the entire WordPress framework (all active plugins, theme functions, database connections), it effectively doubles the server load per pageview and adds 300-500ms to TTFB.
Version 5.2.0 caused fatal errors that took sites offline. Users had to manually delete files via FTP to recover. WordPress auto-updates can trigger these failures while site owners sleep. Users have reported memory exhaustion at 1 GB just from activating the plugin.
There are also documented conflicts with popular plugins (BackWPup, Google Listings and Ads, PublishPress Blocks, WooCommerce extensions) caused by PHP library version collisions.
Matomo's own documentation suggests limiting the WordPress plugin to 50,000 pageviews per month. Beyond that, they recommend their separate self-hosted or cloud product.
Clickport's WordPress integration is one script tag or a lightweight connector plugin. It adds zero tables to your database, uses zero PHP memory, and has zero plugin conflicts because the analytics processing happens on Clickport's servers, not inside your WordPress installation.
The 70-report question
Matomo has 12 main navigation sections containing over 70 individual reports. The Custom Reports plugin adds 163 metrics and 94 dimensions. There are 110+ segment dimensions for filtering.
This is a feature, not a bug, if you're a data analyst. But most website owners aren't data analysts. They need answers to a small number of questions: where is my traffic coming from, which pages are popular, are visitors converting, is traffic trending up or down?
Capterra reviewers consistently describe the interface as "cluttered and overwhelming". TrustRadius notes "the complex interface might require additional learning for non-technical users." One reviewer put it bluntly: "If you're looking to leave Google Analytics to escape the complex menus, you're unlikely to find relief with Matomo."
There's also a discoverability problem. A GitHub issue documents that key features are hidden behind hover-only icons. Per-row actions only appear on mouse-over. Custom report dropdowns are "not obviously there." On mobile, these features are essentially unreachable. The Matomo team closed the issue as "not planned."
Matomo takes "hours to master" according to comparison reviews. Clickport was designed to be understood in minutes.
The honest trade-offs
Matomo has capabilities Clickport doesn't. I want to be straightforward about what you give up if you switch.
No heatmaps or session recordings. Matomo offers these as a premium plugin ($259/year). Clickport doesn't record mouse movements or screen video. You can still drill into individual sessions to see pages visited, time on page, engagement scores, and conversion events, but if visual replay data is important to you, consider a dedicated tool like Microsoft Clarity (free) alongside Clickport, or stay with Matomo.
No A/B testing. Matomo has a $259/year A/B testing plugin. Clickport doesn't do experiments. If you run frequent A/B tests, you likely need a dedicated testing platform anyway.
No self-hosting option. Matomo can run on your own servers. Clickport is hosted on Hetzner servers in Germany. You get EU data residency and full GDPR compliance, but the data lives on our infrastructure.
No historical data import. Matomo has a GA data importer. Clickport starts fresh when you install the script. Your old Matomo data stays accessible on your existing installation.
No tag manager. Matomo has a built-in tag manager. Clickport uses a single script tag with optional configuration attributes and a JavaScript API for custom events.
What Clickport does differently:
- Engagement scores (0-100) for every page and traffic source, combining scroll depth and time on page. Not just "engaged or not."
- Copy detection that captures when visitors select and copy text from your pages.
- Weekday-aware comparisons that compare Monday to previous Mondays instead of to Sunday.
- Redesigned bounce rate requiring all four criteria (single page, no clicks, <25% scroll, <15 seconds) instead of a single arbitrary threshold.
- Session drill-down showing every visitor's complete journey on one screen.
- Real-time data with 30-second refresh. No archiving delay.
- ~2 KB tracker versus Matomo's ~22.8 KB.
- No cookies, no consent banner by default. No 12-step configuration.
When Matomo is the right choice
I've spent most of this article explaining why I built something different. But Matomo isn't the wrong choice for everyone.
Choose Matomo if your organization requires that analytics data physically stays on infrastructure you control. If you're a government agency, a hospital, a university with strict data governance, or a company in a regulated industry with a compliance team that mandates self-hosting, Matomo occupies a position no cloud-hosted tool (including Clickport) can fill.
Choose Matomo if you actively use heatmaps, session recordings, A/B testing, and funnel analysis, and you want all of these in a single open-source platform with one login. No lightweight analytics tool matches this breadth.
Choose Matomo if you have a DevOps team that already manages PHP, MySQL, and cron jobs. The operational burden is real, but for teams with existing infrastructure expertise, it's manageable.
Choose Matomo if you operate primarily in France and the CNIL's specific naming of Matomo matters for your compliance documentation. No other analytics tool has this.
Choose Clickport if you want analytics that work out of the box. No server to provision. No database to tune. No cron job to monitor. No privacy configuration to get right. No premium plugins to purchase. One script tag, real-time data, and a single dashboard that answers your questions in seconds instead of minutes.
Start a free 30-day trial and see the difference for yourself.

Comments
Loading comments...
Leave a comment