Migrating from Matomo: Retiring the Server Without Losing Data
How to move from self-hosted Matomo to managed cookieless analytics: archiving history, mapping goals, and decommissioning safely.
A Matomo migration is really two projects wearing one name: switching analytics tools (easy) and decommissioning a production PHP/MySQL service (the part that deserves a checklist). Done in the right order, you keep every byte of history, lose zero data continuity, and delete a server you will not miss. Done in the wrong order, you discover in November that the archive cron died in July.
Phase 1: freeze and archive the history
- Run a final full archive. Trigger Matomo's archiving job one last time so all reports are materialized, then export the reports you will reference: monthly visits/sources/pages as CSV via the UI or the Reporting API.
- Dump the database. A mysqldump of the Matomo schema is your raw insurance policy. You own this data outright — one of self-hosting's genuine virtues — so keep the dump in cold storage.
- Decide the retention story. Most teams keep the read-only instance running for 60–90 days during transition, then retire it and rely on the CSVs + dump.
Phase 2: the new tracker (one afternoon)
Install the Clycyo tag alongside matomo.js — both cookieless setups coexist fine. Then map the concepts:
- Matomo Goals → track() events at the same trigger points.
- Matomo custom dimensions → event/identify properties.
- Site Search reports → a search event with the query as a property.
- Ecommerce tracking → funnel events plus a server-side revenue webhook — which also upgrades you from session-scoped to first-touch attribution.
Note the deliberate non-mapping: Matomo's heatmaps/session-recording plugins have no direct equivalent. Clycyo captures clicks and errors on the visitor record instead — the privacy-first version of the same insight.
Phase 3: parallel run, then decommission
Two weeks of both tools running answers the trust question with data. Expect close agreement on trends; small absolute differences come from bot filtering and counting details. Then the satisfying part, in order: remove matomo.js from templates → confirm zero traffic in Matomo's live view → snapshot the VM → power it down (keep the snapshot 90 days) → delete.
What changes operationally
- No more PHP/MySQL updates, archive crons, or security patching — the quiet tax ends.
- The tracker drops from tens of KB to 1.1 KB, with a measurable Core Web Vitals benefit.
- One honest trade: Clycyo is managed-cloud only. If your compliance regime mandates on-premise analytics, this migration is not for you — the full reasoning is in our Matomo alternative deep-dive.
Budget half a day of real work spread over three weeks, most of it waiting on parallel data. The free tier covers the entire evaluation.