Skip to content
SealMetrics
Comparisons

The best web analytics tool: the 12 requirements that actually decide it

12 min readBy Rafa Jiménez

Key takeaways

  • Analytics buying decisions fail on the criteria, not the vendor. “Has dashboards” is not a requirement; “real time” is not one until you define the latency and the scope.
  • Requirement 2 — 100% of the data — is not one of twelve. Fail it and the other eleven are decoration.
  • Most platforms fail on an analyst’s third question, never the first. The causes are always pre-aggregation, cardinality limits and sampling.
  • An MCP server is now a hard requirement, not a nice-to-have. A chat widget inside the vendor’s dashboard is a different thing entirely.
  • Each requirement below carries a test you can run during the demo — not a claim you have to take on trust.

Most analytics buying decisions are made on a feature grid nobody verifies. Someone builds a spreadsheet, twelve vendors get a green tick next to “real-time dashboards”, and eighteen months later the team is still exporting to a spreadsheet because the platform can’t answer the third question in a row.

The problem is not that buyers pick the wrong vendor. It is that the criteria are wrong. “Has dashboards” is not a requirement. “Real time” is not a requirement until you define the latency and the scope. “GDPR-compliant” is not a requirement until you name the legal basis.

So this is not a vendor list. It is the specification a platform has to meet before it deserves to be called the best web analytics tool for a company that spends real money on acquisition. Twelve requirements, each with the failure it prevents and a test you can run in a demo.

01An ultralightweight pixel

The failure it prevents

Every kilobyte of measurement code is a tax on the sessions you most want to measure. A 171 KB tag on a 3G connection in a regional market doesn’t arrive late — it often doesn’t arrive at all, because the visitor has already bounced. You lose the slowest, most mobile, most marginal traffic first, which is exactly the traffic where your conversion rate is most fragile. And the data loss is invisible: the sessions that never fired don’t appear in the report telling you sessions are down.

Then there is the second cost. Measurement code that competes with your own JavaScript for the main thread degrades LCP and INP, and Core Web Vitals is not a vanity metric on an eCommerce site — it moves rankings and it moves conversion rate. You are paying for measurement twice: once in lost data, once in lost revenue.

171 KBGA4 gtag.js on the wire, gzipped
512 KBJavaScript GA4 parses on the device
< 5 KBThe bar, gzipped on the wire
< 10 KBThe bar, parsed on the device
The requirement

Under 5 KB gzipped on the wire, under 10 KB of JavaScript parsed on the device, asynchronous, non-blocking, no dependency on a tag manager to function. Adobe’s Launch plus AppMeasurement lands in the same range as GA4. We measured every major analytics script to check. A platform that needs 100× more code than the alternative is making a design choice, not meeting a technical necessity.

The test

Open the vendor’s own site, open the network tab, filter by their pixel domain, and read the transferred size yourself. Then run a Lighthouse pass on a demo page with and without the tag, throttled to Slow 3G. If the vendor can’t tell you the gzipped weight of their own script from memory, they have never optimised it.

02100% of the data

The failure it prevents

This is the requirement that invalidates every other one. A platform that gives you forty percent of reality with perfect dashboards is worse than a spreadsheet with all of it, because it gives you the confidence to act on a sample that isn’t random.

Three separate leaks compound. Consent: in European markets, rejection rates of up to 60% are normal once a compliant banner is in place, and rejected visitors are not measured at all by consent-dependent tools. Ad blockers and browser tracking protection: roughly 25% of technical audiences, higher in some verticals. Tag failure: around 5% on mobile, and it grows on slow networks. Multiply the survivors and you are reporting on a fraction — while your CFO reads it as the whole. It is the arithmetic behind GA4 showing 13% of EU traffic.

60%Reject consent in EU markets, once the banner is compliant
25%Blocked by ad blockers and browser tracking protection
5%Tag failures on mobile — more on slow networks
~40%What actually reaches the report your CFO reads as the whole

The distortion is not evenly spread, which is what makes it dangerous. Privacy-aware audiences skew towards specific channels and specific devices. Organic search is systematically underreported. Paid is systematically flattered, because paid landings carry the parameters that survive. Every budget reallocation made on that data moves money in the direction of the measurement bias.

The requirement

The platform must observe 100% of page loads without depending on the visitor accepting anything, and without being classified as a tracker by blocklists. That is only achievable if it stores no personal data — because if it did, consent would be legally required and you would be back at 40%. Completeness and privacy are the same requirement stated twice, not a trade-off, which is the whole argument for cookieless analytics.

The test

Run the candidate in parallel with your current setup for 30 days and compare both against the one system that has no measurement gap: your CRM or order database. Count the orders. The gap between platform and CRM is the only completeness metric that matters, and it should close to within 15–20%, not 50%. The data loss calculator gives you the expected size of that gap before you start.

03Real time in every dashboard, not in one report

The failure it prevents

Almost every platform ships something called “Realtime”. Almost none of them means what you need. What you usually get is a stripped-down live view — active users, top pages, maybe a country map — while every report you would actually use to make a decision runs on data that is 4 to 24 hours old.

That distinction costs money on exactly the days it matters most. A broken checkout on Black Friday, a tracking parameter dropped in a campaign migration, a landing page 404ing after a deploy: the window to fix each of these is measured in hours, and a platform that shows you the damage tomorrow morning has converted an incident into a loss.

The requirement

Sub-minute ingestion latency, and — the part that gets skipped — the same freshness across the full report set. Every dimension, every filter, every funnel, every segment queryable on today’s data, at peak load, not just the three metrics on the live tile. Real time that degrades under traffic is not real time; it is real time until you need it.

The test

During the demo, ask them to open a segmented funnel filtered on a custom property, for today, and refresh it while you fire a conversion on the demo site. Then ask what happened to that same query on their largest customer’s Black Friday. The second question is the one that separates architectures.

One honest caveat on vendor language: real-time dashboards are a capability claim, and a contractual SLA is a different object. Ask both questions separately, and be suspicious of any vendor who answers the SLA question with a product screenshot.

04It answers any question an analyst can ask

The failure it prevents

This is where most platforms quietly fail, and they fail on the third question, never the first.

First question: how did revenue do last week? Every tool answers. Second question: split it by channel. Most tools answer. Third question: within paid social, for mobile users, on the product pages of one specific category, comparing the visitors who saw the size guide against those who didn’t. And now you are exporting to a spreadsheet — which means your analytics platform is a reporting layer with an export button, and the actual analysis happens somewhere it can’t be governed, shared or reproduced.

The technical causes are always the same: pre-aggregated data models that only support the combinations someone anticipated, cardinality limits that bucket your long tail into “(other)”, sampling above a row threshold, and a fixed schema that can’t carry your business’s own dimensions.

The requirement

Arbitrary dimension × metric combinations with no pre-aggregation ceiling. No cardinality collapse into “(other)”. No sampling, ever — approximation is acceptable in a research tool and unacceptable in a system that signs off on budget. Custom properties as first-class dimensions, not tacked-on labels. Funnels definable after the fact, over historical data, without having been declared in advance. And access to full-resolution rows, so an analyst who needs to leave the UI can, without leaving the platform.

The test

Bring your own hardest question to the demo — the one you currently answer with a spreadsheet — and ask them to build it live. Not “can it do this”, but “do it now, in front of me”. Then ask what happens when a dimension has 50,000 distinct values.

05A pixel flexible enough to instrument anything

The failure it prevents

Standard eCommerce events cover the part of your business that looks like every other business. The measurement that actually differentiates you is always custom: the configurator step, the availability check, the finance calculator, the B2B quote request, the phone call that closes offline three days later. If the platform can only measure what it anticipated, your instrumentation ceiling is set by the vendor’s product roadmap.

The requirement

Arbitrary custom events with arbitrary properties. Micro-conversions as a native concept, not a hack on top of pageviews. Values in currency attached to any event. Client-side and server-side ingestion through a documented HTTP endpoint, so the events that happen off the browser — a webhook, a CRM status change, a call-tracking result — land in the same dataset as the pageviews. Native handling of single-page applications and virtual pageviews. Multi-domain and subdomain measurement without breaking attribution. And rules for classifying traffic into your channels that you can edit yourself, because every business’s definition of “affiliate” or “partner” differs and a fixed channel grouping guarantees you will disagree with your own reports.

The test

Ask them to instrument one event that is specific to your business during the demo, and time it. Under ten minutes, using documentation, is the bar.

06A genuinely robust API

The failure it prevents

An analytics platform whose data can only be read through its own UI is a silo, and silos always end the same way: someone rebuilds the important numbers by hand in a slide, they diverge from the source, and the QBR becomes an argument about whose figure is right.

The requirement

Every report available in the UI must be reachable via API — no privileged screens. Documented authentication with scoped, revocable keys. Published rate limits, so you can engineer against them instead of discovering them in production. Pagination that works on real volumes. Endpoints that return full-resolution rows, not just aggregates. Webhooks for event-driven operations, so a conversion anomaly can trigger something rather than waiting to be noticed. And native export into a warehouse — BigQuery, Snowflake or equivalent — without you writing and maintaining an ETL job.

One non-negotiable: the API and the UI must return the same numbers. It sounds obvious. Test it anyway, because pre-aggregation differences between the reporting layer and the export layer are a common and extremely expensive surprise.

The test

Ask for the API docs before the demo, not after. Public, versioned documentation you can read without a sales call is itself the signal — a vendor whose API docs are gated has an API that is not ready to be read.

07MCP: the platform has to be readable by agents

The failure it prevents

The way analytical work gets done changed in the last two years, and most platforms have not noticed. Analysts and marketers now work with AI assistants in the loop. If your platform can’t be queried by one, every question becomes a manual round trip: open the UI, build the report, export the CSV, paste it into a chat, ask, get an answer about a stale snapshot with no ability to drill down. That workflow is not just slow. It is unauditable — the model answers on whatever fragment was pasted, and nobody can reproduce it.

The requirement

A Model Context Protocol server, hosted by the vendor, that exposes the platform’s data as tools an agent can call directly. This is a specific thing, and it is worth being precise, because “AI-ready” is currently the most abused phrase in analytics marketing. An MCP server means: your assistant — Claude, ChatGPT, Cursor, an internal copilot — connects once and can then pull channels, campaigns, funnels, conversions and custom properties itself, live, and follow up without a human re-exporting anything. That is the difference between an assistant and genuine self-service analytics.

What MCP is

A server you connect your own assistant to, once. It then queries channels, campaigns, funnels and conversions itself, live, and follows up without anyone re-exporting a thing.

What MCP is not

A chat widget inside the vendor’s dashboard. That is a feature of their product. MCP is access to your data from wherever you already work.

Requirements within the requirement: read-only scopes by default, per-site key granularity, revocable tokens, and an audit trail of what was queried. An MCP server without scoped credentials is a data exfiltration route with good marketing.

The test

Ask for the MCP endpoint URL and connect it to your own assistant during the trial. It takes two minutes if it exists.

08AI that is auditable, and that doesn’t export your data

The failure it prevents

Two failures, opposite in kind. The first is the black box: a platform tells you a channel is underperforming, can’t show you the query behind it, and you are asked to move budget on the word of a model. The second is the privacy leak: to give you that insight, your commercial data was sent to a third-party API in another jurisdiction, which is a transfer you may not have disclosed in your record of processing.

The requirement

AI that does the work analysts don’t have time for — anomaly detection across every dimension continuously, forecasting, surfacing the segments that moved — and that always shows the underlying query, so any claim can be verified in the UI by a human. Plus a deployment choice: either bring your own key, so inference runs against a provider you already have a DPA with, or a vendor-hosted model within your own jurisdiction. For an EU company, “EU-hosted inference” means the model runs in the EU, and it is a separate question from where your analytics data is stored. Ask both.

The test

Ask where inference physically runs, whether your data can be used to train the model, and to click through from any AI-generated insight to the report that produced it. If that click doesn’t exist, the insight isn’t evidence.

09An attribution model it is honest about

The failure it prevents

Attribution is where analytics vendors are least honest, and buyers rarely push. Platforms that model, estimate or fill gaps in conversion data produce numbers that look complete and are partly synthetic. When those numbers disagree with your CRM — and they will — you cannot tell which part was observed and which part was inferred, so you cannot debug the discrepancy at all.

The requirement

The attribution model must be stated plainly, applied consistently, and documented. If it is last-click, it should say last-click. If conversions are modelled, the platform must label which ones and disclose the method. What no platform should do is quietly blend observed and estimated data in the same figure.

A stated, simple, complete model beats a sophisticated model applied to partial data — every time. Last-click over 100% of conversions is a defensible instrument. A multi-touch model over the 40% of sessions that accepted cookies is a story about a sample, wearing the clothes of a measurement.

The test

Ask: “which numbers in this dashboard are observed and which are modelled?” A vendor who can’t answer immediately, or who describes it as proprietary, is telling you the answer is uncomfortable.

10Bot and invalid traffic filtering you can see

The failure it prevents

Bot traffic has grown sharply with AI crawlers, and it does not distribute evenly — it concentrates on specific pages and specific sources, which means it doesn’t inflate your totals harmlessly, it corrupts particular rows. Uncounted, it inflates a channel’s sessions, deflates its conversion rate, and you optimise against noise.

The requirement

Automatic exclusion from reported metrics, and — this is the part usually missing — visibility into what was excluded and why. Filtering you can’t inspect is indistinguishable from filtering that isn’t happening.

The test

Ask to see the bot traffic report. Not the setting. The report.

11Compliance by architecture, not by configuration

The failure it prevents

The compliance risk in analytics is rarely a fine. It is the six-week delay while legal reviews a transfer impact assessment, the consent banner that costs you 60% of your data to satisfy a requirement the architecture created, and the migration you have to run again in two years when the legal ground moves.

The requirement

No personal data collected, no cookies, no device fingerprinting, no client-side storage. This is not a stricter version of compliance — it is a different mechanism. A platform that processes no personal data is largely outside the material scope of the rules, rather than compliant within them, and that difference is what removes the consent banner and with it the 60% loss.

Then the operational layer: data hosted in your jurisdiction with the specific location named, a DPA included in the standard contract rather than negotiated, no transfers requiring supplementary measures, and documentation your DPO can read without a call.

Be equally sceptical in the other direction: check certification claims. ISO 27001 and SOC 2 are audited states with certificates and dates. “Aligned with” is not certified. Ask for the certificate.

The test

Send the vendor’s documentation to your DPO before the technical evaluation. If it can’t survive that review, the feature comparison is academic.

12Your data stays yours, and the price is predictable

The failure it prevents

Two slow failures. Lock-in: you discover at renewal that your three years of history cannot leave the platform in usable form, and the negotiation is over before it starts. And billing surprise: consumption pricing on events means your best month generates your worst invoice, and teams respond rationally by instrumenting less — which quietly caps the value of the whole system.

The requirement

Full historical export in an open format, on demand, without a support ticket. Stated retention, with a stated policy on what happens at contract end. Pricing tied to a metric you control and can forecast. And a setup cost measured in minutes, because a platform that requires a six-week implementation has already made switching away from it expensive — which is a business model, not an architecture.

The test

Ask what happens to your data 30 days after you cancel. The speed and specificity of that answer tells you how the vendor thinks about ownership.

Score each requirement 0, 1 or 2 — 24 available

What the total actually tells you

20–24Genuinely enterprise-gradeRare. Check the two lowest scores before you sign anyway.
14–19Workable, with known gapsWrite the gaps into the decision so nobody is surprised in month four.
Below 14A reporting layer, not a platformFine for a €50K/year business. Not for one spending €50K a month on acquisition.

Two things worth saying plainly. Requirement 2 is not one of twelve — fail it and the rest are decoration: perfect real-time dashboards over 40% of reality are a faster route to a wrong decision. Score it first, and if a platform fails it, stop.

And the price question is the wrong way round. The comparison is not €30K a year against €0 for GA4. It is €30K a year against the cost of one wrong budget reallocation made on incomplete data — which for a company spending €200K a month on acquisition is a rounding error against a single quarter of misdirected spend. The tool is not the expense. The decisions are.

How SealMetrics scores against this list

Disclosure

We build one of these platforms, so the checklist above is opinionated. It encodes an architectural thesis — that complete observed data beats modelled data, and that privacy and completeness are the same requirement — which SealMetrics happens to share. A buyer whose priority is user-level product analytics, session replay or multi-touch modelling should reweight it, and we would score worse. Here is the scorecard anyway, with the point we lose.

RequirementThe barSealMetricsScore
01Ultralightweight pixelUnder 5 KB gzipped on the wire, under 10 KB parsed, async, no tag manager dependency1.1 KB on the wire · 2.0 KB parsed. ~155× lighter than gtag.js2
02100% of the dataEvery page load observed, consent-independent, not blocklisted, no samplingCookieless by architecture. Customers go from ~40% to ~100% observed, closing to within 15–20% of CRM orders2
03Real time in every dashboardSub-minute ingest, same freshness across the full report set, holds at peakReal time across all dashboards and funnels. Contractual commitment stated separately: data complete before 6 AM2
04Answers any analyst questionArbitrary dimension × metric, no cardinality collapse, no sampling, retroactive funnels, raw rowsCustom properties as native dimensions, segments, retroactive funnels, raw-row endpoints. No sampling2
05Flexible pixelArbitrary events and properties, currency values, server-side ingest, SPA, multi-domain, editable channel rulesCustom events and properties, micro-conversions as a native concept, HTTP endpoint for server-side and offline ingest2
06Robust APIFull report coverage, scoped keys, raw rows, webhooks, native warehouse exportREST and streaming API, raw-row endpoints, webhooks with delivery logs, native BigQuery export with no ETL2
07MCPVendor-hosted MCP server, scoped read-only credentials, agent-callableHosted MCP server. Claude, ChatGPT or an internal copilot connects once and queries the data directly2
08Auditable, private AIAnomaly detection and forecasting, always traceable to the query, BYOK or in-jurisdiction inferenceLENS AI on all plans via your own key, or Private AI — an open model hosted in Paris, no key needed2
09Honest attributionModel stated plainly, applied consistently, observed and modelled never blendedLast-click at channel level over 100% of conversions. No modelled conversions. No multi-touch, permanently2
10Visible bot filteringExcluded from metrics and inspectableBot traffic and suspicious-session reporting — the exclusions are visible, not just a setting2
11Compliance by architectureNo personal data, named EU location, DPA included, certifications verifiableNo personal data, EU-hosted in Dublin, DPA in the standard contract. Not ISO 27001 or SOC 2 certified1
12Ownership and predictable priceOpen-format export on demand, stated retention, forecastable pricing, minutes to set upFull export via API and BigQuery, plan-based pricing rather than per-event billing, setup in minutes2
Total23 / 24
Where the point is lost

Requirement 11 — SealMetrics is not ISO 27001 or SOC 2 certified. Everything else in that row is met: no personal data, EU-hosted in Dublin, DPA in the standard contract, no supplementary transfer measures. But a certificate is an audited state with a date on it, and we don’t have one. For procurement processes that gate on it, that is a hard stop, and it should be said before the demo rather than discovered in the security questionnaire.

What it deliberately does not do

It measures events in aggregate — counts at channel, campaign, landing page, device and country level, without linking them to an individual. That is the mechanism that makes requirement 2 possible, and it is also a real limitation: no user-level analysis, no path reconstruction, no cohort or retention analysis by user, no session replay, no heatmaps, and no multi-touch attribution — last click only, permanently.

  • No user-level analysis
  • No cohorts or retention
  • No session replay
  • No heatmaps
  • No multi-touch

If those are core to your use case, the honest answer is that you need a product analytics platform alongside, not instead. How the measurement actually works sets out the boundary in detail.

Frequently asked questions

What is the most important requirement in a web analytics tool?

Data completeness. A platform that observes 100% of page loads without depending on consent is the prerequisite for every other requirement: perfect real-time dashboards over 40% of reality are a faster route to a wrong decision, not a better one. Score completeness first, and if a platform fails it, stop evaluating.

How light should an analytics pixel be?

Under 5 KB gzipped on the wire and under 10 KB of JavaScript parsed on the device. For reference, GA4's gtag.js is roughly 171 KB on the wire and around 512 KB parsed. Heavy tags fail first on 3G and mobile, so you lose exactly the traffic whose conversion rate is most fragile — and the sessions that never fired don't appear in the report telling you sessions are down.

What does real time actually mean in web analytics?

Sub-minute ingestion latency, and the same freshness across the full report set — every dimension, filter, funnel and segment queryable on today's data, at peak load. Most platforms ship a stripped-down live view of active users and top pages while every report you would use to make a decision runs on data 4 to 24 hours old.

Why does an analytics platform need an MCP server?

Because analysts now work with AI assistants in the loop. Without a Model Context Protocol server, every question becomes a manual round trip: build the report, export the CSV, paste it into a chat, get an answer about a stale snapshot with no ability to drill down. An MCP server lets your assistant query channels, campaigns, funnels and conversions itself, live. A chat widget inside the vendor's own dashboard is not the same thing.

Is last-click attribution worse than multi-touch?

Not when the alternative is a sophisticated model applied to partial data. Last-click over 100% of conversions is a defensible instrument. A multi-touch model over the 40% of sessions that accepted cookies is a story about a sample wearing the clothes of a measurement. What matters is that the platform states its model and never blends observed and modelled figures in the same number.

Related reading