Guide
Not a switch you flip. A parallel run, a set of numbers that will not match and should not worry you, and an install that takes about the same five minutes it takes anywhere else.
Install Metricward next to GA4 rather than instead of it. Nothing about GA4 needs to change: same snippet, same property, same reports. Metricward's free plan is 10,000 events a month, one project, three months of history, no card and no expiry, which is enough to run this comparison without spending anything.
Give it a full month before drawing any conclusion. A week catches nothing about weekday-versus-weekend traffic or a campaign that only runs on Fridays, and switching off GA4 on day three because the totals disagree is how a migration gets reversed in a panic.
None of this means one tool is broken. Two measurement systems built on different rules produce different numbers from the same real traffic.
Sessions are counted on different rules.
GA4's session timeout is configurable and does not reset at midnight the way the old Universal Analytics did. Metricward ends a session after 30 minutes of inactivity or when a new campaign arrives, whichever comes first, because crediting a second campaign’s conversion to the first campaign’s session is a worse error than counting one extra session. Expect your session count to move, in either direction.
Nothing in Metricward is sampled.
GA4 applies sampling on large or complex queries, particularly in Explorations. Metricward runs the exact query against every matching row every time, and if a query is ever slow enough to need sampling, the UI says so and offers the exact, slower run instead of doing it silently.
Bot filtering catches different things.
GA4's bot filtering is a fixed list plus undocumented heuristics; you cannot see what it caught. Metricward scores and labels every hit, keeps the bot traffic visible rather than deleting it, excludes it from reports, and never bills for it. Two different filters will disagree on some fraction of the same raw traffic.
A consent banner makes GA4 undercount, and Metricward mostly does not.
A consent-gated GA4 property only counts visitors who accepted, and European acceptance rates commonly leave 40 to 70 percent of real traffic uncounted. Metricward's default cookieless mode has nothing to consent to, so more of your real traffic gets counted. The gap you see between the two tools is not new visitors arriving, it is visitors GA4 was never counting in the first place.
The words differ more than the ideas do, with a few honest exceptions below the table.
| In GA4 | What it means there | In Metricward |
|---|---|---|
| Events | Automatically-collected plus custom events, sent through gtag() | Events, defined in a tracking plan you control, sent with mw.track(name, properties) |
| Conversions | Any event you flag as a conversion in the GA4 UI | Goals, event-based or pageview-based, each with its own conversion rate |
| Audiences | Saved user groups, mainly built for remarketing | Segments, built on visitor, session, event or user properties, reusable in every report and in the API |
| Explorations | A free-form canvas you assemble yourself | Purpose-built report types instead of a blank canvas: funnels, retention cohorts and segment breakdowns |
| DebugView | A live inspector for testing your own implementation | The live event debugger, showing every event as it arrives with consent state and validation result |
| Data streams inside a property | One stream per site or app | One project per site or app |
BigQuery export and cross-device stitching through signed-in Google accounts are the two places the mapping breaks down rather than translates. Metricward exports CSV from every report and from the raw events behind it, on every plan, but warehouse export proper is on the roadmap and not shipped. Cross-device identity is not attempted at all: Metricward stitches only through an authenticated user_id you send yourself, never through a probabilistic device graph.
Historical data does not migrate. There is no GA4 import tool, and there will not be one that quietly works: even if you exported your GA4 history by hand, splicing it onto Metricward data would join two datasets built on different session, bot-filtering and consent rules into one chart that reads as continuous and is not. The honest version of this migration draws a line on the date you installed the snippet and treats everything before it as a GA4 question, answered in GA4, for as long as you keep it around to answer it.
That is a real cost of moving, not a footnote, and it is worth saying plainly rather than discovering it after the fact.
Nothing to change, remove or pause. The comparison only means something if GA4 keeps running on its own terms while Metricward starts on its.
One script tag, next to the GA4 tag rather than replacing it.
<script defer src="https://metricward.eu/mw.js"
data-project="prj_yours"></script>A GA4 conversion is just an event you flagged. In Metricward, define the same event and turn it into a goal, event-based or pageview-based, with its own conversion rate.
mw.track("checkout_started", { plan: "pro", seats: 12 });Open the debugger and watch your own test visit arrive: the visitor hash, the session, the consent state, and the resolved country and device, in real time. If nothing shows up within 90 seconds the screen walks through the likely cause rather than leaving you guessing.
When you are ready, keep GA4 around read-only for historical questions, or turn it off. Metricward does not depend on it either way, and nothing you built during the parallel run needs to change when you do.
Want the number-by-number comparison first? Read the full comparison, or see why GA4’s own numbers tend to sit low.
Start the free plan