If you are leaving Google Analytics, whether for the consent position, the sampling, the 14-month retention ceiling or simple data ownership, the two questions that matter are: what happens to years of traffic history, and how does measurement continue without a gap? This guide is for teams considering Matomo who want straight answers to both before committing.
The honest headline: Matomo maintains a Google Analytics Importer that brings your GA4 report history across, and when you take Matomo as a managed service from Node, running the import and the tracking swap is part of the service, not a paid extra. But there is a fundamental honesty point that every glossy migration pitch skips, and we will start with it.
Imported history and new data are different animals
Matomo's importer connects to Google's reporting API and imports your historical data. What Google's API exposes, and therefore what any tool can import, is aggregated report data: visits, pageviews, acquisition channels, conversions, by day. It is not the raw, visitor-level event stream, because Google does not make that available this way.
The consequence, documented plainly in Matomo's own limitations FAQ, is that imported history behaves like a set of finished reports, not like data Matomo collected itself. On imported periods: the visitor log, segmentation, custom reports and the ecommerce log do not work; unique visitor counts are unavailable for week and month periods (they cannot be recomputed from daily aggregates); funnels are not imported; and GA4 goals arrive without their full configuration. Some GA dimensions have no Matomo equivalent and come across as custom dimensions or not at all.
What imported history is good for is what most teams actually need it for: continuity. Year-on-year traffic trends, acquisition history, content performance over time, all queryable in the same Matomo interface as your new data. Everything Matomo is genuinely better at (unsampled reporting, visitor-level detail, full segmentation, your own retention policy) applies to the data it collects itself from the day the tag goes live. That is the deal, stated up front.
What moves, what needs care, what does not carry over
Moves cleanly. Historical GA4 report data: traffic, sources, pages, and conversion history, imported day by day into your Matomo instance. The importer supports both one-off historic imports up to a cutover date and an ongoing mode that keeps pulling from GA4 while you run both in parallel (Matomo's switching workflows FAQ).
Needs care. The import must land in a fresh Matomo site: per Matomo's FAQ it cannot be imported into a site that already has tracked data, and cannot be merged later, so sequencing matters and we handle it. Import speed is capped by Google's API quotas, so long histories take days. And the tracking side is its own workstream: your gtag or Google Tag Manager setup swaps to the Matomo tag, and each gtag('event', ...) call or dataLayer event you rely on gets mapped to its Matomo equivalent (_paq.push(['trackEvent', ...])), either directly in code or through Matomo's built-in tag manager.
Does not carry over. Raw visitor-level history, as covered above. Audiences and Google Ads integrations, which are Google-ecosystem features rather than data. Goals, funnels and ecommerce configuration, which are re-created in Matomo rather than converted. And nothing about the import extends GA4's own retention: user-level data older than 14 months on the free tier (at the time of writing) is already gone before any tool runs.
How we run it
Scoping. We inventory your GA4 setup together: properties, key events and conversions, custom dimensions, audiences, and who actually consumes which report. This decides how much history to import and what the tag mapping needs to cover.
Credentials. The importer authenticates with Google OAuth against the Analytics APIs (setup documentation). We set this up with you against your Google account; you can revoke the access the day the migration ends.
Trial import. We deploy Matomo on UK infrastructure and import a limited date range first. This surfaces unsupported dimensions and quirks in your property, and gives a measured import rate so the full-import estimate is based on your data, not a brochure.
Full import, source untouched. The importer only reads from Google's API; your GA4 property keeps collecting throughout and nothing in your Google account is modified.
Tag rollout. We prepare the Matomo tag (via your existing GTM container or directly), map your events, and roll it out alongside GA4, not instead of it.
Parallel window and verification. Both systems run together, typically for two to four weeks, with the rolling import keeping Matomo's copy of the GA4 numbers current. We compare traffic between the two and document the offset and its causes: consent (a consent-exempt Matomo configuration sees visitors a consent-gated GA4 does not), bot filtering, and differing session definitions. The numbers will not match; the point of the window is to know your offset, so the day you switch, nobody mistakes a measurement change for a traffic change.
Switchover and decommission. When you confirm, the import stops, Matomo becomes the source of truth, and the GA4 tag is removed on your schedule, not ours. Your GA4 property is yours; we never delete anything on your side.
Doing it yourself
You do not need us for this. The importer is a free plugin for self-hosted Matomo, and Matomo's documentation is genuinely good: the main guide, the OAuth setup for larger properties, and the limitations FAQ that too few people read first. Budget for the Google Cloud OAuth client setup (including its unverified-app quirks), for the API quotas that pace the import, and for the event mapping, which is where the real hours go. If you run the import yourself, read the limitations FAQ before you start, not after.
Preparation checklist
- Inventory your events and conversions. List every key event and conversion in GA4 and mark which ones anyone acted on in the last quarter. Map only those.
- Inventory your audiences. Anything feeding Google Ads stays a Google-side concern; know what you are keeping GA4 or Ads tooling for, if anything.
- Decide your retention needs. Matomo lets you keep raw data as long as you choose; decide what that policy should be so it is configured from day one.
- Map report consumers. Who looks at which report, and does anything downstream (dashboards, BigQuery exports, agency reporting) read from GA4? Each consumer needs a Matomo equivalent or a conscious retirement.
- Check your consent position. If part of the point is running consent-exempt analytics, the Matomo configuration (first-party, cookieless, aggregate) should be decided before the tag rolls out, not retrofitted.
Timelines, honestly
The import runs at whatever pace Google's API quotas allow. Matomo's documentation says a full import "takes several days to complete" for substantial properties, and our trial-import step exists precisely so the estimate for your property is measured rather than guessed. Small sites finish in hours. Add the parallel comparison window, which we suggest holding for two to four weeks because it is cheap insurance, and a realistic end-to-end migration is a few days of elapsed import time inside roughly a month of calendar time, during which measurement never stops on either side.
What you end up with
From switchover day, your analytics is collected first-party into a database inside your own isolated tenant, on hardware we own in a UK datacentre, under a UK GDPR Article 28 data processing agreement, with no sampling, retention on your terms, and your GA4 history sitting alongside for continuity. The ongoing service is the same flat fee that covered the migration: hosting, upgrades, backups, monitoring and performance tuning as traffic grows, plus Keycloak single sign-on so your team signs in with your organisation's identity. For the full product comparison, including consent under the 2026 PECR changes and when GA4 is still the right answer, see Matomo vs Google Analytics; for what the service includes, see Hosting for Matomo; for current figures, the pricing page.
Frequently asked questions
Will Matomo's numbers match Google Analytics?
No, and any migration partner who promises they will is misleading you. The two products define sessions differently, filter bots differently, and sit behind different consent rates: a consent-exempt Matomo configuration typically sees visitors that a consent-gated GA4 never records. GA4's explorations also sample large queries, while Matomo reports on the full dataset. Expect a consistent offset rather than agreement, which is why we run both in parallel and document the difference before you switch off GA4.
Do we lose our Google Analytics history?
No, but be clear about what history means. The importer brings your GA4 report data (aggregated metrics by day) into Matomo, so trends, traffic and acquisition history survive. It does not bring raw visitor-level data, because Google's API does not expose it, so Matomo features that need raw data (the visitor log, segmentation, custom reports) work only on newly collected traffic, not on imported history.
Can we run Matomo and GA4 in parallel?
Yes, and we recommend it. Matomo's importer has an ongoing mode that keeps pulling each day's GA4 data while both tags run, so you can compare the two systems over a few weeks with no gap in either. When you are satisfied, we stop the rolling import, the Matomo tag becomes the source of truth, and you retire the GA4 tag when you are ready.
What does the migration cost?
Nothing on top of the flat tier. Migration is part of the managed service: you pay the flat monthly fee for the Matomo deployment (from £22 a month at the time of writing) and we run the import, the tag swap and the verification window within it. Current figures are on our pricing page.
How long does the import take?
It depends on how much history you import and on Google's API quotas, which cap how much the importer can pull per day. Matomo's own documentation says a full import takes several days for substantial properties; small sites finish much faster. The import runs unattended in the background, and because GA4 keeps collecting throughout, the elapsed time costs you nothing.
Do our goals and conversions carry over?
They need re-creating. The importer brings historical conversion data across, but Matomo's documentation notes GA4 goals are imported without their full configuration, and imported history cannot back-fill everything. We set up your goals, funnels and ecommerce tracking in Matomo as part of the deployment, mapped from an inventory of your GA4 key events that we build with you during scoping.
Why should we import sooner rather than later?
Because GA4's free tier retains user-level and event-level data for at most 14 months at the time of writing. Aggregate report data reaches further back, but detail beyond that window is already gone and more expires every month. The sooner the import runs, the more of your history survives the move.